From b37ef8385e289449921862a2eb5329efe7881e4d Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Thu, 16 Mar 2023 00:21:53 +0800 Subject: [PATCH 001/131] lib: distinguish webidl interfaces with the extended property "Exposed" PR-URL: https://github.com/nodejs/node/pull/46809 Refs: https://github.com/nodejs/node/issues/42528 Reviewed-By: Matteo Collina Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Joyee Cheung --- .../{browser.js => web/exposed-wildcard.js} | 56 +++----------- .../bootstrap/web/exposed-window-or-worker.js | 47 ++++++++++++ lib/internal/process/pre_execution.js | 4 +- lib/internal/url.js | 75 +++++++++++-------- lib/internal/util.js | 23 ++++++ src/node_realm.cc | 7 +- 6 files changed, 131 insertions(+), 81 deletions(-) rename lib/internal/bootstrap/{browser.js => web/exposed-wildcard.js} (64%) create mode 100644 lib/internal/bootstrap/web/exposed-window-or-worker.js diff --git a/lib/internal/bootstrap/browser.js b/lib/internal/bootstrap/web/exposed-wildcard.js similarity index 64% rename from lib/internal/bootstrap/browser.js rename to lib/internal/bootstrap/web/exposed-wildcard.js index 503b0208ca83d5..7d9b75caab667f 100644 --- a/lib/internal/bootstrap/browser.js +++ b/lib/internal/bootstrap/web/exposed-wildcard.js @@ -1,17 +1,21 @@ 'use strict'; +/** + * This file exposes web interfaces that is defined with the WebIDL + * [Exposed=*] extended attribute. + * See more details at https://webidl.spec.whatwg.org/#Exposed. + */ + const { - ObjectDefineProperty, globalThis, } = primordials; const { - defineOperation, exposeInterface, lazyDOMExceptionClass, - defineLazyProperties, - defineReplaceableLazyAttribute, exposeLazyInterfaces, + exposeGetterAndSetter, + exposeNamespace, } = require('internal/util'); const config = internalBinding('config'); @@ -35,36 +39,17 @@ exposeGetterAndSetter(globalThis, exposeInterface(globalThis, 'DOMException', value); }); -// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope -const timers = require('timers'); -defineOperation(globalThis, 'clearInterval', timers.clearInterval); -defineOperation(globalThis, 'clearTimeout', timers.clearTimeout); -defineOperation(globalThis, 'setInterval', timers.setInterval); -defineOperation(globalThis, 'setTimeout', timers.setTimeout); - +// https://dom.spec.whatwg.org/#interface-abortcontroller // Lazy ones. -exposeLazyInterfaces(globalThis, 'internal/worker/io', ['BroadcastChannel']); exposeLazyInterfaces(globalThis, 'internal/abort_controller', [ 'AbortController', 'AbortSignal', ]); +// https://dom.spec.whatwg.org/#interface-eventtarget const { EventTarget, Event, } = require('internal/event_target'); exposeInterface(globalThis, 'Event', Event); exposeInterface(globalThis, 'EventTarget', EventTarget); -exposeLazyInterfaces(globalThis, 'internal/worker/io', [ - 'MessageChannel', 'MessagePort', 'MessageEvent', -]); -defineLazyProperties(globalThis, 'buffer', ['atob', 'btoa']); -// https://www.w3.org/TR/FileAPI/#dfn-Blob -exposeLazyInterfaces(globalThis, 'internal/blob', ['Blob']); -// https://www.w3.org/TR/hr-time-2/#the-performance-attribute -exposeLazyInterfaces(globalThis, 'perf_hooks', [ - 'Performance', 'PerformanceEntry', 'PerformanceMark', 'PerformanceMeasure', - 'PerformanceObserver', 'PerformanceObserverEntryList', 'PerformanceResourceTiming', -]); - -defineReplaceableLazyAttribute(globalThis, 'perf_hooks', ['performance']); // https://encoding.spec.whatwg.org/#textencoder // https://encoding.spec.whatwg.org/#textdecoder @@ -87,27 +72,6 @@ function createGlobalConsole() { return consoleFromNode; } -// https://heycam.github.io/webidl/#es-namespaces -function exposeNamespace(target, name, namespaceObject) { - ObjectDefineProperty(target, name, { - __proto__: null, - writable: true, - enumerable: false, - configurable: true, - value: namespaceObject, - }); -} - -function exposeGetterAndSetter(target, name, getter, setter = undefined) { - ObjectDefineProperty(target, name, { - __proto__: null, - enumerable: false, - configurable: true, - get: getter, - set: setter, - }); -} - // Web Streams API exposeLazyInterfaces( globalThis, diff --git a/lib/internal/bootstrap/web/exposed-window-or-worker.js b/lib/internal/bootstrap/web/exposed-window-or-worker.js new file mode 100644 index 00000000000000..ec4671dcd83474 --- /dev/null +++ b/lib/internal/bootstrap/web/exposed-window-or-worker.js @@ -0,0 +1,47 @@ +'use strict'; + +/** + * This file exposes web interfaces that is defined with the WebIDL + * Exposed=(Window,Worker) extended attribute or exposed in + * WindowOrWorkerGlobalScope mixin. + * See more details at https://webidl.spec.whatwg.org/#Exposed and + * https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope. + */ + +const { + globalThis, +} = primordials; + +const { + defineOperation, + defineLazyProperties, + defineReplaceableLazyAttribute, + exposeLazyInterfaces, +} = require('internal/util'); + +// https://html.spec.whatwg.org/multipage/webappapis.html#windoworworkerglobalscope +const timers = require('timers'); +defineOperation(globalThis, 'clearInterval', timers.clearInterval); +defineOperation(globalThis, 'clearTimeout', timers.clearTimeout); +defineOperation(globalThis, 'setInterval', timers.setInterval); +defineOperation(globalThis, 'setTimeout', timers.setTimeout); + +// https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts +exposeLazyInterfaces(globalThis, 'internal/worker/io', ['BroadcastChannel']); +exposeLazyInterfaces(globalThis, 'internal/worker/io', [ + 'MessageChannel', 'MessagePort', 'MessageEvent', +]); +defineLazyProperties(globalThis, 'buffer', ['atob', 'btoa']); +// https://www.w3.org/TR/FileAPI/#dfn-Blob +exposeLazyInterfaces(globalThis, 'internal/blob', ['Blob']); +// https://www.w3.org/TR/hr-time-2/#the-performance-attribute +exposeLazyInterfaces(globalThis, 'perf_hooks', [ + 'Performance', 'PerformanceEntry', 'PerformanceMark', 'PerformanceMeasure', + 'PerformanceObserver', 'PerformanceObserverEntryList', 'PerformanceResourceTiming', +]); + +defineReplaceableLazyAttribute(globalThis, 'perf_hooks', ['performance']); + +// https://w3c.github.io/FileAPI/#creating-revoking +const { installObjectURLMethods } = require('internal/url'); +installObjectURLMethods(); diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js index ebc699ef1de87a..3e599b39403e4a 100644 --- a/lib/internal/process/pre_execution.js +++ b/lib/internal/process/pre_execution.js @@ -262,7 +262,7 @@ function setupFetch() { }); } -// TODO(aduh95): move this to internal/bootstrap/browser when the CLI flag is +// TODO(aduh95): move this to internal/bootstrap/web/* when the CLI flag is // removed. function setupWebCrypto() { if (process.config.variables.node_no_browser_globals || @@ -310,7 +310,7 @@ function setupCodeCoverage() { } } -// TODO(daeyeon): move this to internal/bootstrap/browser when the CLI flag is +// TODO(daeyeon): move this to internal/bootstrap/web/* when the CLI flag is // removed. function setupCustomEvent() { if (process.config.variables.node_no_browser_globals || diff --git a/lib/internal/url.js b/lib/internal/url.js index 193965b76d346d..d57bbac97aa3ba 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -91,11 +91,6 @@ const { updateUrl, } = internalBinding('url'); -const { - storeDataObject, - revokeDataObject, -} = internalBinding('blob'); - const FORWARD_SLASH = /\//g; const context = Symbol('context'); @@ -760,8 +755,33 @@ class URL { throw new ERR_INVALID_THIS('URL'); return this[context].href; } +} + +ObjectDefineProperties(URL.prototype, { + [SymbolToStringTag]: { __proto__: null, configurable: true, value: 'URL' }, + toString: kEnumerableProperty, + href: kEnumerableProperty, + origin: kEnumerableProperty, + protocol: kEnumerableProperty, + username: kEnumerableProperty, + password: kEnumerableProperty, + host: kEnumerableProperty, + hostname: kEnumerableProperty, + port: kEnumerableProperty, + pathname: kEnumerableProperty, + search: kEnumerableProperty, + searchParams: kEnumerableProperty, + hash: kEnumerableProperty, + toJSON: kEnumerableProperty, +}); + +function installObjectURLMethods() { + const { + storeDataObject, + revokeDataObject, + } = internalBinding('blob'); - static createObjectURL(obj) { + function createObjectURL(obj) { const cryptoRandom = lazyCryptoRandom(); if (cryptoRandom === undefined) throw new ERR_NO_CRYPTO(); @@ -777,7 +797,7 @@ class URL { return `blob:nodedata:${id}`; } - static revokeObjectURL(url) { + function revokeObjectURL(url) { url = `${url}`; try { // TODO(@anonrig): Remove this try/catch by calling `parse` directly. @@ -789,30 +809,24 @@ class URL { // If there's an error, it's ignored. } } -} - -ObjectDefineProperties(URL.prototype, { - [SymbolToStringTag]: { __proto__: null, configurable: true, value: 'URL' }, - toString: kEnumerableProperty, - href: kEnumerableProperty, - origin: kEnumerableProperty, - protocol: kEnumerableProperty, - username: kEnumerableProperty, - password: kEnumerableProperty, - host: kEnumerableProperty, - hostname: kEnumerableProperty, - port: kEnumerableProperty, - pathname: kEnumerableProperty, - search: kEnumerableProperty, - searchParams: kEnumerableProperty, - hash: kEnumerableProperty, - toJSON: kEnumerableProperty, -}); -ObjectDefineProperties(URL, { - createObjectURL: kEnumerableProperty, - revokeObjectURL: kEnumerableProperty, -}); + ObjectDefineProperties(URL, { + createObjectURL: { + __proto__: null, + configurable: true, + writable: true, + enumerable: true, + value: createObjectURL, + }, + revokeObjectURL: { + __proto__: null, + configurable: true, + writable: true, + enumerable: true, + value: revokeObjectURL, + }, + }); +} // application/x-www-form-urlencoded parser // Ref: https://url.spec.whatwg.org/#concept-urlencoded-parser @@ -1297,6 +1311,7 @@ module.exports = { fileURLToPath, pathToFileURL, toPathIfFileURL, + installObjectURLMethods, isURLInstance, URL, URLSearchParams, diff --git a/lib/internal/util.js b/lib/internal/util.js index 64f329d28df6ed..1c8a02bd1811d8 100644 --- a/lib/internal/util.js +++ b/lib/internal/util.js @@ -511,6 +511,27 @@ function exposeInterface(target, name, interfaceObject) { }); } +// https://heycam.github.io/webidl/#es-namespaces +function exposeNamespace(target, name, namespaceObject) { + ObjectDefineProperty(target, name, { + __proto__: null, + writable: true, + enumerable: false, + configurable: true, + value: namespaceObject, + }); +} + +function exposeGetterAndSetter(target, name, getter, setter = undefined) { + ObjectDefineProperty(target, name, { + __proto__: null, + enumerable: false, + configurable: true, + get: getter, + set: setter, + }); +} + function defineLazyProperties(target, id, keys, enumerable = true) { const descriptors = { __proto__: null }; let mod; @@ -750,6 +771,8 @@ module.exports = { emitExperimentalWarning, exposeInterface, exposeLazyInterfaces, + exposeNamespace, + exposeGetterAndSetter, filterDuplicateStrings, filterOwnProperties, getConstructorOf, diff --git a/src/node_realm.cc b/src/node_realm.cc index ed141f3d6f4db2..ad6e22f6b5b35a 100644 --- a/src/node_realm.cc +++ b/src/node_realm.cc @@ -218,9 +218,10 @@ MaybeLocal Realm::BootstrapNode() { } if (!env_->no_browser_globals()) { - result = ExecuteBootstrapper("internal/bootstrap/browser"); - - if (result.IsEmpty()) { + if (ExecuteBootstrapper("internal/bootstrap/web/exposed-wildcard") + .IsEmpty() || + ExecuteBootstrapper("internal/bootstrap/web/exposed-window-or-worker") + .IsEmpty()) { return MaybeLocal(); } } From 11e1ec74427ccec34d7b9b711af2e60b89ccb368 Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Thu, 16 Mar 2023 00:22:02 +0800 Subject: [PATCH 002/131] src: bootstrap Web [Exposed=*] APIs in the shadow realm This is the initial work to bootstrap Web interfaces that are defined with extended attributes `[Exposed=*]`. The ShadowRealm instances are garbage-collected once it is unreachable. However, V8 can not infer the reference cycles between the per-realm strong persistent function handles and the realm's context handle. To allow the context to be gc-ed once it is not reachable, the per-realm persistent handles are attached to the context's global object and the persistent handles are set as weak. PR-URL: https://github.com/nodejs/node/pull/46809 Refs: https://github.com/nodejs/node/issues/42528 Reviewed-By: Matteo Collina Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Joyee Cheung --- src/api/environment.cc | 14 +- src/env-inl.h | 3 + src/env.cc | 21 ++- src/env.h | 8 +- src/env_properties.h | 1 - src/histogram.cc | 39 +++--- src/histogram.h | 5 +- src/node_binding.cc | 6 - src/node_binding.h | 12 +- src/node_buffer.cc | 7 +- src/node_i18n.cc | 42 +++--- src/node_perf.cc | 90 ++++++------ src/node_realm-inl.h | 18 +-- src/node_realm.cc | 151 ++++++++++++--------- src/node_realm.h | 60 +++++--- src/node_shadow_realm.cc | 98 ++++++++++++- src/node_shadow_realm.h | 27 ++++ test/common/globals.js | 141 +++++++++++++++++++ test/parallel/test-shadow-realm-gc.js | 12 ++ test/parallel/test-shadow-realm-globals.js | 27 ++++ test/pummel/test-heapdump-env.js | 4 +- 21 files changed, 595 insertions(+), 191 deletions(-) create mode 100644 test/common/globals.js create mode 100644 test/parallel/test-shadow-realm-gc.js create mode 100644 test/parallel/test-shadow-realm-globals.js diff --git a/src/api/environment.cc b/src/api/environment.cc index 0b5c69d381bc6d..c9ec5e0a43288c 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -67,6 +67,16 @@ MaybeLocal PrepareStackTraceCallback(Local context, if (env == nullptr) { return exception->ToString(context).FromMaybe(Local()); } + // TODO(legendecas): Per-realm prepareStackTrace callback. + // If we are in a Realm that is not the principal Realm (e.g. ShadowRealm), + // skip the prepareStackTrace callback to avoid passing the JS objects ( + // the exception and trace) across the realm boundary with the + // `Error.prepareStackTrace` override. + Realm* current_realm = Realm::GetCurrent(context); + if (current_realm != nullptr && + current_realm->kind() != Realm::Kind::kPrincipal) { + return exception->ToString(context).FromMaybe(Local()); + } Local prepare = env->prepare_stack_trace_callback(); if (prepare.IsEmpty()) { return exception->ToString(context).FromMaybe(Local()); @@ -81,8 +91,8 @@ MaybeLocal PrepareStackTraceCallback(Local context, // is what ReThrow gives us). Just returning the empty MaybeLocal would leave // us with a pending exception. TryCatchScope try_catch(env); - MaybeLocal result = prepare->Call( - context, Undefined(env->isolate()), arraysize(args), args); + MaybeLocal result = + prepare->Call(context, Undefined(env->isolate()), arraysize(args), args); if (try_catch.HasCaught() && !try_catch.HasTerminated()) { try_catch.ReThrow(); } diff --git a/src/env-inl.h b/src/env-inl.h index d061ce5b993b6a..61dd4d3c2db81a 100644 --- a/src/env-inl.h +++ b/src/env-inl.h @@ -783,6 +783,7 @@ void Environment::set_process_exit_handler( #define VP(PropertyName, StringValue) V(v8::Private, PropertyName) #define VY(PropertyName, StringValue) V(v8::Symbol, PropertyName) #define VS(PropertyName, StringValue) V(v8::String, PropertyName) +#define VR(PropertyName, TypeName) V(v8::Private, per_realm_##PropertyName) #define V(TypeName, PropertyName) \ inline \ v8::Local IsolateData::PropertyName() const { \ @@ -791,7 +792,9 @@ void Environment::set_process_exit_handler( PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES(VP) PER_ISOLATE_SYMBOL_PROPERTIES(VY) PER_ISOLATE_STRING_PROPERTIES(VS) + PER_REALM_STRONG_PERSISTENT_VALUES(VR) #undef V +#undef VR #undef VS #undef VY #undef VP diff --git a/src/env.cc b/src/env.cc index 17f25467380086..a193b0ce9070ce 100644 --- a/src/env.cc +++ b/src/env.cc @@ -299,13 +299,16 @@ IsolateDataSerializeInfo IsolateData::Serialize(SnapshotCreator* creator) { #define VP(PropertyName, StringValue) V(Private, PropertyName) #define VY(PropertyName, StringValue) V(Symbol, PropertyName) #define VS(PropertyName, StringValue) V(String, PropertyName) +#define VR(PropertyName, TypeName) V(Private, per_realm_##PropertyName) #define V(TypeName, PropertyName) \ info.primitive_values.push_back( \ creator->AddData(PropertyName##_.Get(isolate))); PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES(VP) PER_ISOLATE_SYMBOL_PROPERTIES(VY) PER_ISOLATE_STRING_PROPERTIES(VS) + PER_REALM_STRONG_PERSISTENT_VALUES(VR) #undef V +#undef VR #undef VY #undef VS #undef VP @@ -338,6 +341,7 @@ void IsolateData::DeserializeProperties(const IsolateDataSerializeInfo* info) { #define VP(PropertyName, StringValue) V(Private, PropertyName) #define VY(PropertyName, StringValue) V(Symbol, PropertyName) #define VS(PropertyName, StringValue) V(String, PropertyName) +#define VR(PropertyName, TypeName) V(Private, per_realm_##PropertyName) #define V(TypeName, PropertyName) \ do { \ MaybeLocal maybe_field = \ @@ -352,7 +356,9 @@ void IsolateData::DeserializeProperties(const IsolateDataSerializeInfo* info) { PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES(VP) PER_ISOLATE_SYMBOL_PROPERTIES(VY) PER_ISOLATE_STRING_PROPERTIES(VS) + PER_REALM_STRONG_PERSISTENT_VALUES(VR) #undef V +#undef VR #undef VY #undef VS #undef VP @@ -421,6 +427,19 @@ void IsolateData::CreateProperties() { .ToLocalChecked())); PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES(V) #undef V +#define V(PropertyName, TypeName) \ + per_realm_##PropertyName##_.Set( \ + isolate_, \ + Private::New( \ + isolate_, \ + String::NewFromOneByte( \ + isolate_, \ + reinterpret_cast("per_realm_" #PropertyName), \ + NewStringType::kInternalized, \ + sizeof("per_realm_" #PropertyName) - 1) \ + .ToLocalChecked())); + PER_REALM_STRONG_PERSISTENT_VALUES(V) +#undef V #define V(PropertyName, StringValue) \ PropertyName##_.Set( \ isolate_, \ @@ -760,7 +779,7 @@ Environment::Environment(IsolateData* isolate_data, void Environment::InitializeMainContext(Local context, const EnvSerializeInfo* env_info) { - principal_realm_ = std::make_unique( + principal_realm_ = std::make_unique( this, context, MAYBE_FIELD_PTR(env_info, principal_realm)); AssignToContext(context, principal_realm_.get(), ContextInfo("")); if (env_info != nullptr) { diff --git a/src/env.h b/src/env.h index e60ccdc82e9b77..874f84a5542816 100644 --- a/src/env.h +++ b/src/env.h @@ -146,12 +146,15 @@ class NODE_EXTERN_PRIVATE IsolateData : public MemoryRetainer { #define VP(PropertyName, StringValue) V(v8::Private, PropertyName) #define VY(PropertyName, StringValue) V(v8::Symbol, PropertyName) #define VS(PropertyName, StringValue) V(v8::String, PropertyName) +#define VR(PropertyName, TypeName) V(v8::Private, per_realm_##PropertyName) #define V(TypeName, PropertyName) \ inline v8::Local PropertyName() const; PER_ISOLATE_PRIVATE_SYMBOL_PROPERTIES(VP) PER_ISOLATE_SYMBOL_PROPERTIES(VY) PER_ISOLATE_STRING_PROPERTIES(VS) + PER_REALM_STRONG_PERSISTENT_VALUES(VR) #undef V +#undef VR #undef VY #undef VS #undef VP @@ -183,6 +186,7 @@ class NODE_EXTERN_PRIVATE IsolateData : public MemoryRetainer { #define VP(PropertyName, StringValue) V(v8::Private, PropertyName) #define VY(PropertyName, StringValue) V(v8::Symbol, PropertyName) #define VS(PropertyName, StringValue) V(v8::String, PropertyName) +#define VR(PropertyName, TypeName) V(v8::Private, per_realm_##PropertyName) #define VM(PropertyName) V(v8::FunctionTemplate, PropertyName##_binding) #define VT(PropertyName, TypeName) V(TypeName, PropertyName) #define V(TypeName, PropertyName) \ @@ -191,9 +195,11 @@ class NODE_EXTERN_PRIVATE IsolateData : public MemoryRetainer { PER_ISOLATE_SYMBOL_PROPERTIES(VY) PER_ISOLATE_STRING_PROPERTIES(VS) PER_ISOLATE_TEMPLATE_PROPERTIES(VT) + PER_REALM_STRONG_PERSISTENT_VALUES(VR) NODE_BINDINGS_WITH_PER_ISOLATE_INIT(VM) #undef V #undef VM +#undef VR #undef VT #undef VS #undef VY @@ -1126,7 +1132,7 @@ class Environment : public MemoryRetainer { std::function process_exit_handler_{ DefaultProcessExitHandlerInternal}; - std::unique_ptr principal_realm_ = nullptr; + std::unique_ptr principal_realm_ = nullptr; builtins::BuiltinLoader builtin_loader_; StartExecutionCallback embedder_mksnapshot_entry_point_; diff --git a/src/env_properties.h b/src/env_properties.h index 9133b8efbd5b74..3600763806f811 100644 --- a/src/env_properties.h +++ b/src/env_properties.h @@ -415,7 +415,6 @@ V(message_port, v8::Object) \ V(builtin_module_require, v8::Function) \ V(performance_entry_callback, v8::Function) \ - V(performance_entry_template, v8::Function) \ V(prepare_stack_trace_callback, v8::Function) \ V(process_object, v8::Object) \ V(primordials, v8::Object) \ diff --git a/src/histogram.cc b/src/histogram.cc index 3a3228ddc9eb6b..112a8911cfb4af 100644 --- a/src/histogram.cc +++ b/src/histogram.cc @@ -16,6 +16,7 @@ using v8::Local; using v8::Map; using v8::Number; using v8::Object; +using v8::ObjectTemplate; using v8::String; using v8::Uint32; using v8::Value; @@ -213,7 +214,7 @@ void HistogramBase::Add(const FunctionCallbackInfo& args) { HistogramBase* histogram; ASSIGN_OR_RETURN_UNWRAP(&histogram, args.Holder()); - CHECK(GetConstructorTemplate(env)->HasInstance(args[0])); + CHECK(GetConstructorTemplate(env->isolate_data())->HasInstance(args[0])); HistogramBase* other; ASSIGN_OR_RETURN_UNWRAP(&other, args[0]); @@ -225,9 +226,10 @@ BaseObjectPtr HistogramBase::Create( Environment* env, const Histogram::Options& options) { Local obj; - if (!GetConstructorTemplate(env) - ->InstanceTemplate() - ->NewInstance(env->context()).ToLocal(&obj)) { + if (!GetConstructorTemplate(env->isolate_data()) + ->InstanceTemplate() + ->NewInstance(env->context()) + .ToLocal(&obj)) { return BaseObjectPtr(); } @@ -238,9 +240,10 @@ BaseObjectPtr HistogramBase::Create( Environment* env, std::shared_ptr histogram) { Local obj; - if (!GetConstructorTemplate(env) - ->InstanceTemplate() - ->NewInstance(env->context()).ToLocal(&obj)) { + if (!GetConstructorTemplate(env->isolate_data()) + ->InstanceTemplate() + ->NewInstance(env->context()) + .ToLocal(&obj)) { return BaseObjectPtr(); } return MakeBaseObject(env, obj, std::move(histogram)); @@ -278,15 +281,14 @@ void HistogramBase::New(const FunctionCallbackInfo& args) { } Local HistogramBase::GetConstructorTemplate( - Environment* env) { - Local tmpl = env->histogram_ctor_template(); + IsolateData* isolate_data) { + Local tmpl = isolate_data->histogram_ctor_template(); if (tmpl.IsEmpty()) { - Isolate* isolate = env->isolate(); + Isolate* isolate = isolate_data->isolate(); tmpl = NewFunctionTemplate(isolate, New); - Local classname = - FIXED_ONE_BYTE_STRING(env->isolate(), "Histogram"); + Local classname = FIXED_ONE_BYTE_STRING(isolate, "Histogram"); tmpl->SetClassName(classname); - tmpl->Inherit(BaseObject::GetConstructorTemplate(env)); + tmpl->Inherit(BaseObject::GetConstructorTemplate(isolate_data)); tmpl->InstanceTemplate()->SetInternalFieldCount( HistogramBase::kInternalFieldCount); @@ -311,7 +313,7 @@ Local HistogramBase::GetConstructorTemplate( SetProtoMethod(isolate, tmpl, "record", Record); SetProtoMethod(isolate, tmpl, "recordDelta", RecordDelta); SetProtoMethod(isolate, tmpl, "add", Add); - env->set_histogram_ctor_template(tmpl); + isolate_data->set_histogram_ctor_template(tmpl); } return tmpl; } @@ -339,9 +341,12 @@ void HistogramBase::RegisterExternalReferences( registry->Register(Add); } -void HistogramBase::Initialize(Environment* env, Local target) { - SetConstructorFunction( - env->context(), target, "Histogram", GetConstructorTemplate(env)); +void HistogramBase::Initialize(IsolateData* isolate_data, + Local target) { + SetConstructorFunction(isolate_data->isolate(), + target, + "Histogram", + GetConstructorTemplate(isolate_data)); } BaseObjectPtr HistogramBase::HistogramTransferData::Deserialize( diff --git a/src/histogram.h b/src/histogram.h index d526bba8a1b797..b3df6c975d90b0 100644 --- a/src/histogram.h +++ b/src/histogram.h @@ -84,8 +84,9 @@ class HistogramImpl { class HistogramBase : public BaseObject, public HistogramImpl { public: static v8::Local GetConstructorTemplate( - Environment* env); - static void Initialize(Environment* env, v8::Local target); + IsolateData* isolate_data); + static void Initialize(IsolateData* isolate_data, + v8::Local target); static void RegisterExternalReferences(ExternalReferenceRegistry* registry); static BaseObjectPtr Create( diff --git a/src/node_binding.cc b/src/node_binding.cc index f9c3af892da864..45bcdc044cf979 100644 --- a/src/node_binding.cc +++ b/src/node_binding.cc @@ -14,12 +14,6 @@ #define NODE_BUILTIN_OPENSSL_BINDINGS(V) #endif -#if NODE_HAVE_I18N_SUPPORT -#define NODE_BUILTIN_ICU_BINDINGS(V) V(icu) -#else -#define NODE_BUILTIN_ICU_BINDINGS(V) -#endif - #if HAVE_INSPECTOR #define NODE_BUILTIN_PROFILER_BINDINGS(V) V(profiler) #else diff --git a/src/node_binding.h b/src/node_binding.h index c140297f5ca936..1b024774e120a9 100644 --- a/src/node_binding.h +++ b/src/node_binding.h @@ -24,9 +24,17 @@ static_assert(static_cast(NM_F_LINKED) == static_cast(node::ModuleFlags::kLinked), "NM_F_LINKED != node::ModuleFlags::kLinked"); +#if NODE_HAVE_I18N_SUPPORT +#define NODE_BUILTIN_ICU_BINDINGS(V) V(icu) +#else +#define NODE_BUILTIN_ICU_BINDINGS(V) +#endif + #define NODE_BINDINGS_WITH_PER_ISOLATE_INIT(V) \ V(builtins) \ - V(worker) + V(performance) \ + V(worker) \ + NODE_BUILTIN_ICU_BINDINGS(V) #define NODE_BINDING_CONTEXT_AWARE_CPP(modname, regfunc, priv, flags) \ static node::node_module _module = { \ @@ -56,6 +64,8 @@ namespace node { NODE_BINDING_CONTEXT_AWARE_CPP(modname, regfunc, nullptr, NM_F_INTERNAL) // Define a per-isolate initialization function for a node internal binding. +// The modname should be registered in the NODE_BINDINGS_WITH_PER_ISOLATE_INIT +// list. #define NODE_BINDING_PER_ISOLATE_INIT(modname, per_isolate_func) \ void _register_isolate_##modname(node::IsolateData* isolate_data, \ v8::Local target) { \ diff --git a/src/node_buffer.cc b/src/node_buffer.cc index 07f040ecea3750..e297b63d82d875 100644 --- a/src/node_buffer.cc +++ b/src/node_buffer.cc @@ -1150,11 +1150,14 @@ static void IsAscii(const FunctionCallbackInfo& args) { } void SetBufferPrototype(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); + Realm* realm = Realm::GetCurrent(args); + + // TODO(legendecas): Remove this check once the binding supports sub-realms. + CHECK_EQ(realm->kind(), Realm::Kind::kPrincipal); CHECK(args[0]->IsObject()); Local proto = args[0].As(); - env->set_buffer_prototype_object(proto); + realm->set_buffer_prototype_object(proto); } void GetZeroFillToggle(const FunctionCallbackInfo& args) { diff --git a/src/node_i18n.cc b/src/node_i18n.cc index bb810632ee6617..cdb264d6202eb3 100644 --- a/src/node_i18n.cc +++ b/src/node_i18n.cc @@ -859,36 +859,41 @@ static void GetStringWidth(const FunctionCallbackInfo& args) { args.GetReturnValue().Set(width); } -void Initialize(Local target, - Local unused, - Local context, - void* priv) { - Environment* env = Environment::GetCurrent(context); - SetMethod(context, target, "toUnicode", ToUnicode); - SetMethod(context, target, "toASCII", ToASCII); - SetMethod(context, target, "getStringWidth", GetStringWidth); +static void CreatePerIsolateProperties(IsolateData* isolate_data, + Local target) { + Isolate* isolate = isolate_data->isolate(); + Local proto = target->PrototypeTemplate(); + + SetMethod(isolate, proto, "toUnicode", ToUnicode); + SetMethod(isolate, proto, "toASCII", ToASCII); + SetMethod(isolate, proto, "getStringWidth", GetStringWidth); // One-shot converters - SetMethod(context, target, "icuErrName", ICUErrorName); - SetMethod(context, target, "transcode", Transcode); + SetMethod(isolate, proto, "icuErrName", ICUErrorName); + SetMethod(isolate, proto, "transcode", Transcode); // ConverterObject { - Local t = NewFunctionTemplate(env->isolate(), nullptr); - t->Inherit(BaseObject::GetConstructorTemplate(env)); + Local t = NewFunctionTemplate(isolate, nullptr); + t->Inherit(BaseObject::GetConstructorTemplate(isolate_data)); t->InstanceTemplate()->SetInternalFieldCount( ConverterObject::kInternalFieldCount); Local converter_string = - FIXED_ONE_BYTE_STRING(env->isolate(), "Converter"); + FIXED_ONE_BYTE_STRING(isolate, "Converter"); t->SetClassName(converter_string); - env->set_i18n_converter_template(t->InstanceTemplate()); + isolate_data->set_i18n_converter_template(t->InstanceTemplate()); } - SetMethod(context, target, "getConverter", ConverterObject::Create); - SetMethod(context, target, "decode", ConverterObject::Decode); - SetMethod(context, target, "hasConverter", ConverterObject::Has); + SetMethod(isolate, proto, "getConverter", ConverterObject::Create); + SetMethod(isolate, proto, "decode", ConverterObject::Decode); + SetMethod(isolate, proto, "hasConverter", ConverterObject::Has); } +void CreatePerContextProperties(Local target, + Local unused, + Local context, + void* priv) {} + void RegisterExternalReferences(ExternalReferenceRegistry* registry) { registry->Register(ToUnicode); registry->Register(ToASCII); @@ -903,7 +908,8 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { } // namespace i18n } // namespace node -NODE_BINDING_CONTEXT_AWARE_INTERNAL(icu, node::i18n::Initialize) +NODE_BINDING_CONTEXT_AWARE_INTERNAL(icu, node::i18n::CreatePerContextProperties) +NODE_BINDING_PER_ISOLATE_INIT(icu, node::i18n::CreatePerIsolateProperties) NODE_BINDING_EXTERNAL_REFERENCE(icu, node::i18n::RegisterExternalReferences) #endif // NODE_HAVE_I18N_SUPPORT diff --git a/src/node_perf.cc b/src/node_perf.cc index 72ee127e5171d6..5104b348715515 100644 --- a/src/node_perf.cc +++ b/src/node_perf.cc @@ -28,9 +28,9 @@ using v8::Local; using v8::MaybeLocal; using v8::Number; using v8::Object; +using v8::ObjectTemplate; using v8::PropertyAttribute; using v8::ReadOnly; -using v8::String; using v8::Value; // Microseconds in a millisecond, as a float. @@ -99,7 +99,10 @@ void PerformanceState::Mark(PerformanceMilestone milestone, uint64_t ts) { // Allows specific Node.js lifecycle milestones to be set from JavaScript void MarkMilestone(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); + Realm* realm = Realm::GetCurrent(args); + // TODO(legendecas): Remove this check once the sub-realms are supported. + CHECK_EQ(realm->kind(), Realm::Kind::kPrincipal); + Environment* env = realm->env(); PerformanceMilestone milestone = static_cast(args[0].As()->Value()); if (milestone != NODE_PERFORMANCE_MILESTONE_INVALID) @@ -107,9 +110,11 @@ void MarkMilestone(const FunctionCallbackInfo& args) { } void SetupPerformanceObservers(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); + Realm* realm = Realm::GetCurrent(args); + // TODO(legendecas): Remove this check once the sub-realms are supported. + CHECK_EQ(realm->kind(), Realm::Kind::kPrincipal); CHECK(args[0]->IsFunction()); - env->set_performance_entry_callback(args[0].As()); + realm->set_performance_entry_callback(args[0].As()); } // Marks the start of a GC cycle @@ -284,15 +289,41 @@ void GetTimeOriginTimeStamp(const FunctionCallbackInfo& args) { } void MarkBootstrapComplete(const FunctionCallbackInfo& args) { - Environment* env = Environment::GetCurrent(args); - env->performance_state()->Mark( + Realm* realm = Realm::GetCurrent(args); + CHECK_EQ(realm->kind(), Realm::Kind::kPrincipal); + realm->env()->performance_state()->Mark( performance::NODE_PERFORMANCE_MILESTONE_BOOTSTRAP_COMPLETE); } -void Initialize(Local target, - Local unused, - Local context, - void* priv) { +static void CreatePerIsolateProperties(IsolateData* isolate_data, + Local target) { + Isolate* isolate = isolate_data->isolate(); + Local proto = target->PrototypeTemplate(); + + HistogramBase::Initialize(isolate_data, proto); + + SetMethod(isolate, proto, "markMilestone", MarkMilestone); + SetMethod(isolate, proto, "setupObservers", SetupPerformanceObservers); + SetMethod(isolate, + proto, + "installGarbageCollectionTracking", + InstallGarbageCollectionTracking); + SetMethod(isolate, + proto, + "removeGarbageCollectionTracking", + RemoveGarbageCollectionTracking); + SetMethod(isolate, proto, "notify", Notify); + SetMethod(isolate, proto, "loopIdleTime", LoopIdleTime); + SetMethod(isolate, proto, "getTimeOrigin", GetTimeOrigin); + SetMethod(isolate, proto, "getTimeOriginTimestamp", GetTimeOriginTimeStamp); + SetMethod(isolate, proto, "createELDHistogram", CreateELDHistogram); + SetMethod(isolate, proto, "markBootstrapComplete", MarkBootstrapComplete); +} + +void CreatePerContextProperties(Local target, + Local unused, + Local context, + void* priv) { Environment* env = Environment::GetCurrent(context); Isolate* isolate = env->isolate(); PerformanceState* state = env->performance_state(); @@ -304,32 +335,6 @@ void Initialize(Local target, FIXED_ONE_BYTE_STRING(isolate, "milestones"), state->milestones.GetJSArray()).Check(); - Local performanceEntryString = - FIXED_ONE_BYTE_STRING(isolate, "PerformanceEntry"); - - Local pe = FunctionTemplate::New(isolate); - pe->SetClassName(performanceEntryString); - Local fn = pe->GetFunction(context).ToLocalChecked(); - target->Set(context, performanceEntryString, fn).Check(); - env->set_performance_entry_template(fn); - - SetMethod(context, target, "markMilestone", MarkMilestone); - SetMethod(context, target, "setupObservers", SetupPerformanceObservers); - SetMethod(context, - target, - "installGarbageCollectionTracking", - InstallGarbageCollectionTracking); - SetMethod(context, - target, - "removeGarbageCollectionTracking", - RemoveGarbageCollectionTracking); - SetMethod(context, target, "notify", Notify); - SetMethod(context, target, "loopIdleTime", LoopIdleTime); - SetMethod(context, target, "getTimeOrigin", GetTimeOrigin); - SetMethod(context, target, "getTimeOriginTimestamp", GetTimeOriginTimeStamp); - SetMethod(context, target, "createELDHistogram", CreateELDHistogram); - SetMethod(context, target, "markBootstrapComplete", MarkBootstrapComplete); - Local constants = Object::New(isolate); NODE_DEFINE_CONSTANT(constants, NODE_PERFORMANCE_GC_MAJOR); @@ -365,12 +370,8 @@ void Initialize(Local target, PropertyAttribute attr = static_cast(ReadOnly | DontDelete); - target->DefineOwnProperty(context, - env->constants_string(), - constants, - attr).ToChecked(); - - HistogramBase::Initialize(env, target); + target->DefineOwnProperty(context, env->constants_string(), constants, attr) + .ToChecked(); } void RegisterExternalReferences(ExternalReferenceRegistry* registry) { @@ -390,6 +391,9 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) { } // namespace performance } // namespace node -NODE_BINDING_CONTEXT_AWARE_INTERNAL(performance, node::performance::Initialize) +NODE_BINDING_CONTEXT_AWARE_INTERNAL( + performance, node::performance::CreatePerContextProperties) +NODE_BINDING_PER_ISOLATE_INIT(performance, + node::performance::CreatePerIsolateProperties) NODE_BINDING_EXTERNAL_REFERENCE(performance, node::performance::RegisterExternalReferences) diff --git a/src/node_realm-inl.h b/src/node_realm-inl.h index 2fc3eef97729d1..f49690714a3ea5 100644 --- a/src/node_realm-inl.h +++ b/src/node_realm-inl.h @@ -42,6 +42,10 @@ inline v8::Isolate* Realm::isolate() const { return isolate_; } +inline Realm::Kind Realm::kind() const { + return kind_; +} + inline bool Realm::has_run_bootstrapping_code() const { return has_run_bootstrapping_code_; } @@ -115,20 +119,6 @@ int64_t Realm::base_object_count() const { return base_object_count_; } -#define V(PropertyName, TypeName) \ - inline v8::Local Realm::PropertyName() const { \ - return PersistentToLocal::Strong(PropertyName##_); \ - } \ - inline void Realm::set_##PropertyName(v8::Local value) { \ - PropertyName##_.Reset(isolate(), value); \ - } -PER_REALM_STRONG_PERSISTENT_VALUES(V) -#undef V - -v8::Local Realm::context() const { - return PersistentToLocal::Strong(context_); -} - void Realm::AddCleanupHook(CleanupQueue::Callback fn, void* arg) { cleanup_queue_.Add(fn, arg); } diff --git a/src/node_realm.cc b/src/node_realm.cc index ad6e22f6b5b35a..a8cd9b9a55da2f 100644 --- a/src/node_realm.cc +++ b/src/node_realm.cc @@ -19,18 +19,9 @@ using v8::SnapshotCreator; using v8::String; using v8::Value; -Realm::Realm(Environment* env, - v8::Local context, - const RealmSerializeInfo* realm_info) - : env_(env), isolate_(context->GetIsolate()) { +Realm::Realm(Environment* env, v8::Local context, Kind kind) + : env_(env), isolate_(context->GetIsolate()), kind_(kind) { context_.Reset(isolate_, context); - - // Create properties if not deserializing from snapshot. - // Or the properties are deserialized with DeserializeProperties() when the - // env drained the deserialize requests. - if (realm_info == nullptr) { - CreateProperties(); - } } Realm::~Realm() { @@ -208,55 +199,6 @@ MaybeLocal Realm::BootstrapInternalLoaders() { return scope.Escape(loader_exports); } -MaybeLocal Realm::BootstrapNode() { - EscapableHandleScope scope(isolate_); - - MaybeLocal result = ExecuteBootstrapper("internal/bootstrap/node"); - - if (result.IsEmpty()) { - return MaybeLocal(); - } - - if (!env_->no_browser_globals()) { - if (ExecuteBootstrapper("internal/bootstrap/web/exposed-wildcard") - .IsEmpty() || - ExecuteBootstrapper("internal/bootstrap/web/exposed-window-or-worker") - .IsEmpty()) { - return MaybeLocal(); - } - } - - // TODO(joyeecheung): skip these in the snapshot building for workers. - auto thread_switch_id = - env_->is_main_thread() ? "internal/bootstrap/switches/is_main_thread" - : "internal/bootstrap/switches/is_not_main_thread"; - result = ExecuteBootstrapper(thread_switch_id); - - if (result.IsEmpty()) { - return MaybeLocal(); - } - - auto process_state_switch_id = - env_->owns_process_state() - ? "internal/bootstrap/switches/does_own_process_state" - : "internal/bootstrap/switches/does_not_own_process_state"; - result = ExecuteBootstrapper(process_state_switch_id); - - if (result.IsEmpty()) { - return MaybeLocal(); - } - - Local env_string = FIXED_ONE_BYTE_STRING(isolate_, "env"); - Local env_proxy; - CreateEnvProxyTemplate(isolate_, env_->isolate_data()); - if (!env_->env_proxy_template()->NewInstance(context()).ToLocal(&env_proxy) || - process_object()->Set(context(), env_string, env_proxy).IsNothing()) { - return MaybeLocal(); - } - - return scope.EscapeMaybe(result); -} - MaybeLocal Realm::RunBootstrapping() { EscapableHandleScope scope(isolate_); @@ -267,7 +209,7 @@ MaybeLocal Realm::RunBootstrapping() { } Local result; - if (!BootstrapNode().ToLocal(&result)) { + if (!BootstrapRealm().ToLocal(&result)) { return MaybeLocal(); } @@ -284,8 +226,10 @@ void Realm::DoneBootstrapping() { // TODO(legendecas): track req_wrap and handle_wrap by realms instead of // environments. - CHECK(env_->req_wrap_queue()->IsEmpty()); - CHECK(env_->handle_wrap_queue()->IsEmpty()); + if (kind_ == kPrincipal) { + CHECK(env_->req_wrap_queue()->IsEmpty()); + CHECK(env_->handle_wrap_queue()->IsEmpty()); + } has_run_bootstrapping_code_ = true; @@ -312,7 +256,7 @@ void Realm::PrintInfoForSnapshot() { << "\n"; }); - fprintf(stderr, "\nnBuiltins without cache:\n"); + fprintf(stderr, "\nBuiltins without cache:\n"); for (const auto& s : builtins_without_cache) { fprintf(stderr, "%s\n", s.c_str()); } @@ -360,4 +304,83 @@ void Realm::VerifyNoStrongBaseObjects() { }); } +v8::Local Realm::context() const { + return PersistentToLocal::Strong(context_); +} + +#define V(PropertyName, TypeName) \ + v8::Local PrincipalRealm::PropertyName() const { \ + return PersistentToLocal::Strong(PropertyName##_); \ + } \ + void PrincipalRealm::set_##PropertyName(v8::Local value) { \ + PropertyName##_.Reset(isolate(), value); \ + } +PER_REALM_STRONG_PERSISTENT_VALUES(V) +#undef V + +PrincipalRealm::PrincipalRealm(Environment* env, + v8::Local context, + const RealmSerializeInfo* realm_info) + : Realm(env, context, kPrincipal) { + // Create properties if not deserializing from snapshot. + // Or the properties are deserialized with DeserializeProperties() when the + // env drained the deserialize requests. + if (realm_info == nullptr) { + CreateProperties(); + } +} + +void PrincipalRealm::MemoryInfo(MemoryTracker* tracker) const { + Realm::MemoryInfo(tracker); +} + +MaybeLocal PrincipalRealm::BootstrapRealm() { + EscapableHandleScope scope(isolate_); + + MaybeLocal result = ExecuteBootstrapper("internal/bootstrap/node"); + + if (result.IsEmpty()) { + return MaybeLocal(); + } + + if (!env_->no_browser_globals()) { + if (ExecuteBootstrapper("internal/bootstrap/web/exposed-wildcard") + .IsEmpty() || + ExecuteBootstrapper("internal/bootstrap/web/exposed-window-or-worker") + .IsEmpty()) { + return MaybeLocal(); + } + } + + // TODO(joyeecheung): skip these in the snapshot building for workers. + auto thread_switch_id = + env_->is_main_thread() ? "internal/bootstrap/switches/is_main_thread" + : "internal/bootstrap/switches/is_not_main_thread"; + result = ExecuteBootstrapper(thread_switch_id); + + if (result.IsEmpty()) { + return MaybeLocal(); + } + + auto process_state_switch_id = + env_->owns_process_state() + ? "internal/bootstrap/switches/does_own_process_state" + : "internal/bootstrap/switches/does_not_own_process_state"; + result = ExecuteBootstrapper(process_state_switch_id); + + if (result.IsEmpty()) { + return MaybeLocal(); + } + + Local env_string = FIXED_ONE_BYTE_STRING(isolate_, "env"); + Local env_proxy; + CreateEnvProxyTemplate(isolate_, env_->isolate_data()); + if (!env_->env_proxy_template()->NewInstance(context()).ToLocal(&env_proxy) || + process_object()->Set(context(), env_string, env_proxy).IsNothing()) { + return MaybeLocal(); + } + + return scope.EscapeMaybe(result); +} + } // namespace node diff --git a/src/node_realm.h b/src/node_realm.h index 04129eec47d551..73ab1718e002de 100644 --- a/src/node_realm.h +++ b/src/node_realm.h @@ -43,6 +43,11 @@ using BindingDataStore = std::array, */ class Realm : public MemoryRetainer { public: + enum Kind { + kPrincipal, + kShadowRealm, + }; + static inline Realm* GetCurrent(v8::Isolate* isolate); static inline Realm* GetCurrent(v8::Local context); static inline Realm* GetCurrent( @@ -50,18 +55,13 @@ class Realm : public MemoryRetainer { template static inline Realm* GetCurrent(const v8::PropertyCallbackInfo& info); - Realm(Environment* env, - v8::Local context, - const RealmSerializeInfo* realm_info); - ~Realm(); + Realm(Environment* env, v8::Local context, Kind kind); Realm(const Realm&) = delete; Realm& operator=(const Realm&) = delete; Realm(Realm&&) = delete; Realm& operator=(Realm&&) = delete; - SET_MEMORY_INFO_NAME(Realm) - SET_SELF_SIZE(Realm) void MemoryInfo(MemoryTracker* tracker) const override; void CreateProperties(); @@ -69,8 +69,6 @@ class Realm : public MemoryRetainer { void DeserializeProperties(const RealmSerializeInfo* info); v8::MaybeLocal ExecuteBootstrapper(const char* id); - v8::MaybeLocal BootstrapInternalLoaders(); - v8::MaybeLocal BootstrapNode(); v8::MaybeLocal RunBootstrapping(); inline void AddCleanupHook(CleanupQueue::Callback cb, void* arg); @@ -87,7 +85,8 @@ class Realm : public MemoryRetainer { inline IsolateData* isolate_data() const; inline Environment* env() const; inline v8::Isolate* isolate() const; - inline v8::Local context() const; + inline Kind kind() const; + virtual v8::Local context() const; inline bool has_run_bootstrapping_code() const; // Methods created using SetMethod(), SetPrototypeMethod(), etc. inside @@ -115,8 +114,8 @@ class Realm : public MemoryRetainer { inline int64_t base_object_created_after_bootstrap() const; #define V(PropertyName, TypeName) \ - inline v8::Local PropertyName() const; \ - inline void set_##PropertyName(v8::Local value); + virtual v8::Local PropertyName() const = 0; \ + virtual void set_##PropertyName(v8::Local value) = 0; PER_REALM_STRONG_PERSISTENT_VALUES(V) #undef V @@ -127,15 +126,27 @@ class Realm : public MemoryRetainer { // it's only used for tests. std::vector builtins_in_snapshot; - private: - void InitializeContext(v8::Local context, - const RealmSerializeInfo* realm_info); - void DoneBootstrapping(); + protected: + ~Realm(); + + v8::MaybeLocal BootstrapInternalLoaders(); + virtual v8::MaybeLocal BootstrapRealm() = 0; Environment* env_; // Shorthand for isolate pointer. v8::Isolate* isolate_; v8::Global context_; + +#define V(PropertyName, TypeName) v8::Global PropertyName##_; + PER_REALM_STRONG_PERSISTENT_VALUES(V) +#undef V + + private: + void InitializeContext(v8::Local context, + const RealmSerializeInfo* realm_info); + void DoneBootstrapping(); + + Kind kind_; bool has_run_bootstrapping_code_ = false; int64_t base_object_count_ = 0; @@ -144,10 +155,27 @@ class Realm : public MemoryRetainer { BindingDataStore binding_data_store_; CleanupQueue cleanup_queue_; +}; -#define V(PropertyName, TypeName) v8::Global PropertyName##_; +class PrincipalRealm : public Realm { + public: + PrincipalRealm(Environment* env, + v8::Local context, + const RealmSerializeInfo* realm_info); + ~PrincipalRealm() = default; + + SET_MEMORY_INFO_NAME(PrincipalRealm) + SET_SELF_SIZE(PrincipalRealm) + void MemoryInfo(MemoryTracker* tracker) const override; + +#define V(PropertyName, TypeName) \ + v8::Local PropertyName() const override; \ + void set_##PropertyName(v8::Local value) override; PER_REALM_STRONG_PERSISTENT_VALUES(V) #undef V + + protected: + v8::MaybeLocal BootstrapRealm() override; }; } // namespace node diff --git a/src/node_shadow_realm.cc b/src/node_shadow_realm.cc index 2ccd62edc315d7..bf5c7c94676c55 100644 --- a/src/node_shadow_realm.cc +++ b/src/node_shadow_realm.cc @@ -1,15 +1,111 @@ #include "node_shadow_realm.h" +#include "env-inl.h" namespace node { namespace shadow_realm { using v8::Context; +using v8::EscapableHandleScope; +using v8::HandleScope; using v8::Local; using v8::MaybeLocal; +using v8::Value; + +// static +ShadowRealm* ShadowRealm::New(Environment* env) { + ShadowRealm* realm = new ShadowRealm(env); + env->AssignToContext(realm->context(), realm, ContextInfo("")); + + if (realm->RunBootstrapping().IsEmpty()) { + delete realm; + return nullptr; + } + return realm; +} // static MaybeLocal HostCreateShadowRealmContextCallback( Local initiator_context) { - return Context::New(initiator_context->GetIsolate()); + Environment* env = Environment::GetCurrent(initiator_context); + ShadowRealm* realm = ShadowRealm::New(env); + if (realm != nullptr) { + return realm->context(); + } + return MaybeLocal(); +} + +// static +void ShadowRealm::WeakCallback(const v8::WeakCallbackInfo& data) { + ShadowRealm* realm = data.GetParameter(); + delete realm; +} + +ShadowRealm::ShadowRealm(Environment* env) + : Realm(env, NewContext(env->isolate()), kShadowRealm) { + context_.SetWeak(this, WeakCallback, v8::WeakCallbackType::kParameter); + CreateProperties(); +} + +ShadowRealm::~ShadowRealm() { + while (HasCleanupHooks()) { + RunCleanup(); + } +} + +void ShadowRealm::MemoryInfo(MemoryTracker* tracker) const { + Realm::MemoryInfo(tracker); +} + +v8::Local ShadowRealm::context() const { + Local ctx = PersistentToLocal::Default(isolate_, context_); + DCHECK(!ctx.IsEmpty()); + return ctx; +} + +// V8 can not infer reference cycles between global persistent handles, e.g. +// the Realm's Context handle and the per-realm function handles. +// Attach the per-realm strong persistent values' lifetime to the context's +// global object to avoid the strong global references to the per-realm objects +// keep the context alive indefinitely. +#define V(PropertyName, TypeName) \ + v8::Local ShadowRealm::PropertyName() const { \ + return PersistentToLocal::Default(isolate_, PropertyName##_); \ + } \ + void ShadowRealm::set_##PropertyName(v8::Local value) { \ + HandleScope scope(isolate_); \ + PropertyName##_.Reset(isolate_, value); \ + v8::Local ctx = context(); \ + if (value.IsEmpty()) { \ + ctx->Global() \ + ->SetPrivate(ctx, \ + isolate_data()->per_realm_##PropertyName(), \ + v8::Undefined(isolate_)) \ + .ToChecked(); \ + } else { \ + PropertyName##_.SetWeak(); \ + ctx->Global() \ + ->SetPrivate(ctx, isolate_data()->per_realm_##PropertyName(), value) \ + .ToChecked(); \ + } \ + } +PER_REALM_STRONG_PERSISTENT_VALUES(V) +#undef V + +v8::MaybeLocal ShadowRealm::BootstrapRealm() { + EscapableHandleScope scope(isolate_); + MaybeLocal result = v8::True(isolate_); + + // Skip "internal/bootstrap/node" as it installs node globals and per-isolate + // callbacks like PrepareStackTraceCallback. + + if (!env_->no_browser_globals()) { + result = ExecuteBootstrapper("internal/bootstrap/web/exposed-wildcard"); + + if (result.IsEmpty()) { + return MaybeLocal(); + } + } + + return result; } } // namespace shadow_realm diff --git a/src/node_shadow_realm.h b/src/node_shadow_realm.h index a10fc425661f56..cc76cbacdc4842 100644 --- a/src/node_shadow_realm.h +++ b/src/node_shadow_realm.h @@ -3,11 +3,38 @@ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS +#include "node_realm.h" #include "v8.h" namespace node { namespace shadow_realm { +class ShadowRealm : public Realm { + public: + static ShadowRealm* New(Environment* env); + + SET_MEMORY_INFO_NAME(ShadowRealm) + SET_SELF_SIZE(ShadowRealm) + void MemoryInfo(MemoryTracker* tracker) const override; + + v8::Local context() const override; + +#define V(PropertyName, TypeName) \ + v8::Local PropertyName() const override; \ + void set_##PropertyName(v8::Local value) override; + PER_REALM_STRONG_PERSISTENT_VALUES(V) +#undef V + + protected: + v8::MaybeLocal BootstrapRealm() override; + + private: + static void WeakCallback(const v8::WeakCallbackInfo& data); + + explicit ShadowRealm(Environment* env); + ~ShadowRealm(); +}; + v8::MaybeLocal HostCreateShadowRealmContextCallback( v8::Local initiator_context); diff --git a/test/common/globals.js b/test/common/globals.js new file mode 100644 index 00000000000000..f18b358e657a55 --- /dev/null +++ b/test/common/globals.js @@ -0,0 +1,141 @@ +'use strict'; + +const intrinsics = new Set([ + 'Object', + 'Function', + 'Array', + 'Number', + 'parseFloat', + 'parseInt', + 'Infinity', + 'NaN', + 'undefined', + 'Boolean', + 'String', + 'Symbol', + 'Date', + 'Promise', + 'RegExp', + 'Error', + 'AggregateError', + 'EvalError', + 'RangeError', + 'ReferenceError', + 'SyntaxError', + 'TypeError', + 'URIError', + 'globalThis', + 'JSON', + 'Math', + 'Intl', + 'ArrayBuffer', + 'Uint8Array', + 'Int8Array', + 'Uint16Array', + 'Int16Array', + 'Uint32Array', + 'Int32Array', + 'Float32Array', + 'Float64Array', + 'Uint8ClampedArray', + 'BigUint64Array', + 'BigInt64Array', + 'DataView', + 'Map', + 'BigInt', + 'Set', + 'WeakMap', + 'WeakSet', + 'Proxy', + 'Reflect', + 'ShadowRealm', + 'FinalizationRegistry', + 'WeakRef', + 'decodeURI', + 'decodeURIComponent', + 'encodeURI', + 'encodeURIComponent', + 'escape', + 'unescape', + 'eval', + 'isFinite', + 'isNaN', + 'SharedArrayBuffer', + 'Atomics', + 'WebAssembly', +]); + +if (global.gc) { + intrinsics.add('gc'); +} + +// v8 exposes console in the global scope. +intrinsics.add('console'); + +const webIdlExposedWildcard = new Set([ + 'DOMException', + 'TextEncoder', + 'TextDecoder', + 'AbortController', + 'AbortSignal', + 'EventTarget', + 'Event', + 'URL', + 'URLSearchParams', + 'ReadableStream', + 'ReadableStreamDefaultReader', + 'ReadableStreamBYOBReader', + 'ReadableStreamBYOBRequest', + 'ReadableByteStreamController', + 'ReadableStreamDefaultController', + 'TransformStream', + 'TransformStreamDefaultController', + 'WritableStream', + 'WritableStreamDefaultWriter', + 'WritableStreamDefaultController', + 'ByteLengthQueuingStrategy', + 'CountQueuingStrategy', + 'TextEncoderStream', + 'TextDecoderStream', + 'CompressionStream', + 'DecompressionStream', +]); + +const webIdlExposedWindow = new Set([ + 'console', + 'BroadcastChannel', + 'queueMicrotask', + 'structuredClone', + 'MessageChannel', + 'MessagePort', + 'MessageEvent', + 'clearInterval', + 'clearTimeout', + 'setInterval', + 'setTimeout', + 'atob', + 'btoa', + 'Blob', + 'Performance', + 'performance', + 'fetch', + 'FormData', + 'Headers', + 'Request', + 'Response', +]); + +const nodeGlobals = new Set([ + 'process', + 'global', + 'Buffer', + 'clearImmediate', + 'setImmediate', +]); + +module.exports = { + intrinsics, + webIdlExposedWildcard, + webIdlExposedWindow, + nodeGlobals, +}; diff --git a/test/parallel/test-shadow-realm-gc.js b/test/parallel/test-shadow-realm-gc.js new file mode 100644 index 00000000000000..b640c6b8be3f1a --- /dev/null +++ b/test/parallel/test-shadow-realm-gc.js @@ -0,0 +1,12 @@ +// Flags: --experimental-shadow-realm --max-old-space-size=20 +'use strict'; + +/** + * Verifying ShadowRealm instances can be correctly garbage collected. + */ + +require('../common'); + +for (let i = 0; i < 1000; i++) { + new ShadowRealm(); +} diff --git a/test/parallel/test-shadow-realm-globals.js b/test/parallel/test-shadow-realm-globals.js new file mode 100644 index 00000000000000..8e0107597985ad --- /dev/null +++ b/test/parallel/test-shadow-realm-globals.js @@ -0,0 +1,27 @@ +// Flags: --experimental-shadow-realm +'use strict'; + +require('../common'); +const { intrinsics, webIdlExposedWildcard } = require('../common/globals'); +const assert = require('assert'); + +// Validates APIs exposed on the ShadowRealm globalThis. +const shadowRealm = new ShadowRealm(); +const itemsStr = shadowRealm.evaluate(` +(() => { + return Object.getOwnPropertyNames(globalThis).join(','); +})(); +`); +const items = itemsStr.split(','); +const leaks = []; +for (const item of items) { + if (intrinsics.has(item)) { + continue; + } + if (webIdlExposedWildcard.has(item)) { + continue; + } + leaks.push(item); +} + +assert.deepStrictEqual(leaks, []); diff --git a/test/pummel/test-heapdump-env.js b/test/pummel/test-heapdump-env.js index b6d4c3df280396..4c121b095fdb0c 100644 --- a/test/pummel/test-heapdump-env.js +++ b/test/pummel/test-heapdump-env.js @@ -17,7 +17,7 @@ validateSnapshotNodes('Node / Environment', [{ children: [ { node_name: 'Node / CleanupQueue', edge_name: 'cleanup_queue' }, { node_name: 'Node / IsolateData', edge_name: 'isolate_data' }, - { node_name: 'Node / Realm', edge_name: 'principal_realm' }, + { node_name: 'Node / PrincipalRealm', edge_name: 'principal_realm' }, ], }]); @@ -32,7 +32,7 @@ validateSnapshotNodes('Node / CleanupQueue', [ }, ]); -validateSnapshotNodes('Node / Realm', [{ +validateSnapshotNodes('Node / PrincipalRealm', [{ children: [ { node_name: 'process', edge_name: 'process_object' }, ], From 4fdaab845188433d0f78f149e26c3ed33fb14bf6 Mon Sep 17 00:00:00 2001 From: Stefan Stojanovic Date: Wed, 22 Mar 2023 11:54:49 +0100 Subject: [PATCH 003/131] test: skip broken tests win arm64 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47020 Reviewed-By: Richard Lau Reviewed-By: Michaël Zasso --- test/parallel/parallel.status | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 1cbcefb9712fae..927e972e9d89cd 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -14,6 +14,10 @@ test-crypto-keygen: PASS,FLAKY # https://github.com/nodejs/node/issues/41201 test-fs-rmdir-recursive: PASS, FLAKY +# Windows on ARM +[$system==win32 && $arch==arm64] +test-child-process-exec-cwd: SKIP + [$system==linux] # https://github.com/nodejs/node/issues/39368 test-domain-error-types: PASS,FLAKY From a84c2c5313446f554f8aa9a40ee0a41e54b45a6d Mon Sep 17 00:00:00 2001 From: Stefan Stojanovic Date: Mon, 27 Mar 2023 13:20:08 +0200 Subject: [PATCH 004/131] test: fix test-child-process-exec-cwd Refs: https://github.com/nodejs/node/pull/47020 Refs: https://github.com/nodejs/build/issues/3046 PR-URL: https://github.com/nodejs/node/pull/47235 Reviewed-By: Luigi Pinca Reviewed-By: Debadree Chatterjee --- test/parallel/parallel.status | 1 - test/parallel/test-child-process-exec-cwd.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 927e972e9d89cd..363cea8f65fb14 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -16,7 +16,6 @@ test-fs-rmdir-recursive: PASS, FLAKY # Windows on ARM [$system==win32 && $arch==arm64] -test-child-process-exec-cwd: SKIP [$system==linux] # https://github.com/nodejs/node/issues/39368 diff --git a/test/parallel/test-child-process-exec-cwd.js b/test/parallel/test-child-process-exec-cwd.js index 2f86cf10fe5e0f..49e56ef5511f8c 100644 --- a/test/parallel/test-child-process-exec-cwd.js +++ b/test/parallel/test-child-process-exec-cwd.js @@ -35,5 +35,5 @@ if (common.isWindows) { } exec(pwdcommand, { cwd: dir }, common.mustSucceed((stdout, stderr) => { - assert(stdout.startsWith(dir)); + assert(stdout.toLowerCase().startsWith(dir)); })); From 5ddd1c92e5f02b3c0d0765af91c43d6cf340fe44 Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Thu, 30 Mar 2023 13:13:00 +0530 Subject: [PATCH 005/131] deps: V8: cherry-pick cb30b8e17429 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: Fix compilation error in platform.h for ASAN The last two operands of the conditional expression needs to be of the same type to compile. Change-Id: Ib6cba4acb1238394910c650c776a7fd1ee93721e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4306802 Commit-Queue: Joyee Cheung Reviewed-by: Michael Lippautz Cr-Commit-Position: refs/heads/main@{#86235} Refs: https://github.com/v8/v8/commit/cb30b8e1742938dff0a24470f24d649b1664f0c2 Refs: https://github.com/nodejs/node/issues/43370 Signed-off-by: Darshan Sen PR-URL: https://github.com/nodejs/node/pull/47307 Reviewed-By: Michaël Zasso Reviewed-By: Jiawen Geng Reviewed-By: Richard Lau Reviewed-By: Colin Ihrig Reviewed-By: James M Snell --- common.gypi | 2 +- deps/v8/src/base/platform/platform.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common.gypi b/common.gypi index b1d87780db54c3..6f8518cc8e23a7 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.12', + 'v8_embedder_string': '-node.13', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/src/base/platform/platform.h b/deps/v8/src/base/platform/platform.h index 88d35540b1d34c..5ffc6e3b1d8efe 100644 --- a/deps/v8/src/base/platform/platform.h +++ b/deps/v8/src/base/platform/platform.h @@ -654,9 +654,9 @@ class V8_BASE_EXPORT Stack { constexpr size_t kAsanRealFrameOffsetBytes = 32; void* real_frame = __asan_addr_is_in_fake_stack( __asan_get_current_fake_stack(), slot, nullptr, nullptr); - return real_frame - ? (static_cast(real_frame) + kAsanRealFrameOffsetBytes) - : slot; + return real_frame ? StackSlot(static_cast(real_frame) + + kAsanRealFrameOffsetBytes) + : slot; #endif // V8_USE_ADDRESS_SANITIZER return slot; } From dc457a72c2e833fe9c568d202f0edb9372c6cc1f Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 17 Mar 2023 21:22:16 +0100 Subject: [PATCH 006/131] doc: rename the startup performance initiative to startup snapshot (#47111) The initiative has been more focused on startup snapshot integration which is more of a feature on its own, so rename it to "startup snapshot". Background: we are also considering adding a more generic performance initiative in https://github.com/nodejs/TSC/issues/1343. --- doc/contributing/strategic-initiatives.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/contributing/strategic-initiatives.md b/doc/contributing/strategic-initiatives.md index 76a4b44472e971..6369b26c43b490 100644 --- a/doc/contributing/strategic-initiatives.md +++ b/doc/contributing/strategic-initiatives.md @@ -11,7 +11,7 @@ agenda to ensure they are active and have the support they need. | Core Promise APIs | [Antoine du Hamel][aduh95] | | | QUIC / HTTP3 | [James M Snell][jasnell] | | | Shadow Realm | [Chengzhong Wu][legendecas] | | -| Startup performance | [Joyee Cheung][joyeecheung] | | +| Startup Snapshot | [Joyee Cheung][joyeecheung] | | | V8 Currency | [Michaël Zasso][targos] | | | Next-10 | [Michael Dawson][mhdawson] | | | Single executable apps | [Darshan Sen][RaisinTen] | | From 0bea595be3e8148c445ef9d9d77740f721513c5e Mon Sep 17 00:00:00 2001 From: Debadree Chatterjee Date: Sat, 18 Mar 2023 16:39:22 +0530 Subject: [PATCH 007/131] test: reduce flakiness of test-http-remove-header-stays-removed.js Refs: https://github.com/nodejs/reliability/issues/508 Refs: https://github.com/nodejs/node/pull/46333 PR-URL: https://github.com/nodejs/node/pull/46855 Reviewed-By: Matteo Collina --- test/parallel/test-http-remove-header-stays-removed.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/test/parallel/test-http-remove-header-stays-removed.js b/test/parallel/test-http-remove-header-stays-removed.js index 3885ebd905f758..6eba1799cd7d3f 100644 --- a/test/parallel/test-http-remove-header-stays-removed.js +++ b/test/parallel/test-http-remove-header-stays-removed.js @@ -20,7 +20,7 @@ // USE OR OTHER DEALINGS IN THE SOFTWARE. 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const http = require('http'); @@ -56,6 +56,14 @@ server.listen(0, function() { res.setEncoding('ascii'); res.on('data', function(chunk) { response += chunk; + if (response === 'beep boop\n') { + setTimeout(function() { + // The socket should be closed immediately, with no keep-alive, because + // no content-length or transfer-encoding are used: + assert.strictEqual(res.socket.closed, true); + server.close(); + }, common.platformTimeout(15)); + } }); }); }); From 32b98f58f253ac6bf3eb1b791db1c0e17e5badcd Mon Sep 17 00:00:00 2001 From: Julian Dax Date: Sat, 18 Mar 2023 14:13:37 +0100 Subject: [PATCH 008/131] doc: improve documentation for util.types.isNativeError() Makes clear what a native error is by linking the spec. Explains that `instanceof Error` and util.types.isNativeError() are not equivalent. Give examples for objects that are `instance of Error` but not native errors and vice versa. Recommends checking for both if one wants to find out if something is an error. PR-URL: https://github.com/nodejs/node/pull/46840 Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca Reviewed-By: Ruben Bridgewater --- doc/api/util.md | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/doc/api/util.md b/doc/api/util.md index 9add56bfaf40c9..8fe3870f693f67 100644 --- a/doc/api/util.md +++ b/doc/api/util.md @@ -2510,12 +2510,43 @@ added: v10.0.0 * `value` {any} * Returns: {boolean} -Returns `true` if the value is an instance of a built-in [`Error`][] type. +Returns `true` if the value was returned by the constructor of a +[built-in `Error` type][]. ```js -util.types.isNativeError(new Error()); // Returns true -util.types.isNativeError(new TypeError()); // Returns true -util.types.isNativeError(new RangeError()); // Returns true +console.log(util.types.isNativeError(new Error())); // true +console.log(util.types.isNativeError(new TypeError())); // true +console.log(util.types.isNativeError(new RangeError())); // true +``` + +Subclasses of the native error types are also native errors: + +```js +class MyError extends Error {} +console.log(util.types.isNativeError(new MyError())); // true +``` + +A value being `instanceof` a native error class is not equivalent to `isNativeError()` +returning `true` for that value. `isNativeError()` returns `true` for errors +which come from a different [realm][] while `instanceof Error` returns `false` +for these errors: + +```js +const vm = require('node:vm'); +const context = vm.createContext({}); +const myError = vm.runInContext('new Error', context); +console.log(util.types.isNativeError(myError)); // true +console.log(myError instanceof Error); // false +``` + +Conversely, `isNativeError()` returns `false` for all objects which were not +returned by the constructor of a native error. That includes values +which are `instanceof` native errors: + +```js +const myError = { __proto__: Error.prototype }; +console.log(util.types.isNativeError(myError)); // false +console.log(myError instanceof Error); // true ``` ### `util.types.isNumberObject(value)` @@ -3330,11 +3361,13 @@ util.log('Timestamped message.'); [`util.types.isNativeError()`]: #utiltypesisnativeerrorvalue [`util.types.isSharedArrayBuffer()`]: #utiltypesissharedarraybuffervalue [async function]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function +[built-in `Error` type]: https://tc39.es/ecma262/#sec-error-objects [compare function]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Parameters [constructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor [default sort]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort [global symbol registry]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for [list of deprecated APIS]: deprecations.md#list-of-deprecated-apis [pkgjs/parseargs]: https://github.com/pkgjs/parseargs +[realm]: https://tc39.es/ecma262/#realm [semantically incompatible]: https://github.com/nodejs/node/issues/4179 [util.inspect.custom]: #utilinspectcustom From 5938a52d8b2ec5e16e415e302f65fa650cc64adb Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sat, 18 Mar 2023 18:21:51 +0100 Subject: [PATCH 009/131] doc: clarify that `fs.create{Read,Write}Stream` support `AbortSignal` Refs: https://github.com/nodejs/node/pull/36431 PR-URL: https://github.com/nodejs/node/pull/47122 Reviewed-By: Yagiz Nizipli Reviewed-By: Debadree Chatterjee Reviewed-By: Luigi Pinca --- doc/api/fs.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/doc/api/fs.md b/doc/api/fs.md index 4070cc4955309a..63c3c0b9d69f86 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -2331,6 +2331,9 @@ changes: - version: v16.10.0 pr-url: https://github.com/nodejs/node/pull/40013 description: The `fs` option does not need `close` method if `autoClose` is `false`. + - version: v15.5.0 + pr-url: https://github.com/nodejs/node/pull/36431 + description: Add support for `AbortSignal`. - version: - v15.4.0 pr-url: https://github.com/nodejs/node/pull/35922 @@ -2377,6 +2380,7 @@ changes: * `end` {integer} **Default:** `Infinity` * `highWaterMark` {integer} **Default:** `64 * 1024` * `fs` {Object|null} **Default:** `null` + * `signal` {AbortSignal|null} **Default:** `null` * Returns: {fs.ReadStream} Unlike the 16 KiB default `highWaterMark` for a {stream.Readable}, the stream @@ -2456,6 +2460,9 @@ changes: - version: v16.10.0 pr-url: https://github.com/nodejs/node/pull/40013 description: The `fs` option does not need `close` method if `autoClose` is `false`. + - version: v15.5.0 + pr-url: https://github.com/nodejs/node/pull/36431 + description: Add support for `AbortSignal`. - version: - v15.4.0 pr-url: https://github.com/nodejs/node/pull/35922 @@ -2498,6 +2505,7 @@ changes: * `emitClose` {boolean} **Default:** `true` * `start` {integer} * `fs` {Object|null} **Default:** `null` + * `signal` {AbortSignal|null} **Default:** `null` * Returns: {fs.WriteStream} `options` may also include a `start` option to allow writing data at some From 306d2308bffa5a0ba52b7baaff7aac7aeb677f77 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Sun, 19 Mar 2023 04:25:35 +0100 Subject: [PATCH 010/131] url: allow extension of user provided URL objects PR-URL: https://github.com/nodejs/node/pull/46989 Fixes: https://github.com/nodejs/node/issues/46981 Reviewed-By: Yagiz Nizipli --- doc/api/url.md | 5 +++ lib/internal/url.js | 32 +++++++++++-------- .../test-http-client-request-options.js | 27 ++++++++++++++++ 3 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 test/parallel/test-http-client-request-options.js diff --git a/doc/api/url.md b/doc/api/url.md index 593c6ce6a22bc9..ab8b4154ff023e 100644 --- a/doc/api/url.md +++ b/doc/api/url.md @@ -1226,6 +1226,11 @@ pathToFileURL('/some/path%.c'); // Correct: file:///some/path%25.c (POSI added: - v15.7.0 - v14.18.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/46989 + description: The returned object will also contain all the own enumerable + properties of the `url` argument. --> * `url` {URL} The [WHATWG URL][] object to convert to an options object. diff --git a/lib/internal/url.js b/lib/internal/url.js index d57bbac97aa3ba..948834eb88da4f 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -1140,26 +1140,32 @@ function domainToUnicode(domain) { return _domainToUnicode(`${domain}`); } -// Utility function that converts a URL object into an ordinary -// options object as expected by the http.request and https.request -// APIs. +/** + * Utility function that converts a URL object into an ordinary options object + * as expected by the `http.request` and `https.request` APIs. + * @param {URL} url + * @returns {Record} + */ function urlToHttpOptions(url) { + const { hostname, pathname, port, username, password, search } = url; const options = { + __proto__: null, + ...url, // In case the url object was extended by the user. protocol: url.protocol, - hostname: url.hostname && StringPrototypeStartsWith(url.hostname, '[') ? - StringPrototypeSlice(url.hostname, 1, -1) : - url.hostname, + hostname: hostname && StringPrototypeStartsWith(hostname, '[') ? + StringPrototypeSlice(hostname, 1, -1) : + hostname, hash: url.hash, - search: url.search, - pathname: url.pathname, - path: `${url.pathname || ''}${url.search || ''}`, + search: search, + pathname: pathname, + path: `${pathname || ''}${search || ''}`, href: url.href, }; - if (url.port !== '') { - options.port = Number(url.port); + if (port !== '') { + options.port = Number(port); } - if (url.username || url.password) { - options.auth = `${decodeURIComponent(url.username)}:${decodeURIComponent(url.password)}`; + if (username || password) { + options.auth = `${decodeURIComponent(username)}:${decodeURIComponent(password)}`; } return options; } diff --git a/test/parallel/test-http-client-request-options.js b/test/parallel/test-http-client-request-options.js new file mode 100644 index 00000000000000..e642ef4fa94d01 --- /dev/null +++ b/test/parallel/test-http-client-request-options.js @@ -0,0 +1,27 @@ +'use strict'; + +const common = require('../common'); +const assert = require('node:assert'); +const http = require('node:http'); + +const headers = { foo: 'Bar' }; +const server = http.createServer(common.mustCall((req, res) => { + assert.strictEqual(req.url, '/ping?q=term'); + assert.strictEqual(req.headers?.foo, headers.foo); + req.resume(); + req.on('end', () => { + res.writeHead(200); + res.end('pong'); + }); +})); + +server.listen(0, common.localhostIPv4, () => { + const { address, port } = server.address(); + const url = new URL(`http://${address}:${port}/ping?q=term`); + url.headers = headers; + const clientReq = http.request(url); + clientReq.on('close', common.mustCall(() => { + server.close(); + })); + clientReq.end(); +}); From 445e942c5ebb89485fe841b64d48871691826755 Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sun, 19 Mar 2023 07:33:44 +0000 Subject: [PATCH 011/131] test,crypto: update WebCryptoAPI WPT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47131 Reviewed-By: Tobias Nießen Reviewed-By: Luigi Pinca --- test/fixtures/wpt/README.md | 2 +- .../derive_bits_keys/cfrg_curves_bits.js | 47 +++++++++++++++++++ .../derive_bits_keys/cfrg_curves_keys.js | 14 ++++++ .../import_export/okp_importKey_failures.js | 2 +- ...kp_importKey_failures_Ed25519.https.any.js | 8 ++++ .../okp_importKey_failures_Ed448.https.any.js | 8 ++++ ...okp_importKey_failures_X25519.https.any.js | 8 ++++ .../okp_importKey_failures_X448.https.any.js | 8 ++++ test/fixtures/wpt/versions.json | 2 +- 9 files changed, 96 insertions(+), 3 deletions(-) diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 8919af5a7c484c..0a19086a73c220 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -31,7 +31,7 @@ Last update: - user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/d8dbe6990b/wasm/jsapi - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi -- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/ee30029d47/WebCryptoAPI +- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/1406b5c0d0/WebCryptoAPI - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/e97fac4791/webmessaging/broadcastchannel diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js index 9a824ce9514b60..463f687f1652e4 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js @@ -23,6 +23,53 @@ function define_tests() { "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) }; + var kSmallOrderPoint = { + "X25519": [ + { order: "0", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "8", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 224, 235, 122, 124, 59, 65, 184, 174, 22, 86, 227, 250, 241, 159, 196, 106, 218, 9, 141, 235, 156, 50, 177, 253, 134, 98, 5, 22, 95, 73, 184, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + ], + "X448": [ + { order: "0", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + ] + }; + + // Verify the derive functions perform checks against the all-zero value results, + // ensuring small-order points are rejected. + // https://www.rfc-editor.org/rfc/rfc7748#section-6.1 + // TODO: The spec states that the check must be done on use, but there is discussion about doing it on import. + // https://github.com/WICG/webcrypto-secure-curves/pull/13 + Object.keys(kSmallOrderPoint).forEach(function(algorithmName) { + kSmallOrderPoint[algorithmName].forEach(function(test) { + promise_test(async() => { + let derived; + let privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], + {name: algorithmName}, + false, ["deriveBits", "deriveKey"]); + let publicKey = await subtle.importKey("spki", test.vector, + {name: algorithmName}, + false, []) + try { + derived = await subtle.deriveKey({name: algorithmName, public: publicKey}, privateKey, + {name: "HMAC", hash: "SHA-256", length: 256}, true, + ["sign", "verify"]); + } catch (err) { + assert_false(privateKey === undefined, "Private key should be valid."); + assert_false(publicKey === undefined, "Public key should be valid."); + assert_equals(err.name, "OperationError", "Should throw correct error, not " + err.name + ": " + err.message + "."); + } + assert_equals(derived, undefined, "Operation succeeded, but should not have."); + }, algorithmName + " key derivation checks for all-zero value result with a key of order " + test.order); + }); + }); + return importKeys(pkcs8, spki, sizes) .then(function(results) { publicKeys = results.publicKeys; diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js index 1e8e9d48d394ad..3c53697ce3c49b 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js @@ -23,6 +23,20 @@ function define_tests() { "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) }; + // Ensure the keys generated by each algorithm are valid for key derivation. + Object.keys(sizes).forEach(function(algorithmName) { + promise_test(async() => { + let derived; + try { + let key = await subtle.generateKey({name: algorithmName}, true, ["deriveKey", "deriveBits"]); + derived = await subtle.deriveKey({name: algorithmName, public: key.publicKey}, key.privateKey, {name: "HMAC", hash: "SHA-256", length: 256}, true, ["sign", "verify"]); + } catch (err) { + assert_unreached("Threw an unexpected error: " + err.toString() + " -"); + } + assert_false (derived === undefined, "Key derivation failed."); + }, "Key derivation using a " + algorithmName + " generated keys."); + }); + return importKeys(pkcs8, spki, sizes) .then(function(results) { publicKeys = results.publicKeys; diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js index 4e2d717595127b..a5cc08a01e9fc1 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures.js @@ -99,7 +99,7 @@ function run_test(algorithmNames) { } function validUsages(usages, format, data) { - if (format === 'spki') return usages.publicUsages + if (format === 'spki' || format === 'raw') return usages.publicUsages if (format === 'pkcs8') return usages.privateUsages if (format === 'jwk') { if (data === undefined) diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js index 7d6ec6171c3e8f..7453a3a55052b3 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed25519.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32, 243, 200, 244, 196, 141, 248, 120, 20, 110, 140, 211, 191, 109, 244, 229, 14, 56, 155, 167, 7, 78, 21, 194, 53, 45, 205, 93, 48, 141, 76, 168, 31]) }, + { + format: "raw", + data: new Uint8Array([216, 225, 137, 99, 216, 9, 212, 135, 217, 84, 154, 204, 174, 198, 116, 46, 126, 235, 162, 77, 138, 13, 59, 20, 183, 227, 202, 234, 6, 137, 61, 204]) + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 112, 4, 34, 4, 32, 243, 200, 244, 196, 141, 248, 120, 20, 110, 140, 211, 191, 109, 244, 229, 14, 56, 155, 167, 7, 78, 21, 194, 53, 45, 205, 93, 48, 141, 76, 168]) }, + { + format: "raw", + data: new Uint8Array([216, 225, 137, 99, 216, 9, 212, 135, 217, 84, 154, 204, 174, 198, 116, 46, 126, 235, 162, 77, 138, 13, 59, 20, 183, 227, 202, 234, 6, 137, 61]) + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js index 1035800fafa394..db2d47827af329 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_Ed448.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 71, 2, 1, 0, 48, 5, 6, 3, 43, 101, 113, 4, 59, 4, 57, 14, 255, 3, 69, 140, 40, 224, 23, 156, 82, 29, 227, 18, 201, 105, 183, 131, 67, 72, 236, 171, 153, 26, 96, 227, 178, 233, 167, 158, 76, 217, 228, 128, 239, 41, 23, 18, 210, 200, 61, 4, 114, 114, 213, 201, 244, 40, 102, 79, 105, 109, 38, 112, 69, 143, 29, 46]), }, + { + format: "raw", + data: new Uint8Array([171, 75, 184, 133, 253, 125, 44, 90, 242, 78, 131, 113, 12, 255, 160, 199, 74, 87, 226, 116, 128, 29, 178, 5, 123, 11, 220, 94, 160, 50, 182, 254, 107, 199, 139, 128, 69, 54, 90, 235, 38, 232, 110, 31, 20, 253, 52, 157, 7, 196, 132, 149, 245, 164, 106, 90, 128]), + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 71, 2, 1, 0, 48, 5, 6, 3, 43, 101, 113, 4, 59, 4, 57, 14, 255, 3, 69, 140, 40, 224, 23, 156, 82, 29, 227, 18, 201, 105, 183, 131, 67, 72, 236, 171, 153, 26, 96, 227, 178, 233, 167, 158, 76, 217, 228, 128, 239, 41, 23, 18, 210, 200, 61, 4, 114, 114, 213, 201, 244, 40, 102, 79, 105, 109, 38, 112, 69, 143, 29]), }, + { + format: "raw", + data: new Uint8Array([171, 75, 184, 133, 253, 125, 44, 90, 242, 78, 131, 113, 12, 255, 160, 199, 74, 87, 226, 116, 128, 29, 178, 5, 123, 11, 220, 94, 160, 50, 182, 254, 107, 199, 139, 128, 69, 54, 90, 235, 38, 232, 110, 31, 20, 253, 52, 157, 7, 196, 132, 149, 245, 164, 106, 90]), + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js index fe5fd54da53d2d..d4d099f7656033 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X25519.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), }, + { + format: "raw", + data: new Uint8Array([28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255]), }, + { + format: "raw", + data: new Uint8Array([28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151]), + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js index 9e3b05c48ad55f..d8ac902e672566 100644 --- a/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/import_export/okp_importKey_failures_X448.https.any.js @@ -15,6 +15,10 @@ var validKeyData = [ format: "pkcs8", data: new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]), }, + { + format: "raw", + data: new Uint8Array([182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]), + }, { format: "jwk", data: { @@ -44,6 +48,10 @@ var badKeyLengthData = [ format: "pkcs8", data: new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146]), }, + { + format: "raw", + data: new Uint8Array([182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206]), + }, { format: "jwk", data: { diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 5b907c709a9bed..8699b783b1423f 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -84,7 +84,7 @@ "path": "wasm/webapi" }, "WebCryptoAPI": { - "commit": "ee30029d47cf9f7cf8f71fe851b4c29903edf851", + "commit": "1406b5c0d07b5e8dd08e328c451e42c23f3b96c8", "path": "WebCryptoAPI" }, "webidl/ecmascript-binding/es-exceptions": { From d47b54509387aff62daed435bc23a6fdc66d5059 Mon Sep 17 00:00:00 2001 From: Cheng Zhao Date: Sun, 19 Mar 2023 18:25:47 +0900 Subject: [PATCH 012/131] deps: cherry-pick win/arm64/clang fixes Refs: ngtcp2/nghttp3#112 Refs: ngtcp2/ngtcp2#692 Refs: HdrHistogram/HdrHistogram_c#114 PR-URL: https://github.com/nodejs/node/pull/47011 Refs: https://github.com/ngtcp2/nghttp3/pull/112 Refs: https://github.com/ngtcp2/ngtcp2/pull/692 Refs: https://github.com/HdrHistogram/HdrHistogram_c/pull/114 Reviewed-By: Jiawen Geng --- deps/histogram/src/hdr_atomic.h | 2 +- deps/histogram/src/hdr_histogram.c | 4 ++-- deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c | 2 +- deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps/histogram/src/hdr_atomic.h b/deps/histogram/src/hdr_atomic.h index ae1056a83612af..11b0cbd3facfdc 100644 --- a/deps/histogram/src/hdr_atomic.h +++ b/deps/histogram/src/hdr_atomic.h @@ -8,7 +8,7 @@ #define HDR_ATOMIC_H__ -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !(defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))) #include #include diff --git a/deps/histogram/src/hdr_histogram.c b/deps/histogram/src/hdr_histogram.c index 4bcfbeb049bf59..0132cbeba7c84e 100644 --- a/deps/histogram/src/hdr_histogram.c +++ b/deps/histogram/src/hdr_histogram.c @@ -127,7 +127,7 @@ static int64_t power(int64_t base, int64_t exp) return result; } -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !(defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))) # if defined(_WIN64) # pragma intrinsic(_BitScanReverse64) # else @@ -137,7 +137,7 @@ static int64_t power(int64_t base, int64_t exp) static int32_t count_leading_zeros_64(int64_t value) { -#if defined(_MSC_VER) +#if defined(_MSC_VER) && !(defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))) uint32_t leading_zero = 0; #if defined(_WIN64) _BitScanReverse64(&leading_zero, value); diff --git a/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c b/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c index 9ea91c81c8a1b9..5e7775f1a5a597 100644 --- a/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c +++ b/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c @@ -33,7 +33,7 @@ #include "nghttp3_macro.h" -#if defined(_MSC_VER) && defined(_M_ARM64) +#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64)) unsigned int __popcnt(unsigned int x) { unsigned int c = 0; for (; x; ++c) { diff --git a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c index a6b3f73e73339c..74e488bce76f24 100644 --- a/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c +++ b/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c @@ -31,7 +31,7 @@ #include "ngtcp2_macro.h" -#if defined(_MSC_VER) && defined(_M_ARM64) +#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64)) unsigned int __popcnt(unsigned int x) { unsigned int c = 0; for (; x; ++c) { From 596e04afb9e9c446ddef847f7eeeca07eda94c75 Mon Sep 17 00:00:00 2001 From: Khafra Date: Sun, 19 Mar 2023 08:58:19 -0400 Subject: [PATCH 013/131] events: add getMaxListeners method PR-URL: https://github.com/nodejs/node/pull/47039 Reviewed-By: Debadree Chatterjee Reviewed-By: Benjamin Gruenbaum --- doc/api/events.md | 52 ++++++++++++++++++++ lib/events.js | 18 +++++++ test/parallel/test-events-getmaxlisteners.js | 19 +++++++ 3 files changed, 89 insertions(+) create mode 100644 test/parallel/test-events-getmaxlisteners.js diff --git a/doc/api/events.md b/doc/api/events.md index 6f009d6bc7d4cd..f5a17224693360 100644 --- a/doc/api/events.md +++ b/doc/api/events.md @@ -1266,6 +1266,58 @@ const { getEventListeners, EventEmitter } = require('node:events'); } ``` +## `events.getMaxListeners(emitterOrTarget)` + + + +* `emitterOrTarget` {EventEmitter|EventTarget} +* Returns: {number} + +Returns the currently set max amount of listeners. + +For `EventEmitter`s this behaves exactly the same as calling `.getMaxListeners` on +the emitter. + +For `EventTarget`s this is the only way to get the max event listeners for the +event target. If the number of event handlers on a single EventTarget exceeds +the max set, the EventTarget will print a warning. + +```mjs +import { getMaxListeners, setMaxListeners, EventEmitter } from 'node:events'; + +{ + const ee = new EventEmitter(); + console.log(getMaxListeners(ee)); // 10 + setMaxListeners(11, ee); + console.log(getMaxListeners(ee)); // 11 +} +{ + const et = new EventTarget(); + console.log(getMaxListeners(et)); // 10 + setMaxListeners(11, et); + console.log(getMaxListeners(et)); // 11 +} +``` + +```cjs +const { getMaxListeners, setMaxListeners, EventEmitter } = require('node:events'); + +{ + const ee = new EventEmitter(); + console.log(getMaxListeners(ee)); // 10 + setMaxListeners(11, ee); + console.log(getMaxListeners(ee)); // 11 +} +{ + const et = new EventTarget(); + console.log(getMaxListeners(et)); // 10 + setMaxListeners(11, et); + console.log(getMaxListeners(et)); // 11 +} +``` + ## `events.once(emitter, name[, options])` * [aduh95](https://github.com/aduh95) - @@ -205,28 +207,39 @@ For information about the governance of the Node.js project, see * [Trott](https://github.com/Trott) - **Rich Trott** <> (he/him) -
- -Emeriti - -### TSC emeriti +#### TSC regular members * [addaleax](https://github.com/addaleax) - **Anna Henningsen** <> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <> -* [chrisdickinson](https://github.com/chrisdickinson) - - **Chris Dickinson** <> * [codebytere](https://github.com/codebytere) - **Shelley Vohr** <> (she/her) * [danbev](https://github.com/danbev) - **Daniel Bevenius** <> (he/him) +* [gabrielschulhof](https://github.com/gabrielschulhof) - + **Gabriel Schulhof** <> +* [mscdex](https://github.com/mscdex) - + **Brian White** <> +* [MylesBorins](https://github.com/MylesBorins) - + **Myles Borins** <> (he/him) +* [rvagg](https://github.com/rvagg) - + **Rod Vagg** <> +* [TimothyGu](https://github.com/TimothyGu) - + **Tiancheng "Timothy" Gu** <> (he/him) + +
+ +TSC emeriti members + +#### TSC emeriti members + +* [chrisdickinson](https://github.com/chrisdickinson) - + **Chris Dickinson** <> * [evanlucas](https://github.com/evanlucas) - **Evan Lucas** <> (he/him) * [Fishrock123](https://github.com/Fishrock123) - **Jeremiah Senkpiel** <> (he/they) -* [gabrielschulhof](https://github.com/gabrielschulhof) - - **Gabriel Schulhof** <> * [gibfahn](https://github.com/gibfahn) - **Gibson Fahnestock** <> (he/him) * [indutny](https://github.com/indutny) - @@ -237,10 +250,6 @@ For information about the governance of the Node.js project, see **Josh Gavant** <> * [mmarchini](https://github.com/mmarchini) - **Mary Marchini** <> (she/her) -* [mscdex](https://github.com/mscdex) - - **Brian White** <> -* [MylesBorins](https://github.com/MylesBorins) - - **Myles Borins** <> (he/him) * [nebrius](https://github.com/nebrius) - **Bryan Hughes** <> * [ofrobots](https://github.com/ofrobots) - @@ -249,16 +258,12 @@ For information about the governance of the Node.js project, see **Alexis Campailla** <> * [piscisaureus](https://github.com/piscisaureus) - **Bert Belder** <> -* [rvagg](https://github.com/rvagg) - - **Rod Vagg** <> * [sam-github](https://github.com/sam-github) - **Sam Roberts** <> * [shigeki](https://github.com/shigeki) - **Shigeki Ohtsu** <> (he/him) * [thefourtheye](https://github.com/thefourtheye) - **Sakthipriyan Vairamani** <> (he/him) -* [TimothyGu](https://github.com/TimothyGu) - - **Tiancheng "Timothy" Gu** <> (he/him) * [trevnorris](https://github.com/trevnorris) - **Trevor Norris** <> diff --git a/tools/find-inactive-tsc.mjs b/tools/find-inactive-tsc.mjs index 2d4b71ad5b7430..52cba2d2d8f3db 100755 --- a/tools/find-inactive-tsc.mjs +++ b/tools/find-inactive-tsc.mjs @@ -1,12 +1,10 @@ #!/usr/bin/env node -// Identify inactive TSC members. +// Identify inactive TSC voting members. // From the TSC Charter: -// A TSC member is automatically removed from the TSC if, during a 3-month -// period, all of the following are true: -// * They attend fewer than 25% of the regularly scheduled meetings. -// * They do not participate in any TSC votes. +// A TSC voting member is automatically converted to a TSC regular member if +// they do not participate in three consecutive TSC votes. import cp from 'node:child_process'; import fs from 'node:fs'; @@ -20,9 +18,8 @@ const args = parseArgs({ }); const verbose = args.values.verbose; -const SINCE = args.positionals[0] || '3 months ago'; -async function runGitCommand(cmd, options = {}) { +async function runShellCommand(cmd, options = {}) { const childProcess = cp.spawn('/bin/sh', ['-c', cmd], { cwd: options.cwd ?? new URL('..', import.meta.url), encoding: 'utf8', @@ -34,17 +31,14 @@ async function runGitCommand(cmd, options = {}) { const errorHandler = new Promise( (_, reject) => childProcess.on('error', reject), ); - let returnValue = options.mapFn ? new Set() : ''; + let returnValue = options.returnAsArray ? [] : ''; await Promise.race([errorHandler, Promise.resolve()]); // If no mapFn, return the value. If there is a mapFn, use it to make a Set to // return. for await (const line of lines) { await Promise.race([errorHandler, Promise.resolve()]); - if (options.mapFn) { - const val = options.mapFn(line); - if (val) { - returnValue.add(val); - } + if (options.returnAsArray) { + returnValue.push(line); } else { returnValue += line; } @@ -60,6 +54,13 @@ async function getTscFromReadme() { const returnedArray = []; let foundTscHeading = false; for await (const line of readmeText) { + // Until three votes have passed from March 16, 2023, we will need this. + // After that point, we can use this for setting `foundTscHeading` below + // and remove this. + if (line === '#### TSC voting members') { + continue; + } + // If we've found the TSC heading already, stop processing at the next // heading. if (foundTscHeading && line.startsWith('#')) { @@ -84,36 +85,6 @@ async function getTscFromReadme() { return returnedArray; } -async function getAttendance(tscMembers, meetings) { - const attendance = {}; - for (const member of tscMembers) { - attendance[member] = 0; - } - for (const meeting of meetings) { - // Get the file contents. - const meetingFile = - await fs.promises.readFile(path.join('.tmp', meeting), 'utf8'); - // Extract the attendee list. - const startMarker = '## Present'; - const start = meetingFile.indexOf(startMarker) + startMarker.length; - const end = meetingFile.indexOf('## Agenda'); - meetingFile.substring(start, end).trim().split('\n') - .map((line) => { - const match = line.match(/@(\S+)/); - if (match) { - return match[1]; - } - // Using `console.warn` so that stdout output is not generated. - // The stdout output is consumed in find-inactive-tsc.yml. - console.warn(`Attendee entry does not contain GitHub handle: ${line}`); - return ''; - }) - .filter((handle) => tscMembers.includes(handle)) - .forEach((handle) => { attendance[handle]++; }); - } - return attendance; -} - async function getVotingRecords(tscMembers, votes) { const votingRecords = {}; for (const member of tscMembers) { @@ -122,7 +93,7 @@ async function getVotingRecords(tscMembers, votes) { for (const vote of votes) { // Get the vote data. const voteData = JSON.parse( - await fs.promises.readFile(path.join('.tmp', vote), 'utf8'), + await fs.promises.readFile(path.join('.tmp/votes', vote), 'utf8'), ); for (const member in voteData.votes) { if (tscMembers.includes(member)) { @@ -133,22 +104,22 @@ async function getVotingRecords(tscMembers, votes) { return votingRecords; } -async function moveTscToEmeritus(peopleToMove) { +async function moveVotingToRegular(peopleToMove) { const readmeText = readline.createInterface({ input: fs.createReadStream(new URL('../README.md', import.meta.url)), crlfDelay: Infinity, }); let fileContents = ''; - let inTscSection = false; - let inTscEmeritusSection = false; + let inTscVotingSection = false; + let inTscRegularSection = false; let memberFirstLine = ''; const textToMove = []; let moveToInactive = false; for await (const line of readmeText) { - // If we've been processing TSC emeriti and we reach the end of + // If we've been processing TSC regular members and we reach the end of // the list, print out the remaining entries to be moved because they come // alphabetically after the last item. - if (inTscEmeritusSection && line === '' && + if (inTscRegularSection && line === '' && fileContents.endsWith('>\n')) { while (textToMove.length) { fileContents += textToMove.pop(); @@ -158,21 +129,21 @@ async function moveTscToEmeritus(peopleToMove) { // If we've found the TSC heading already, stop processing at the // next heading. if (line.startsWith('#')) { - inTscSection = false; - inTscEmeritusSection = false; + inTscVotingSection = false; + inTscRegularSection = false; } - const isTsc = inTscSection && line.length; - const isTscEmeritus = inTscEmeritusSection && line.length; + const isTscVoting = inTscVotingSection && line.length; + const isTscRegular = inTscRegularSection && line.length; - if (line === '### TSC (Technical Steering Committee)') { - inTscSection = true; + if (line === '#### TSC voting members') { + inTscVotingSection = true; } - if (line === '### TSC emeriti') { - inTscEmeritusSection = true; + if (line === '#### TSC regular members') { + inTscRegularSection = true; } - if (isTsc) { + if (isTscVoting) { if (line.startsWith('* ')) { memberFirstLine = line; const match = line.match(/^\* \[([^\]]+)/); @@ -191,7 +162,7 @@ async function moveTscToEmeritus(peopleToMove) { } } - if (isTscEmeritus) { + if (isTscRegular) { if (line.startsWith('* ')) { memberFirstLine = line; } else if (line.startsWith(' **')) { @@ -207,7 +178,7 @@ async function moveTscToEmeritus(peopleToMove) { } } - if (!isTsc && !isTscEmeritus) { + if (!isTscVoting && !isTscRegular) { fileContents += `${line}\n`; } } @@ -215,71 +186,54 @@ async function moveTscToEmeritus(peopleToMove) { return fileContents; } -// Get current TSC members, then get TSC members at start of period. Only check -// TSC members who are on both lists. This way, we don't flag someone who has -// only been on the TSC for a week and therefore hasn't attended any meetings. +// Get current TSC voting members, then get TSC voting members at start of +// period. Only check TSC voting members who are on both lists. This way, we +// don't flag someone who hasn't been on the TSC long enough to have missed 3 +// consecutive votes. const tscMembersAtEnd = await getTscFromReadme(); -const startCommit = await runGitCommand(`git rev-list -1 --before '${SINCE}' HEAD`); -await runGitCommand(`git checkout ${startCommit} -- README.md`); -const tscMembersAtStart = await getTscFromReadme(); -await runGitCommand('git reset HEAD README.md'); -await runGitCommand('git checkout -- README.md'); - -const tscMembers = tscMembersAtEnd.filter( - (memberAtEnd) => tscMembersAtStart.includes(memberAtEnd), -); - -// Get all meetings since SINCE. +// Get the last three votes. // Assumes that the TSC repo is cloned in the .tmp dir. -const meetings = await runGitCommand( - `git whatchanged --since '${SINCE}' --name-only --pretty=format: meetings`, - { cwd: '.tmp', mapFn: (line) => line }, +const votes = await runShellCommand( + 'ls *.json | sort -rn | head -3', + { cwd: '.tmp/votes', returnAsArray: true }, ); -// Get TSC meeting attendance. -const attendance = await getAttendance(tscMembers, meetings); -const lightAttendance = tscMembers.filter( - (member) => attendance[member] < meetings.size * 0.25, -); +// Reverse the votes list so the oldest of the three votes is first. +votes.reverse(); -// Get all votes since SINCE. -// Assumes that the TSC repo is cloned in the .tmp dir. -const votes = await runGitCommand( - `git whatchanged --since '${SINCE}' --name-only --pretty=format: votes/*.json`, - { cwd: '.tmp', mapFn: (line) => line }, +const startCommit = await runShellCommand(`git rev-list -1 --before '${votes[0]}' HEAD`); +await runShellCommand(`git checkout ${startCommit} -- README.md`); +const tscMembersAtStart = await getTscFromReadme(); +await runShellCommand('git reset HEAD README.md'); +await runShellCommand('git checkout -- README.md'); + +const tscMembers = tscMembersAtEnd.filter( + (memberAtEnd) => tscMembersAtStart.includes(memberAtEnd), ); // Check voting record. const votingRecords = await getVotingRecords(tscMembers, votes); -const noVotes = tscMembers.filter( +const inactive = tscMembers.filter( (member) => votingRecords[member] === 0, ); -const inactive = lightAttendance.filter((member) => noVotes.includes(member)); - if (inactive.length) { // The stdout output is consumed in find-inactive-tsc.yml. If format of output // changes, find-inactive-tsc.yml may need to be updated. console.log(`INACTIVE_TSC_HANDLES=${inactive.map((entry) => '@' + entry).join(' ')}`); - const commitDetails = inactive.map((entry) => { - let details = `Since ${SINCE}, `; - details += `${entry} attended ${attendance[entry]} out of ${meetings.size} meetings`; - details += ` and voted in ${votingRecords[entry]} of ${votes.size} votes.`; - return details; - }); - console.log(`DETAILS_FOR_COMMIT_BODY=${commitDetails.join(' ')}`); + const commitDetails = `${inactive.join(' ')} did not participate in three consecutive TSC votes: ${votes.join(' ')}`; + console.log(`DETAILS_FOR_COMMIT_BODY=${commitDetails}`); if (process.env.GITHUB_ACTIONS) { // Using console.warn() to avoid messing with find-inactive-tsc which // consumes stdout. console.warn('Generating new README.md file...'); - const newReadmeText = await moveTscToEmeritus(inactive); + const newReadmeText = await moveVotingToRegular(inactive); fs.writeFileSync(new URL('../README.md', import.meta.url), newReadmeText); } } if (verbose) { - console.log(attendance); console.log(votingRecords); } From e8102453972efa74c5e19661a4d964344fb6faa7 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 16 Mar 2023 11:00:31 -0700 Subject: [PATCH 018/131] doc: update collaborator guide to reflect TSC changes Ref: https://github.com/nodejs/TSC/pull/1350 PR-URL: https://github.com/nodejs/node/pull/47126 Refs: https://github.com/nodejs/TSC/pull/1350 Reviewed-By: Antoine du Hamel Reviewed-By: Darshan Sen --- doc/contributing/collaborator-guide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/contributing/collaborator-guide.md b/doc/contributing/collaborator-guide.md index 2670915c7abd79..84c5ea7396ce21 100644 --- a/doc/contributing/collaborator-guide.md +++ b/doc/contributing/collaborator-guide.md @@ -340,8 +340,8 @@ For undocumented APIs that are public, open a pull request documenting the API. ### Breaking changes -At least two TSC members must approve backward-incompatible changes to the -`main` branch. +At least two TSC voting members must approve backward-incompatible changes to +the `main` branch. Examples of breaking changes include: @@ -411,7 +411,7 @@ possible to avoid confusion and typosquatting attacks. For pull requests introducing new core modules: * Allow at least one week for review. -* Land only after sign-off from at least two TSC members. +* Land only after sign-off from at least two TSC voting members. * Land with a [Stability Index][] of Experimental. The module must remain Experimental until a semver-major release. @@ -742,7 +742,7 @@ git push upstream main ### I made a mistake -* Ping a TSC member. +* Ping a TSC voting member. * With `git`, there's a way to override remote trees by force pushing (`git push -f`). This is generally forbidden as it creates conflicts in other people's forks. It is permissible for simpler slip-ups such as typos in commit From 7195f23a4733da5afadb20be2292b6b6071f806c Mon Sep 17 00:00:00 2001 From: Chengzhong Wu Date: Mon, 20 Mar 2023 17:58:31 +0800 Subject: [PATCH 019/131] node-api: document node-api shutdown finalization As status quo, the cleanup hooks are invoked before the `napi_finalize` callbacks at the exit of Node.js environments. This gives addons a chance to release their resource in a proper order manually. Document this behavior explicitly to advocate the usage on cleanup hooks instead of relying on the implied invocation of `napi_finalize` callbacks at shutdown. PR-URL: https://github.com/nodejs/node/pull/45903 Fixes: https://github.com/nodejs/node/issues/45088 Reviewed-By: James M Snell Reviewed-By: Michael Dawson --- doc/api/n-api.md | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/doc/api/n-api.md b/doc/api/n-api.md index 47d2cc6a325cc7..8b39e0fe158d58 100644 --- a/doc/api/n-api.md +++ b/doc/api/n-api.md @@ -478,11 +478,11 @@ may be called multiple times, from multiple contexts, and even concurrently from multiple threads. Native addons may need to allocate global state which they use during -their entire life cycle such that the state must be unique to each instance of -the addon. +their life cycle of an Node.js environment such that the state can be +unique to each instance of the addon. -To this end, Node-API provides a way to allocate data such that its life cycle -is tied to the life cycle of the Agent. +To this end, Node-API provides a way to associate data such that its life cycle +is tied to the life cycle of a Node.js environment. ### `napi_set_instance_data` @@ -510,11 +510,11 @@ napi_status napi_set_instance_data(napi_env env, Returns `napi_ok` if the API succeeded. -This API associates `data` with the currently running Agent. `data` can later -be retrieved using `napi_get_instance_data()`. Any existing data associated with -the currently running Agent which was set by means of a previous call to -`napi_set_instance_data()` will be overwritten. If a `finalize_cb` was provided -by the previous call, it will not be called. +This API associates `data` with the currently running Node.js environment. `data` +can later be retrieved using `napi_get_instance_data()`. Any existing data +associated with the currently running Node.js environment which was set by means +of a previous call to `napi_set_instance_data()` will be overwritten. If a +`finalize_cb` was provided by the previous call, it will not be called. ### `napi_get_instance_data` @@ -532,13 +532,13 @@ napi_status napi_get_instance_data(napi_env env, * `[in] env`: The environment that the Node-API call is invoked under. * `[out] data`: The data item that was previously associated with the currently - running Agent by a call to `napi_set_instance_data()`. + running Node.js environment by a call to `napi_set_instance_data()`. Returns `napi_ok` if the API succeeded. This API retrieves data that was previously associated with the currently -running Agent via `napi_set_instance_data()`. If no data is set, the call will -succeed and `data` will be set to `NULL`. +running Node.js environment via `napi_set_instance_data()`. If no data is set, +the call will succeed and `data` will be set to `NULL`. ## Basic Node-API data types @@ -1799,11 +1799,11 @@ If still valid, this API returns the `napi_value` representing the JavaScript `Object` associated with the `napi_ref`. Otherwise, result will be `NULL`. -### Cleanup on exit of the current Node.js instance +### Cleanup on exit of the current Node.js environment While a Node.js process typically releases all its resources when exiting, embedders of Node.js, or future Worker support, may require addons to register -clean-up hooks that will be run once the current Node.js instance exits. +clean-up hooks that will be run once the current Node.js environment exits. Node-API provides functions for registering and un-registering such callbacks. When those callbacks are run, all resources that are being held by the addon @@ -1929,6 +1929,22 @@ the hook from being executed, unless it has already started executing. This must be called on any `napi_async_cleanup_hook_handle` value obtained from [`napi_add_async_cleanup_hook`][]. +### Finalization on the exit of the Node.js environment + +The Node.js environment may be torn down at an arbitrary time as soon as +possible with JavaScript execution disallowed, like on the request of +[`worker.terminate()`][]. When the environment is being torn down, the +registered `napi_finalize` callbacks of JavaScript objects, Thread-safe +functions and environment instance data are invoked immediately and +independently. + +The invocation of `napi_finalize` callbacks are scheduled after the manually +registered cleanup hooks. In order to ensure a proper order of addon +finalization during environment shutdown to avoid use-after-free in the +`napi_finalize` callback, addons should register a cleanup hook with +`napi_add_env_cleanup_hook` and `napi_add_async_cleanup_hook` to manually +release the allocated resource in a proper order. + ## Module registration Node-API modules are registered in a manner similar to other modules @@ -6433,6 +6449,7 @@ the add-on's file name during loading. [`process.release`]: process.md#processrelease [`uv_ref`]: https://docs.libuv.org/en/v1.x/handle.html#c.uv_ref [`uv_unref`]: https://docs.libuv.org/en/v1.x/handle.html#c.uv_unref +[`worker.terminate()`]: worker_threads.md#workerterminate [async_hooks `type`]: async_hooks.md#type [context-aware addons]: addons.md#context-aware-addons [docs]: https://github.com/nodejs/node-addon-api#api-documentation From 89990283fd85f82fd2f38e592f13b58c4580615f Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Mon, 20 Mar 2023 16:24:07 +0000 Subject: [PATCH 020/131] meta: move TSC voting member to regular membership MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/46985 Reviewed-By: Richard Lau Reviewed-By: Michael Dawson Reviewed-By: Rich Trott Reviewed-By: Michaël Zasso Reviewed-By: Darshan Sen --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f8bc7f03c101ec..295f0c600ad4ab 100644 --- a/README.md +++ b/README.md @@ -176,8 +176,6 @@ For information about the governance of the Node.js project, see **Colin Ihrig** <> (he/him) * [danielleadams](https://github.com/danielleadams) - **Danielle Adams** <> (she/her) -* [fhinkel](https://github.com/fhinkel) - - **Franziska Hinkelmann** <> (she/her) * [GeoffreyBooth](https://github.com/geoffreybooth) - **Geoffrey Booth** <> (he/him) * [gireeshpunathil](https://github.com/gireeshpunathil) - @@ -217,6 +215,8 @@ For information about the governance of the Node.js project, see **Shelley Vohr** <> (she/her) * [danbev](https://github.com/danbev) - **Daniel Bevenius** <> (he/him) +* [fhinkel](https://github.com/fhinkel) - + **Franziska Hinkelmann** <> (she/her) * [gabrielschulhof](https://github.com/gabrielschulhof) - **Gabriel Schulhof** <> * [mscdex](https://github.com/mscdex) - From d639f2e47c226f06eafb9dbe9a1b3f4c6b97b0b5 Mon Sep 17 00:00:00 2001 From: Khafra Date: Mon, 20 Mar 2023 18:01:41 -0400 Subject: [PATCH 021/131] buffer: use private properties for brand checks in File PR-URL: https://github.com/nodejs/node/pull/47154 Refs: https://github.com/nodejs/node/pull/46904 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca --- lib/internal/file.js | 9 --------- test/parallel/test-file.js | 17 +++++++++++------ 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/lib/internal/file.js b/lib/internal/file.js index 8ef858d67e2d9c..4c6ca4f61fa4d8 100644 --- a/lib/internal/file.js +++ b/lib/internal/file.js @@ -21,7 +21,6 @@ const { const { codes: { - ERR_INVALID_THIS, ERR_MISSING_ARGS, }, } = require('internal/errors'); @@ -64,18 +63,10 @@ class File extends Blob { } get name() { - if (!this || !(#name in this)) { - throw new ERR_INVALID_THIS('File'); - } - return this.#name; } get lastModified() { - if (!this || !(#name in this)) { - throw new ERR_INVALID_THIS('File'); - } - return this.#lastModified; } diff --git a/test/parallel/test-file.js b/test/parallel/test-file.js index 64a83f77ef919d..bfc4548421be23 100644 --- a/test/parallel/test-file.js +++ b/test/parallel/test-file.js @@ -146,10 +146,15 @@ const { inspect } = require('util'); { const getter = Object.getOwnPropertyDescriptor(File.prototype, 'name').get; - assert.throws( - () => getter.call(undefined), // eslint-disable-line no-useless-call - { - code: 'ERR_INVALID_THIS', - } - ); + + [ + undefined, + null, + true, + ].forEach((invalidThis) => { + assert.throws( + () => getter.call(invalidThis), + TypeError + ); + }); } From 688cecd2dd0fde6d9ee62a4aa8d6cba888676d4a Mon Sep 17 00:00:00 2001 From: Shubham Sharma Date: Mon, 20 Mar 2023 22:21:03 +0000 Subject: [PATCH 022/131] doc: fix typos in async_context.md PR-URL: https://github.com/nodejs/node/pull/47155 Reviewed-By: Debadree Chatterjee Reviewed-By: Luigi Pinca Reviewed-By: Deokjin Kim Reviewed-By: Harshitha K P Reviewed-By: Chengzhong Wu --- doc/api/async_context.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/async_context.md b/doc/api/async_context.md index bc5fc9004770b5..8223f2464bd341 100644 --- a/doc/api/async_context.md +++ b/doc/api/async_context.md @@ -167,7 +167,7 @@ calls the function passed to it within the captured context. ```js const asyncLocalStorage = new AsyncLocalStorage(); -const runInAsyncScope = asyncLocalStorage.run(123, () => asyncLocalStorage.snapshot()); +const runInAsyncScope = asyncLocalStorage.run(123, () => AsyncLocalStorage.snapshot()); const result = asyncLocalStorage.run(321, () => runInAsyncScope(() => asyncLocalStorage.getStore())); console.log(result); // returns 123 ``` From 9808a4b09183b3e192de57e062d67e5a6fda9082 Mon Sep 17 00:00:00 2001 From: Moshe Atlow Date: Tue, 21 Mar 2023 10:16:38 +0200 Subject: [PATCH 023/131] test_runner: count nested tests PR-URL: https://github.com/nodejs/node/pull/47094 Fixes: https://github.com/nodejs/node/issues/46762 Reviewed-By: Colin Ihrig Reviewed-By: Benjamin Gruenbaum --- lib/internal/test_runner/harness.js | 11 ++++ lib/internal/test_runner/reporter/tap.js | 1 + lib/internal/test_runner/runner.js | 33 +++++------ lib/internal/test_runner/test.js | 59 ++++++++----------- lib/internal/test_runner/utils.js | 25 ++++++++ test/message/test_runner_abort.out | 7 ++- test/message/test_runner_abort_suite.out | 9 ++- test/message/test_runner_describe_it.out | 18 ++++-- test/message/test_runner_describe_nested.out | 3 + test/message/test_runner_hooks.out | 17 ++++-- test/message/test_runner_no_refs.out | 5 +- test/message/test_runner_only_tests.out | 10 +++- test/message/test_runner_output.out | 9 +-- test/message/test_runner_output_cli.out | 9 +-- .../test_runner_output_spec_reporter.out | 9 +-- .../message/test_runner_test_name_pattern.out | 11 +++- ...est_runner_test_name_pattern_with_only.out | 7 ++- .../test_runner_unresolved_promise.out | 1 + test/parallel/test-runner-cli.js | 7 ++- .../test-runner-extraneous-async-activity.js | 4 +- .../test_runner_default_reporter.out | 1 + 21 files changed, 163 insertions(+), 93 deletions(-) diff --git a/lib/internal/test_runner/harness.js b/lib/internal/test_runner/harness.js index 26f5a6ef49142c..95a8c5f8691541 100644 --- a/lib/internal/test_runner/harness.js +++ b/lib/internal/test_runner/harness.js @@ -168,6 +168,17 @@ function setup(root) { __proto__: null, bootstrapComplete: false, coverage: null, + counters: { + __proto__: null, + all: 0, + failed: 0, + passed: 0, + cancelled: 0, + skipped: 0, + todo: 0, + planned: 0, + suites: 0, + }, }; root.startTime = hrtime(); return root; diff --git a/lib/internal/test_runner/reporter/tap.js b/lib/internal/test_runner/reporter/tap.js index a5402b4a6084ac..c7d5dd9bdb037f 100644 --- a/lib/internal/test_runner/reporter/tap.js +++ b/lib/internal/test_runner/reporter/tap.js @@ -113,6 +113,7 @@ function reportDetails(nesting, data = kEmptyObject) { let details = `${_indent} ---\n`; details += jsToYaml(_indent, 'duration_ms', duration_ms); + details += jsToYaml(_indent, 'type', data.type); details += jsToYaml(_indent, null, error); details += `${_indent} ...\n`; return details; diff --git a/lib/internal/test_runner/runner.js b/lib/internal/test_runner/runner.js index 8b54d53a2d5a8f..6e6cb4f276a9a3 100644 --- a/lib/internal/test_runner/runner.js +++ b/lib/internal/test_runner/runner.js @@ -10,10 +10,8 @@ const { ArrayPrototypeSome, ArrayPrototypeSort, ArrayPrototypeSplice, - FunctionPrototypeCall, Number, ObjectAssign, - ObjectKeys, PromisePrototypeThen, SafePromiseAll, SafePromiseAllReturnVoid, @@ -55,8 +53,9 @@ const { YAMLToJs } = require('internal/test_runner/yaml_to_js'); const { TokenKind } = require('internal/test_runner/tap_lexer'); const { - isSupportedFileType, + countCompletedTest, doesPathMatchFilter, + isSupportedFileType, } = require('internal/test_runner/utils'); const { basename, join, resolve } = require('path'); const { once } = require('events'); @@ -67,7 +66,7 @@ const { const kFilterArgs = ['--test', '--experimental-test-coverage', '--watch']; const kFilterArgValues = ['--test-reporter', '--test-reporter-destination']; -const kDiagnosticsFilterArgs = ['tests', 'pass', 'fail', 'cancelled', 'skipped', 'todo', 'duration_ms']; +const kDiagnosticsFilterArgs = ['tests', 'suites', 'pass', 'fail', 'cancelled', 'skipped', 'todo', 'duration_ms']; const kCanceledTests = new SafeSet() .add(kCancelledByParent).add(kAborted).add(kTestTimeoutFailure); @@ -151,10 +150,10 @@ function getRunArgs({ path, inspectPort }) { class FileTest extends Test { #buffer = []; - #counters = { __proto__: null, all: 0, failed: 0, passed: 0, cancelled: 0, skipped: 0, todo: 0, totalFailed: 0 }; + #reportedChildren = 0; failedSubtests = false; #skipReporting() { - return this.#counters.all > 0 && (!this.error || this.error.failureType === kSubtestsFailed); + return this.#reportedChildren > 0 && (!this.error || this.error.failureType === kSubtestsFailed); } #checkNestedComment({ comment }) { const firstSpaceIndex = StringPrototypeIndexOf(comment, ' '); @@ -204,11 +203,19 @@ class FileTest extends Test { const method = pass ? 'ok' : 'fail'; this.reporter[method](nesting, this.name, testNumber, node.description, diagnostics, directive); if (nesting === 0) { - FunctionPrototypeCall(super.countSubtest, - { finished: true, skipped: skip, isTodo: todo, passed: pass, cancelled }, - this.#counters); this.failedSubtests ||= !pass; } + this.#reportedChildren++; + countCompletedTest({ + name: node.description, + finished: true, + skipped: skip, + isTodo: todo, + passed: pass, + cancelled, + nesting, + reportedType: diagnostics.type, + }, this.root.harness); break; } @@ -233,14 +240,6 @@ class FileTest extends Test { this.reportStarted(); this.#handleReportItem(ast); } - countSubtest(counters) { - if (this.#counters.all === 0) { - return super.countSubtest(counters); - } - ArrayPrototypeForEach(ObjectKeys(counters), (key) => { - counters[key] += this.#counters[key]; - }); - } reportStarted() {} report() { const skipReporting = this.#skipReporting(); diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js index ffbf2d257aed62..c1203c91177f43 100644 --- a/lib/internal/test_runner/test.js +++ b/lib/internal/test_runner/test.js @@ -34,6 +34,7 @@ const { MockTracker } = require('internal/test_runner/mock'); const { TestsStream } = require('internal/test_runner/tests_stream'); const { createDeferredCallback, + countCompletedTest, isTestFailureError, parseCommandLine, } = require('internal/test_runner/utils'); @@ -186,6 +187,7 @@ class Test extends AsyncResource { this.runOnlySubtests = this.only; this.testNumber = 0; this.timeout = kDefaultTimeout; + this.root = this; } else { const nesting = parent.parent === null ? parent.nesting : parent.nesting + 1; @@ -197,6 +199,7 @@ class Test extends AsyncResource { this.runOnlySubtests = !this.only; this.testNumber = parent.subtests.length + 1; this.timeout = parent.timeout; + this.root = parent.root; } switch (typeof concurrency) { @@ -575,31 +578,7 @@ class Test extends AsyncResource { this.postRun(); } - countSubtest(counters) { - // Check SKIP and TODO tests first, as those should not be counted as - // failures. - if (this.skipped) { - counters.skipped++; - } else if (this.isTodo) { - counters.todo++; - } else if (this.cancelled) { - counters.cancelled++; - } else if (!this.passed) { - counters.failed++; - } else { - counters.passed++; - } - - if (!this.passed) { - counters.totalFailed++; - } - counters.all++; - } - postRun(pendingSubtestsError) { - const counters = { - __proto__: null, all: 0, failed: 0, passed: 0, cancelled: 0, skipped: 0, todo: 0, totalFailed: 0, - }; // If the test was failed before it even started, then the end time will // be earlier than the start time. Correct that here. if (this.endTime < this.startTime) { @@ -610,6 +589,7 @@ class Test extends AsyncResource { // The test has run, so recursively cancel any outstanding subtests and // mark this test as failed if any subtests failed. this.pendingSubtests = []; + let failed = 0; for (let i = 0; i < this.subtests.length; i++) { const subtest = this.subtests[i]; @@ -617,12 +597,14 @@ class Test extends AsyncResource { subtest.#cancel(pendingSubtestsError); subtest.postRun(pendingSubtestsError); } - subtest.countSubtest(counters); + if (!subtest.passed) { + failed++; + } } - if ((this.passed || this.parent === null) && counters.totalFailed > 0) { - const subtestString = `subtest${counters.totalFailed > 1 ? 's' : ''}`; - const msg = `${counters.totalFailed} ${subtestString} failed`; + if ((this.passed || this.parent === null) && failed > 0) { + const subtestString = `subtest${failed > 1 ? 's' : ''}`; + const msg = `${failed} ${subtestString} failed`; this.fail(new ERR_TEST_FAILURE(msg, kSubtestsFailed)); } @@ -637,18 +619,19 @@ class Test extends AsyncResource { this.parent.processPendingSubtests(); } else if (!this.reported) { this.reported = true; - this.reporter.plan(this.nesting, kFilename, counters.all); + this.reporter.plan(this.nesting, kFilename, this.root.harness.counters.planned); for (let i = 0; i < this.diagnostics.length; i++) { this.reporter.diagnostic(this.nesting, kFilename, this.diagnostics[i]); } - this.reporter.diagnostic(this.nesting, kFilename, `tests ${counters.all}`); - this.reporter.diagnostic(this.nesting, kFilename, `pass ${counters.passed}`); - this.reporter.diagnostic(this.nesting, kFilename, `fail ${counters.failed}`); - this.reporter.diagnostic(this.nesting, kFilename, `cancelled ${counters.cancelled}`); - this.reporter.diagnostic(this.nesting, kFilename, `skipped ${counters.skipped}`); - this.reporter.diagnostic(this.nesting, kFilename, `todo ${counters.todo}`); + this.reporter.diagnostic(this.nesting, kFilename, `tests ${this.root.harness.counters.all}`); + this.reporter.diagnostic(this.nesting, kFilename, `suites ${this.root.harness.counters.suites}`); + this.reporter.diagnostic(this.nesting, kFilename, `pass ${this.root.harness.counters.passed}`); + this.reporter.diagnostic(this.nesting, kFilename, `fail ${this.root.harness.counters.failed}`); + this.reporter.diagnostic(this.nesting, kFilename, `cancelled ${this.root.harness.counters.cancelled}`); + this.reporter.diagnostic(this.nesting, kFilename, `skipped ${this.root.harness.counters.skipped}`); + this.reporter.diagnostic(this.nesting, kFilename, `todo ${this.root.harness.counters.todo}`); this.reporter.diagnostic(this.nesting, kFilename, `duration_ms ${this.#duration()}`); if (this.harness?.coverage) { @@ -689,6 +672,7 @@ class Test extends AsyncResource { } report() { + countCompletedTest(this); if (this.subtests.length > 0) { this.reporter.plan(this.subtests[0].nesting, kFilename, this.subtests.length); } else { @@ -703,6 +687,10 @@ class Test extends AsyncResource { directive = this.reporter.getTodo(this.message); } + if (this.reportedType) { + details.type = this.reportedType; + } + if (this.passed) { this.reporter.ok(this.nesting, kFilename, this.testNumber, this.name, details, directive); } else { @@ -746,6 +734,7 @@ class TestHook extends Test { } class Suite extends Test { + reportedType = 'suite'; constructor(options) { super(options); diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js index a5068dbf589e63..06393395dde7d2 100644 --- a/lib/internal/test_runner/utils.js +++ b/lib/internal/test_runner/utils.js @@ -222,8 +222,33 @@ function parseCommandLine() { return globalTestOptions; } +function countCompletedTest(test, harness = test.root.harness) { + if (test.nesting === 0) { + harness.counters.planned++; + } + if (test.reportedType === 'suite') { + harness.counters.suites++; + return; + } + // Check SKIP and TODO tests first, as those should not be counted as + // failures. + if (test.skipped) { + harness.counters.skipped++; + } else if (test.isTodo) { + harness.counters.todo++; + } else if (test.cancelled) { + harness.counters.cancelled++; + } else if (!test.passed) { + harness.counters.failed++; + } else { + harness.counters.passed++; + } + harness.counters.all++; +} + module.exports = { convertStringToRegExp, + countCompletedTest, createDeferredCallback, doesPathMatchFilter, isSupportedFileType, diff --git a/test/message/test_runner_abort.out b/test/message/test_runner_abort.out index 95a78243e729bf..91055794b03e27 100644 --- a/test/message/test_runner_abort.out +++ b/test/message/test_runner_abort.out @@ -260,10 +260,11 @@ not ok 4 - callback abort signal * ... 1..4 -# tests 4 -# pass 0 +# tests 22 +# suites 0 +# pass 8 # fail 0 -# cancelled 4 +# cancelled 14 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_abort_suite.out b/test/message/test_runner_abort_suite.out index 06a70bdf012196..00040b760cdfb2 100644 --- a/test/message/test_runner_abort_suite.out +++ b/test/message/test_runner_abort_suite.out @@ -64,6 +64,7 @@ TAP version 13 not ok 1 - describe timeout signal --- duration_ms: * + type: 'suite' failureType: 'testAborted' error: 'The operation was aborted due to timeout' code: 23 @@ -78,6 +79,7 @@ not ok 1 - describe timeout signal not ok 2 - describe abort signal --- duration_ms: * + type: 'suite' failureType: 'testAborted' error: 'This operation was aborted' code: 20 @@ -94,10 +96,11 @@ not ok 2 - describe abort signal * ... 1..2 -# tests 2 -# pass 0 +# tests 9 +# suites 2 +# pass 4 # fail 0 -# cancelled 2 +# cancelled 5 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_describe_it.out b/test/message/test_runner_describe_it.out index 41c4e275b5b614..209cf5bb6715e8 100644 --- a/test/message/test_runner_describe_it.out +++ b/test/message/test_runner_describe_it.out @@ -210,6 +210,7 @@ ok 21 - immediate resolve pass not ok 22 - subtest sync throw fail --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '1 subtest failed' code: 'ERR_TEST_FAILURE' @@ -247,11 +248,13 @@ not ok 23 - sync throw non-error fail ok 24 - level 0a --- duration_ms: * + type: 'suite' ... # Subtest: invalid subtest - pass but subtest fails ok 25 - invalid subtest - pass but subtest fails --- duration_ms: * + type: 'suite' ... # Subtest: sync skip option ok 26 - sync skip option # SKIP @@ -494,6 +497,7 @@ not ok 53 - custom inspect symbol that throws fail not ok 54 - subtest sync throw fails --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -511,6 +515,7 @@ not ok 54 - subtest sync throw fails not ok 55 - describe sync throw fails --- duration_ms: * + type: 'suite' failureType: 'testCodeFailure' error: 'thrown from describe' code: 'ERR_TEST_FAILURE' @@ -539,6 +544,7 @@ not ok 55 - describe sync throw fails not ok 56 - describe async throw fails --- duration_ms: * + type: 'suite' failureType: 'testCodeFailure' error: 'thrown from describe' code: 'ERR_TEST_FAILURE' @@ -587,6 +593,7 @@ not ok 56 - describe async throw fails not ok 57 - timeouts --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -612,6 +619,7 @@ not ok 57 - timeouts not ok 58 - successful thenable --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '1 subtest failed' code: 'ERR_TEST_FAILURE' @@ -620,6 +628,7 @@ not ok 58 - successful thenable not ok 59 - rejected thenable --- duration_ms: * + type: 'suite' failureType: 'testCodeFailure' error: 'custom error' code: 'ERR_TEST_FAILURE' @@ -643,10 +652,11 @@ not ok 60 - invalid subtest fail # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. -# tests 60 -# pass 23 -# fail 22 -# cancelled 0 +# tests 67 +# suites 9 +# pass 29 +# fail 19 +# cancelled 4 # skipped 10 # todo 5 # duration_ms * diff --git a/test/message/test_runner_describe_nested.out b/test/message/test_runner_describe_nested.out index 1d3fe31b75c37a..fe96d2a9560b7b 100644 --- a/test/message/test_runner_describe_nested.out +++ b/test/message/test_runner_describe_nested.out @@ -10,14 +10,17 @@ TAP version 13 ok 1 - nested --- duration_ms: * + type: 'suite' ... 1..1 ok 1 - nested - no tests --- duration_ms: * + type: 'suite' ... 1..1 # tests 1 +# suites 2 # pass 1 # fail 0 # cancelled 0 diff --git a/test/message/test_runner_hooks.out b/test/message/test_runner_hooks.out index 7c82e9ff292ad5..48280122e1e21e 100644 --- a/test/message/test_runner_hooks.out +++ b/test/message/test_runner_hooks.out @@ -25,11 +25,13 @@ TAP version 13 ok 3 - nested --- duration_ms: * + type: 'suite' ... 1..3 ok 1 - describe hooks --- duration_ms: * + type: 'suite' ... # Subtest: before throws # Subtest: 1 @@ -52,6 +54,7 @@ ok 1 - describe hooks not ok 2 - before throws --- duration_ms: * + type: 'suite' failureType: 'hookFailed' error: 'failed running before hook' code: 'ERR_TEST_FAILURE' @@ -80,6 +83,7 @@ not ok 2 - before throws not ok 3 - after throws --- duration_ms: * + type: 'suite' failureType: 'hookFailed' error: 'failed running after hook' code: 'ERR_TEST_FAILURE' @@ -136,6 +140,7 @@ not ok 3 - after throws not ok 4 - beforeEach throws --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -183,6 +188,7 @@ not ok 4 - beforeEach throws not ok 5 - afterEach throws --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -216,6 +222,7 @@ not ok 5 - afterEach throws not ok 6 - afterEach when test fails --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '1 subtest failed' code: 'ERR_TEST_FAILURE' @@ -263,6 +270,7 @@ not ok 6 - afterEach when test fails not ok 7 - afterEach throws and test fails --- duration_ms: * + type: 'suite' failureType: 'subtestsFailed' error: '2 subtests failed' code: 'ERR_TEST_FAILURE' @@ -491,10 +499,11 @@ not ok 13 - t.after() is called if test body throws ... # - after() called 1..13 -# tests 13 -# pass 2 -# fail 11 -# cancelled 0 +# tests 35 +# suites 8 +# pass 14 +# fail 19 +# cancelled 2 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_no_refs.out b/test/message/test_runner_no_refs.out index e8560c5720b762..49c51af41caec3 100644 --- a/test/message/test_runner_no_refs.out +++ b/test/message/test_runner_no_refs.out @@ -21,10 +21,11 @@ not ok 1 - does not keep event loop alive * ... 1..1 -# tests 1 +# tests 2 +# suites 0 # pass 0 # fail 0 -# cancelled 1 +# cancelled 2 # skipped 0 # todo 0 # duration_ms * diff --git a/test/message/test_runner_only_tests.out b/test/message/test_runner_only_tests.out index 7d8240fef0c489..d0cab370edcac0 100644 --- a/test/message/test_runner_only_tests.out +++ b/test/message/test_runner_only_tests.out @@ -131,6 +131,7 @@ ok 11 - only = true, with subtests ok 12 - describe only = true, with subtests --- duration_ms: * + type: 'suite' ... # Subtest: describe only = true, with a mixture of subtests # Subtest: `it` subtest 1 @@ -167,6 +168,7 @@ ok 12 - describe only = true, with subtests ok 13 - describe only = true, with a mixture of subtests --- duration_ms: * + type: 'suite' ... # Subtest: describe only = true, with subtests # Subtest: subtest should run @@ -188,12 +190,14 @@ ok 13 - describe only = true, with a mixture of subtests ok 14 - describe only = true, with subtests --- duration_ms: * + type: 'suite' ... 1..14 -# tests 14 -# pass 4 +# tests 34 +# suites 3 +# pass 14 # fail 0 # cancelled 0 -# skipped 10 +# skipped 20 # todo 0 # duration_ms * diff --git a/test/message/test_runner_output.out b/test/message/test_runner_output.out index b6f254708010e9..668676cb6eeda6 100644 --- a/test/message/test_runner_output.out +++ b/test/message/test_runner_output.out @@ -642,10 +642,11 @@ not ok 65 - invalid subtest fail # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. -# tests 65 -# pass 27 -# fail 21 -# cancelled 2 +# tests 79 +# suites 0 +# pass 37 +# fail 24 +# cancelled 3 # skipped 10 # todo 5 # duration_ms * diff --git a/test/message/test_runner_output_cli.out b/test/message/test_runner_output_cli.out index 3baeb534704b11..e51b6b472ca44f 100644 --- a/test/message/test_runner_output_cli.out +++ b/test/message/test_runner_output_cli.out @@ -642,10 +642,11 @@ not ok 65 - invalid subtest fail # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. 1..65 -# tests 65 -# pass 27 -# fail 21 -# cancelled 2 +# tests 79 +# suites 0 +# pass 37 +# fail 24 +# cancelled 3 # skipped 10 # todo 5 # duration_ms * diff --git a/test/message/test_runner_output_spec_reporter.out b/test/message/test_runner_output_spec_reporter.out index 3ff9aefe7a42ce..d5b443010e77cd 100644 --- a/test/message/test_runner_output_spec_reporter.out +++ b/test/message/test_runner_output_spec_reporter.out @@ -275,10 +275,11 @@ Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event. Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event. Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event. - tests 65 - pass 27 - fail 21 - cancelled 2 + tests 79 + suites 0 + pass 37 + fail 24 + cancelled 3 skipped 10 todo 5 duration_ms * diff --git a/test/message/test_runner_test_name_pattern.out b/test/message/test_runner_test_name_pattern.out index be548ad0c6dfee..36a1da9fbeff11 100644 --- a/test/message/test_runner_test_name_pattern.out +++ b/test/message/test_runner_test_name_pattern.out @@ -38,16 +38,19 @@ ok 7 - top level skipped it enabled # SKIP ok 8 - top level describe disabled # SKIP test name does not match pattern --- duration_ms: * + type: 'suite' ... # Subtest: top level skipped describe disabled ok 9 - top level skipped describe disabled # SKIP test name does not match pattern --- duration_ms: * + type: 'suite' ... # Subtest: top level skipped describe enabled ok 10 - top level skipped describe enabled # SKIP --- duration_ms: * + type: 'suite' ... # Subtest: top level runs because name includes PaTtErN ok 11 - top level runs because name includes PaTtErN @@ -80,6 +83,7 @@ ok 12 - top level test enabled ok 3 - nested describe disabled # SKIP test name does not match pattern --- duration_ms: * + type: 'suite' ... # Subtest: nested describe enabled # Subtest: is enabled @@ -91,17 +95,20 @@ ok 12 - top level test enabled ok 4 - nested describe enabled --- duration_ms: * + type: 'suite' ... 1..4 ok 13 - top level describe enabled --- duration_ms: * + type: 'suite' ... 1..13 # tests 13 -# pass 4 +# suites 6 +# pass 6 # fail 0 # cancelled 0 -# skipped 9 +# skipped 7 # todo 0 # duration_ms * diff --git a/test/message/test_runner_test_name_pattern_with_only.out b/test/message/test_runner_test_name_pattern_with_only.out index 2e1006409cf9d3..35fbbc223c6db0 100644 --- a/test/message/test_runner_test_name_pattern_with_only.out +++ b/test/message/test_runner_test_name_pattern_with_only.out @@ -31,10 +31,11 @@ ok 4 - not only and does not match pattern # SKIP 'only' option not set duration_ms: * ... 1..4 -# tests 4 -# pass 1 +# tests 6 +# suites 0 +# pass 2 # fail 0 # cancelled 0 -# skipped 3 +# skipped 4 # todo 0 # duration_ms * diff --git a/test/message/test_runner_unresolved_promise.out b/test/message/test_runner_unresolved_promise.out index b4d6cba4ca1b43..d3fadb6b556356 100644 --- a/test/message/test_runner_unresolved_promise.out +++ b/test/message/test_runner_unresolved_promise.out @@ -26,6 +26,7 @@ not ok 3 - fail ... 1..3 # tests 3 +# suites 0 # pass 1 # fail 0 # cancelled 2 diff --git a/test/parallel/test-runner-cli.js b/test/parallel/test-runner-cli.js index 8cfceedfe6a53a..5e913eb6de9e5d 100644 --- a/test/parallel/test-runner-cli.js +++ b/test/parallel/test-runner-cli.js @@ -155,9 +155,10 @@ const testFixtures = fixtures.path('test-runner'); assert.match(stdout, /# Subtest: level 0b/); assert.match(stdout, /not ok 4 - level 0b/); assert.match(stdout, / {2}error: 'level 0b error'/); - assert.match(stdout, /# tests 4/); - assert.match(stdout, /# pass 2/); - assert.match(stdout, /# fail 2/); + assert.match(stdout, /# tests 8/); + assert.match(stdout, /# pass 4/); + assert.match(stdout, /# fail 3/); + assert.match(stdout, /# skipped 1/); } { diff --git a/test/parallel/test-runner-extraneous-async-activity.js b/test/parallel/test-runner-extraneous-async-activity.js index bc4be25d5f974b..a95925dbb75414 100644 --- a/test/parallel/test-runner-extraneous-async-activity.js +++ b/test/parallel/test-runner-extraneous-async-activity.js @@ -12,7 +12,7 @@ const { spawnSync } = require('child_process'); const stdout = child.stdout.toString(); assert.match(stdout, /^# Warning: Test "extraneous async activity test" generated asynchronous activity after the test ended/m); assert.match(stdout, /^# pass 1/m); - assert.match(stdout, /^# fail 0$/m); + assert.match(stdout, /^# fail 1$/m); assert.match(stdout, /^# cancelled 0$/m); assert.strictEqual(child.status, 1); assert.strictEqual(child.signal, null); @@ -26,7 +26,7 @@ const { spawnSync } = require('child_process'); const stdout = child.stdout.toString(); assert.match(stdout, /^# Warning: Test "extraneous async activity test" generated asynchronous activity after the test ended/m); assert.match(stdout, /^# pass 1$/m); - assert.match(stdout, /^# fail 0$/m); + assert.match(stdout, /^# fail 1$/m); assert.match(stdout, /^# cancelled 0$/m); assert.strictEqual(child.status, 1); assert.strictEqual(child.signal, null); diff --git a/test/pseudo-tty/test_runner_default_reporter.out b/test/pseudo-tty/test_runner_default_reporter.out index 795b7e556d13d8..aec99725c61cba 100644 --- a/test/pseudo-tty/test_runner_default_reporter.out +++ b/test/pseudo-tty/test_runner_default_reporter.out @@ -11,6 +11,7 @@ ** [90m* should skip [90m(*ms)[39m # SKIP[39m [34m* tests 3[39m +[34m* suites 0[39m [34m* pass 1[39m [34m* fail 1[39m [34m* cancelled 0[39m From 546e8664273bac70f56a3638ac5a5d5eda8c95eb Mon Sep 17 00:00:00 2001 From: Moshe Atlow Date: Tue, 21 Mar 2023 19:27:53 +0200 Subject: [PATCH 024/131] tools: allow test tap output to include unicode characters MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47175 Reviewed-By: Richard Lau Reviewed-By: Michaël Zasso Reviewed-By: Christian Clauss --- tools/test.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/test.py b/tools/test.py index cdcd6c148278e2..44f21ec126b25d 100755 --- a/tools/test.py +++ b/tools/test.py @@ -44,6 +44,7 @@ import multiprocessing import errno import copy +import io if sys.version_info >= (3, 5): @@ -1595,7 +1596,13 @@ def Main(): parser.print_help() return 1 - ch = logging.StreamHandler(sys.stdout) + stream = sys.stdout + try: + sys.stdout.reconfigure(encoding='utf8') + except AttributeError: + # Python < 3.7 does not have reconfigure + stream = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') + ch = logging.StreamHandler(stream) logger.addHandler(ch) logger.setLevel(logging.INFO) if options.logfile: From b30839fe472540a3d714a41602738011f1928455 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Wed, 22 Mar 2023 06:46:58 +0200 Subject: [PATCH 025/131] stream: dont wait for next item in take when finished PR-URL: https://github.com/nodejs/node/pull/47132 Reviewed-By: Robert Nagy Reviewed-By: Yagiz Nizipli Reviewed-By: Erick Wendel Reviewed-By: Matteo Collina Reviewed-By: Debadree Chatterjee --- lib/internal/streams/operators.js | 5 ++++- test/parallel/test-stream-drop-take.js | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/lib/internal/streams/operators.js b/lib/internal/streams/operators.js index 9841723622418b..65c87d6e456bdf 100644 --- a/lib/internal/streams/operators.js +++ b/lib/internal/streams/operators.js @@ -409,7 +409,10 @@ function take(number, options = undefined) { } if (number-- > 0) { yield val; - } else { + } + + // Don't get another item from iterator in case we reached the end + if (number <= 0) { return; } } diff --git a/test/parallel/test-stream-drop-take.js b/test/parallel/test-stream-drop-take.js index cb55a4f7ee1813..97e6c74dfa67ea 100644 --- a/test/parallel/test-stream-drop-take.js +++ b/test/parallel/test-stream-drop-take.js @@ -4,7 +4,7 @@ const common = require('../common'); const { Readable, } = require('stream'); -const { deepStrictEqual, rejects, throws } = require('assert'); +const { deepStrictEqual, rejects, throws, strictEqual } = require('assert'); const { from } = Readable; @@ -49,6 +49,28 @@ const naturals = () => from(async function*() { })().then(common.mustCall()); } + +// Don't wait for next item in the original stream when already consumed the requested take amount +{ + let reached = false; + let resolve; + const promise = new Promise((res) => resolve = res); + + const stream = from((async function *() { + yield 1; + await promise; + reached = true; + yield 2; + })()); + + stream.take(1) + .toArray() + .then(common.mustCall(() => { + strictEqual(reached, false); + })) + .finally(() => resolve()); +} + { // Coercion (async () => { From b0a259448f703b5841a2095b81886221f2c5b547 Mon Sep 17 00:00:00 2001 From: Gabriel Schulhof Date: Tue, 21 Mar 2023 21:47:08 -0700 Subject: [PATCH 026/131] node-api: extend type-tagging to externals Since externals behave as JavaScript objects on the JavaScript side, allow them to be type-tagged. Signed-off-by: Gabriel Schulhof PR-URL: https://github.com/nodejs/node/pull/47141 Reviewed-By: Michael Dawson Reviewed-By: Chengzhong Wu --- doc/api/n-api.md | 31 +++--- test/js-native-api/test_object/test.js | 23 ++++ test/js-native-api/test_object/test_object.c | 108 +++++++++++++------ 3 files changed, 117 insertions(+), 45 deletions(-) diff --git a/doc/api/n-api.md b/doc/api/n-api.md index 8b39e0fe158d58..b1e65e989b39d2 100644 --- a/doc/api/n-api.md +++ b/doc/api/n-api.md @@ -733,13 +733,13 @@ napiVersion: 8 --> A 128-bit value stored as two unsigned 64-bit integers. It serves as a UUID -with which JavaScript objects can be "tagged" in order to ensure that they are -of a certain type. This is a stronger check than [`napi_instanceof`][], because -the latter can report a false positive if the object's prototype has been -manipulated. Type-tagging is most useful in conjunction with [`napi_wrap`][] -because it ensures that the pointer retrieved from a wrapped object can be -safely cast to the native type corresponding to the type tag that had been -previously applied to the JavaScript object. +with which JavaScript objects or [externals][] can be "tagged" in order to +ensure that they are of a certain type. This is a stronger check than +[`napi_instanceof`][], because the latter can report a false positive if the +object's prototype has been manipulated. Type-tagging is most useful in +conjunction with [`napi_wrap`][] because it ensures that the pointer retrieved +from a wrapped object can be safely cast to the native type corresponding to the +type tag that had been previously applied to the JavaScript object. ```c typedef struct { @@ -4967,7 +4967,7 @@ To this end, Node-API provides type-tagging capabilities. A type tag is a 128-bit integer unique to the addon. Node-API provides the `napi_type_tag` structure for storing a type tag. When such a value is passed -along with a JavaScript object stored in a `napi_value` to +along with a JavaScript object or [external][] stored in a `napi_value` to `napi_type_tag_object()`, the JavaScript object will be "marked" with the type tag. The "mark" is invisible on the JavaScript side. When a JavaScript object arrives into a native binding, `napi_check_object_type_tag()` can be used @@ -5253,15 +5253,15 @@ napi_status napi_type_tag_object(napi_env env, ``` * `[in] env`: The environment that the API is invoked under. -* `[in] js_object`: The JavaScript object to be marked. +* `[in] js_object`: The JavaScript object or [external][] to be marked. * `[in] type_tag`: The tag with which the object is to be marked. Returns `napi_ok` if the API succeeded. -Associates the value of the `type_tag` pointer with the JavaScript object. -`napi_check_object_type_tag()` can then be used to compare the tag that was -attached to the object with one owned by the addon to ensure that the object -has the right type. +Associates the value of the `type_tag` pointer with the JavaScript object or +[external][]. `napi_check_object_type_tag()` can then be used to compare the tag +that was attached to the object with one owned by the addon to ensure that the +object has the right type. If the object already has an associated type tag, this API will return `napi_invalid_arg`. @@ -5283,7 +5283,8 @@ napi_status napi_check_object_type_tag(napi_env env, ``` * `[in] env`: The environment that the API is invoked under. -* `[in] js_object`: The JavaScript object whose type tag to examine. +* `[in] js_object`: The JavaScript object or [external][] whose type tag to + examine. * `[in] type_tag`: The tag with which to compare any tag found on the object. * `[out] result`: Whether the type tag given matched the type tag on the object. `false` is also returned if no type tag was found on the object. @@ -6453,6 +6454,8 @@ the add-on's file name during loading. [async_hooks `type`]: async_hooks.md#type [context-aware addons]: addons.md#context-aware-addons [docs]: https://github.com/nodejs/node-addon-api#api-documentation +[external]: #napi_create_external +[externals]: #napi_create_external [global scope]: globals.md [gyp-next]: https://github.com/nodejs/gyp-next [module scope]: modules.md#the-module-scope diff --git a/test/js-native-api/test_object/test.js b/test/js-native-api/test_object/test.js index 012f737ba74b43..670ae200a35bec 100644 --- a/test/js-native-api/test_object/test.js +++ b/test/js-native-api/test_object/test.js @@ -165,12 +165,26 @@ assert.strictEqual(newObject.test_string, 'test string'); const obj2 = test_object.TypeTaggedInstance(1); const obj3 = test_object.TypeTaggedInstance(2); const obj4 = test_object.TypeTaggedInstance(3); + const external = test_object.TypeTaggedExternal(2); + const plainExternal = test_object.PlainExternal(); + + // Verify that we do not allow type tag indices greater than the largest + // available index. + assert.throws(() => test_object.TypeTaggedInstance(39), { + name: 'RangeError', + message: 'Invalid type index', + }); + assert.throws(() => test_object.TypeTaggedExternal(39), { + name: 'RangeError', + message: 'Invalid type index', + }); // Verify that type tags are correctly accepted. assert.strictEqual(test_object.CheckTypeTag(0, obj1), true); assert.strictEqual(test_object.CheckTypeTag(1, obj2), true); assert.strictEqual(test_object.CheckTypeTag(2, obj3), true); assert.strictEqual(test_object.CheckTypeTag(3, obj4), true); + assert.strictEqual(test_object.CheckTypeTag(2, external), true); // Verify that wrongly tagged objects are rejected. assert.strictEqual(test_object.CheckTypeTag(0, obj2), false); @@ -180,10 +194,19 @@ assert.strictEqual(newObject.test_string, 'test string'); assert.strictEqual(test_object.CheckTypeTag(2, obj4), false); assert.strictEqual(test_object.CheckTypeTag(3, obj3), false); assert.strictEqual(test_object.CheckTypeTag(4, obj3), false); + assert.strictEqual(test_object.CheckTypeTag(0, external), false); + assert.strictEqual(test_object.CheckTypeTag(1, external), false); + assert.strictEqual(test_object.CheckTypeTag(3, external), false); + assert.strictEqual(test_object.CheckTypeTag(4, external), false); // Verify that untagged objects are rejected. assert.strictEqual(test_object.CheckTypeTag(0, {}), false); assert.strictEqual(test_object.CheckTypeTag(1, {}), false); + assert.strictEqual(test_object.CheckTypeTag(0, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(1, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(2, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(3, plainExternal), false); + assert.strictEqual(test_object.CheckTypeTag(4, plainExternal), false); } { diff --git a/test/js-native-api/test_object/test_object.c b/test/js-native-api/test_object/test_object.c index 3ae54a9b7cd65c..eb5aa2071e30a3 100644 --- a/test/js-native-api/test_object/test_object.c +++ b/test/js-native-api/test_object/test_object.c @@ -605,13 +605,23 @@ static napi_value TestSeal(napi_env env, } // We create two type tags. They are basically 128-bit UUIDs. -static const napi_type_tag type_tags[5] = { - { 0xdaf987b3cc62481a, 0xb745b0497f299531 }, - { 0xbb7936c374084d9b, 0xa9548d0762eeedb9 }, - { 0xa5ed9ce2e4c00c38, 0 }, - { 0, 0 }, - { 0xa5ed9ce2e4c00c38, 0xdaf987b3cc62481a }, +#define TYPE_TAG_COUNT 5 +static const napi_type_tag type_tags[TYPE_TAG_COUNT] = { + {0xdaf987b3cc62481a, 0xb745b0497f299531}, + {0xbb7936c374084d9b, 0xa9548d0762eeedb9}, + {0xa5ed9ce2e4c00c38, 0}, + {0, 0}, + {0xa5ed9ce2e4c00c38, 0xdaf987b3cc62481a}, }; +#define VALIDATE_TYPE_INDEX(env, type_index) \ + do { \ + if ((type_index) >= TYPE_TAG_COUNT) { \ + NODE_API_CALL((env), \ + napi_throw_range_error((env), \ + "NODE_API_TEST_INVALID_TYPE_INDEX", \ + "Invalid type index")); \ + } \ + } while (0) static napi_value TypeTaggedInstance(napi_env env, napi_callback_info info) { @@ -621,12 +631,42 @@ TypeTaggedInstance(napi_env env, napi_callback_info info) { NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, &which_type, NULL, NULL)); NODE_API_CALL(env, napi_get_value_uint32(env, which_type, &type_index)); + VALIDATE_TYPE_INDEX(env, type_index); NODE_API_CALL(env, napi_create_object(env, &instance)); NODE_API_CALL(env, napi_type_tag_object(env, instance, &type_tags[type_index])); return instance; } +// V8 will not allowe us to construct an external with a NULL data value. +#define IN_LIEU_OF_NULL ((void*)0x1) + +static napi_value PlainExternal(napi_env env, napi_callback_info info) { + napi_value instance; + + NODE_API_CALL( + env, napi_create_external(env, IN_LIEU_OF_NULL, NULL, NULL, &instance)); + + return instance; +} + +static napi_value TypeTaggedExternal(napi_env env, napi_callback_info info) { + size_t argc = 1; + uint32_t type_index; + napi_value instance, which_type; + + NODE_API_CALL(env, + napi_get_cb_info(env, info, &argc, &which_type, NULL, NULL)); + NODE_API_CALL(env, napi_get_value_uint32(env, which_type, &type_index)); + VALIDATE_TYPE_INDEX(env, type_index); + NODE_API_CALL( + env, napi_create_external(env, IN_LIEU_OF_NULL, NULL, NULL, &instance)); + NODE_API_CALL(env, + napi_type_tag_object(env, instance, &type_tags[type_index])); + + return instance; +} + static napi_value CheckTypeTag(napi_env env, napi_callback_info info) { size_t argc = 2; @@ -636,6 +676,7 @@ CheckTypeTag(napi_env env, napi_callback_info info) { NODE_API_CALL(env, napi_get_cb_info(env, info, &argc, argv, NULL, NULL)); NODE_API_CALL(env, napi_get_value_uint32(env, argv[0], &type_index)); + VALIDATE_TYPE_INDEX(env, type_index); NODE_API_CALL(env, napi_check_object_type_tag(env, argv[1], &type_tags[type_index], @@ -648,31 +689,36 @@ CheckTypeTag(napi_env env, napi_callback_info info) { EXTERN_C_START napi_value Init(napi_env env, napi_value exports) { napi_property_descriptor descriptors[] = { - DECLARE_NODE_API_PROPERTY("Get", Get), - DECLARE_NODE_API_PROPERTY("GetNamed", GetNamed), - DECLARE_NODE_API_PROPERTY("GetPropertyNames", GetPropertyNames), - DECLARE_NODE_API_PROPERTY("GetSymbolNames", GetSymbolNames), - DECLARE_NODE_API_PROPERTY("GetEnumerableWritableNames", GetEnumerableWritableNames), - DECLARE_NODE_API_PROPERTY("GetOwnWritableNames", GetOwnWritableNames), - DECLARE_NODE_API_PROPERTY("GetEnumerableConfigurableNames", GetEnumerableConfigurableNames), - DECLARE_NODE_API_PROPERTY("GetOwnConfigurableNames", GetOwnConfigurableNames), - DECLARE_NODE_API_PROPERTY("Set", Set), - DECLARE_NODE_API_PROPERTY("SetNamed", SetNamed), - DECLARE_NODE_API_PROPERTY("Has", Has), - DECLARE_NODE_API_PROPERTY("HasNamed", HasNamed), - DECLARE_NODE_API_PROPERTY("HasOwn", HasOwn), - DECLARE_NODE_API_PROPERTY("Delete", Delete), - DECLARE_NODE_API_PROPERTY("New", New), - DECLARE_NODE_API_PROPERTY("Inflate", Inflate), - DECLARE_NODE_API_PROPERTY("Wrap", Wrap), - DECLARE_NODE_API_PROPERTY("Unwrap", Unwrap), - DECLARE_NODE_API_PROPERTY("TestSetProperty", TestSetProperty), - DECLARE_NODE_API_PROPERTY("TestHasProperty", TestHasProperty), - DECLARE_NODE_API_PROPERTY("TypeTaggedInstance", TypeTaggedInstance), - DECLARE_NODE_API_PROPERTY("CheckTypeTag", CheckTypeTag), - DECLARE_NODE_API_PROPERTY("TestGetProperty", TestGetProperty), - DECLARE_NODE_API_PROPERTY("TestFreeze", TestFreeze), - DECLARE_NODE_API_PROPERTY("TestSeal", TestSeal), + DECLARE_NODE_API_PROPERTY("Get", Get), + DECLARE_NODE_API_PROPERTY("GetNamed", GetNamed), + DECLARE_NODE_API_PROPERTY("GetPropertyNames", GetPropertyNames), + DECLARE_NODE_API_PROPERTY("GetSymbolNames", GetSymbolNames), + DECLARE_NODE_API_PROPERTY("GetEnumerableWritableNames", + GetEnumerableWritableNames), + DECLARE_NODE_API_PROPERTY("GetOwnWritableNames", GetOwnWritableNames), + DECLARE_NODE_API_PROPERTY("GetEnumerableConfigurableNames", + GetEnumerableConfigurableNames), + DECLARE_NODE_API_PROPERTY("GetOwnConfigurableNames", + GetOwnConfigurableNames), + DECLARE_NODE_API_PROPERTY("Set", Set), + DECLARE_NODE_API_PROPERTY("SetNamed", SetNamed), + DECLARE_NODE_API_PROPERTY("Has", Has), + DECLARE_NODE_API_PROPERTY("HasNamed", HasNamed), + DECLARE_NODE_API_PROPERTY("HasOwn", HasOwn), + DECLARE_NODE_API_PROPERTY("Delete", Delete), + DECLARE_NODE_API_PROPERTY("New", New), + DECLARE_NODE_API_PROPERTY("Inflate", Inflate), + DECLARE_NODE_API_PROPERTY("Wrap", Wrap), + DECLARE_NODE_API_PROPERTY("Unwrap", Unwrap), + DECLARE_NODE_API_PROPERTY("TestSetProperty", TestSetProperty), + DECLARE_NODE_API_PROPERTY("TestHasProperty", TestHasProperty), + DECLARE_NODE_API_PROPERTY("TypeTaggedInstance", TypeTaggedInstance), + DECLARE_NODE_API_PROPERTY("TypeTaggedExternal", TypeTaggedExternal), + DECLARE_NODE_API_PROPERTY("PlainExternal", PlainExternal), + DECLARE_NODE_API_PROPERTY("CheckTypeTag", CheckTypeTag), + DECLARE_NODE_API_PROPERTY("TestGetProperty", TestGetProperty), + DECLARE_NODE_API_PROPERTY("TestFreeze", TestFreeze), + DECLARE_NODE_API_PROPERTY("TestSeal", TestSeal), }; init_test_null(env, exports); From ac442463256520245bef470edc9c51427387f620 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 22 Mar 2023 10:28:02 +0100 Subject: [PATCH 027/131] inspector: log response and requests in the inspector for debugging Logs the raw messages from the inspector when NODE_DEBUG_NATIVE is set to inspector_server to facilitate debugging. PR-URL: https://github.com/nodejs/node/pull/46941 Reviewed-By: Rafael Gonzaga Reviewed-By: Darshan Sen --- src/inspector_agent.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 02842c7e5e792c..bb60e47e9d9cc7 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -248,6 +248,9 @@ class ChannelImpl final : public v8_inspector::V8Inspector::Channel, void dispatchProtocolMessage(const StringView& message) { std::string raw_message = protocol::StringUtil::StringViewToUtf8(message); + per_process::Debug(DebugCategory::INSPECTOR_SERVER, + "[inspector received] %s\n", + raw_message); std::unique_ptr value = protocol::DictionaryValue::cast(protocol::StringUtil::parseMessage( raw_message, false)); @@ -296,6 +299,13 @@ class ChannelImpl final : public v8_inspector::V8Inspector::Channel, void flushProtocolNotifications() override { } void sendMessageToFrontend(const StringView& message) { + if (per_process::enabled_debug_list.enabled( + DebugCategory::INSPECTOR_SERVER)) { + std::string raw_message = protocol::StringUtil::StringViewToUtf8(message); + per_process::Debug(DebugCategory::INSPECTOR_SERVER, + "[inspector send] %s\n", + raw_message); + } delegate_->SendMessageToFrontend(message); } From 0ebd0c86113e5ff072af4ab4db9917d0cb71f90e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Wed, 22 Mar 2023 12:41:06 +0100 Subject: [PATCH 028/131] crypto: unify validation of checkPrime checks Previously, the JS layer would validate that the value of the 'checks' option was an unsigned 32-bit integer, otherwise throwing an appropriate error but with a slightly misleading error message. Then the C++ layer would validate that the value was an unsigned 31-bit integer, otherwise throwing an appropriate error, but with a different (and even less helpful) error message. Instead, make the JS layer aware of the 31-bit restriction so that no validation in C++ is necessary and so that the error message always matches the exact requirement. PR-URL: https://github.com/nodejs/node/pull/47165 Reviewed-By: Luigi Pinca Reviewed-By: Ben Noordhuis --- lib/internal/crypto/random.js | 7 ++++--- src/crypto/crypto_random.cc | 15 ++++----------- test/parallel/test-crypto-prime.js | 11 +++++++++++ 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/lib/internal/crypto/random.js b/lib/internal/crypto/random.js index 3416b38034ea04..bcc36b346741f4 100644 --- a/lib/internal/crypto/random.js +++ b/lib/internal/crypto/random.js @@ -52,7 +52,6 @@ const { validateFunction, validateInt32, validateObject, - validateUint32, } = require('internal/validators'); const { @@ -563,7 +562,8 @@ function checkPrime(candidate, options = kEmptyObject, callback) { checks = 0, } = options; - validateUint32(checks, 'options.checks'); + // The checks option is unsigned but must fit into a signed C int for OpenSSL. + validateInt32(checks, 'options.checks', 0); const job = new CheckPrimeJob(kCryptoJobAsync, candidate, checks); job.ondone = callback; @@ -591,7 +591,8 @@ function checkPrimeSync(candidate, options = kEmptyObject) { checks = 0, } = options; - validateUint32(checks, 'options.checks'); + // The checks option is unsigned but must fit into a signed C int for OpenSSL. + validateInt32(checks, 'options.checks', 0); const job = new CheckPrimeJob(kCryptoJobSync, candidate, checks); const { 0: err, 1: result } = job.run(); diff --git a/src/crypto/crypto_random.cc b/src/crypto/crypto_random.cc index 2f9e9aacb1e652..2652b7d8aae17a 100644 --- a/src/crypto/crypto_random.cc +++ b/src/crypto/crypto_random.cc @@ -15,6 +15,7 @@ using v8::ArrayBuffer; using v8::BackingStore; using v8::False; using v8::FunctionCallbackInfo; +using v8::Int32; using v8::Just; using v8::Local; using v8::Maybe; @@ -185,8 +186,6 @@ Maybe CheckPrimeTraits::AdditionalConfig( const FunctionCallbackInfo& args, unsigned int offset, CheckPrimeConfig* params) { - Environment* env = Environment::GetCurrent(args); - ArrayBufferOrViewContents candidate(args[offset]); params->candidate = @@ -195,15 +194,9 @@ Maybe CheckPrimeTraits::AdditionalConfig( candidate.size(), nullptr)); - CHECK(args[offset + 1]->IsUint32()); // Checks - - const int checks = static_cast(args[offset + 1].As()->Value()); - if (checks < 0) { - THROW_ERR_OUT_OF_RANGE(env, "invalid options.checks"); - return Nothing(); - } - - params->checks = checks; + CHECK(args[offset + 1]->IsInt32()); // Checks + params->checks = args[offset + 1].As()->Value(); + CHECK_GE(params->checks, 0); return Just(true); } diff --git a/test/parallel/test-crypto-prime.js b/test/parallel/test-crypto-prime.js index 5eef83fb266bb8..f0ec4efaf611c8 100644 --- a/test/parallel/test-crypto-prime.js +++ b/test/parallel/test-crypto-prime.js @@ -240,6 +240,17 @@ for (const checks of ['hello', {}, []]) { }); } +for (const checks of [-(2 ** 31), -1, 2 ** 31, 2 ** 32 - 1, 2 ** 32, 2 ** 50]) { + assert.throws(() => checkPrime(2n, { checks }, common.mustNotCall()), { + code: 'ERR_OUT_OF_RANGE', + message: /<= 2147483647/ + }); + assert.throws(() => checkPrimeSync(2n, { checks }), { + code: 'ERR_OUT_OF_RANGE', + message: /<= 2147483647/ + }); +} + assert(!checkPrimeSync(Buffer.from([0x1]))); assert(checkPrimeSync(Buffer.from([0x2]))); assert(checkPrimeSync(Buffer.from([0x3]))); From 888b9fb1c5047aeb840ae127c96cc2bdd755674e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Wed, 22 Mar 2023 12:41:15 +0100 Subject: [PATCH 029/131] src: replace impossible THROW with CHECK The JS layer already verifies that divisor_bits is either a non-negative 32-bit signed integer or null/undefined, in which case it passes -1 to the C++ layer. In either case, the C++ layer receives a 32-bit signed integer greater than or equal to -1. PR-URL: https://github.com/nodejs/node/pull/47168 Reviewed-By: Darshan Sen Reviewed-By: Luigi Pinca --- src/crypto/crypto_dsa.cc | 6 +----- test/parallel/test-crypto-keygen.js | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/crypto/crypto_dsa.cc b/src/crypto/crypto_dsa.cc index 6839283fbf4ca7..3fa4a415dc911a 100644 --- a/src/crypto/crypto_dsa.cc +++ b/src/crypto/crypto_dsa.cc @@ -83,16 +83,12 @@ Maybe DsaKeyGenTraits::AdditionalConfig( const FunctionCallbackInfo& args, unsigned int* offset, DsaKeyPairGenConfig* params) { - Environment* env = Environment::GetCurrent(args); CHECK(args[*offset]->IsUint32()); // modulus bits CHECK(args[*offset + 1]->IsInt32()); // divisor bits params->params.modulus_bits = args[*offset].As()->Value(); params->params.divisor_bits = args[*offset + 1].As()->Value(); - if (params->params.divisor_bits < -1) { - THROW_ERR_OUT_OF_RANGE(env, "invalid value for divisor_bits"); - return Nothing(); - } + CHECK_GE(params->params.divisor_bits, -1); *offset += 2; diff --git a/test/parallel/test-crypto-keygen.js b/test/parallel/test-crypto-keygen.js index 1a77266b057041..df8c5d93a90342 100644 --- a/test/parallel/test-crypto-keygen.js +++ b/test/parallel/test-crypto-keygen.js @@ -1278,7 +1278,7 @@ const sec1EncExp = (cipher) => getRegExpForPEM('EC PRIVATE KEY', cipher); } // Test invalid divisor lengths. (out of range) - for (const divisorLength of [-6, -9, 2147483648]) { + for (const divisorLength of [-1, -6, -9, 2147483648]) { assert.throws(() => generateKeyPair('dsa', { modulusLength: 2048, divisorLength From 9220b598bdf6ecfc33c755258f35968a18f9279a Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Wed, 22 Mar 2023 16:02:53 +0100 Subject: [PATCH 030/131] tools: update daily wpt actions summary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47138 Reviewed-By: Luigi Pinca Reviewed-By: Michaël Zasso --- .github/workflows/daily-wpt-fyi.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index 14a6e984c5ad84..386f4eab2e222d 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -135,6 +135,8 @@ jobs: run: | gzip wptreport.json echo "## Node.js ${{ steps.setup-node.outputs.node-version }}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "WPT Revision: [\`${WPT_REVISION:0:7}\`](https://github.com/web-platform-tests/wpt/commits/$WPT_REVISION)" >> $GITHUB_STEP_SUMMARY for WPT_FYI_ENDPOINT in "https://wpt.fyi/api/results/upload" "https://staging.wpt.fyi/api/results/upload" do response=$(curl -sS \ @@ -148,7 +150,7 @@ jobs: origin=${WPT_FYI_ENDPOINT%/api/results/upload} echo "" >> $GITHUB_STEP_SUMMARY - echo "Run ID [$run_id]($origin/api/runs/$run_id) added to the processor queue at $origin" >> $GITHUB_STEP_SUMMARY + echo "Run ID [\`$run_id\`]($origin/api/runs/$run_id) added to the processor queue at ${origin:8}" >> $GITHUB_STEP_SUMMARY echo "- [View on the ${origin:8} dashboard]($origin/results?run_id=$run_id)" >> $GITHUB_STEP_SUMMARY fi done From 6504600c2dcfc47513ff8412a22f11a450b1ec3e Mon Sep 17 00:00:00 2001 From: Khafra Date: Wed, 22 Mar 2023 15:44:44 -0400 Subject: [PATCH 031/131] url: implement URL.canParse PR-URL: https://github.com/nodejs/node/pull/47179 Reviewed-By: Yagiz Nizipli Reviewed-By: Debadree Chatterjee --- benchmark/url/whatwgurl-canParse.js | 14 +++++++ doc/api/url.md | 21 ++++++++++ lib/internal/url.js | 20 +++++++++ src/node_url.cc | 26 ++++++++++++ test/fixtures/wpt/README.md | 2 +- .../wpt/url/url-statics-canparse.any.js | 42 +++++++++++++++++++ test/fixtures/wpt/versions.json | 2 +- 7 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 benchmark/url/whatwgurl-canParse.js create mode 100644 test/fixtures/wpt/url/url-statics-canparse.any.js diff --git a/benchmark/url/whatwgurl-canParse.js b/benchmark/url/whatwgurl-canParse.js new file mode 100644 index 00000000000000..65741d9884f106 --- /dev/null +++ b/benchmark/url/whatwgurl-canParse.js @@ -0,0 +1,14 @@ +'use strict'; +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + type: Object.keys(common.urls), + n: [25e6], +}); + +function main({ type, n }) { + bench.start(); + for (let i = 0; i < n; i += 1) + URL.canParse(common.urls[type]); + bench.end(n); +} diff --git a/doc/api/url.md b/doc/api/url.md index ab8b4154ff023e..de4a4cb85bce37 100644 --- a/doc/api/url.md +++ b/doc/api/url.md @@ -662,6 +662,27 @@ added: v16.7.0 Removes the stored {Blob} identified by the given ID. Attempting to revoke a ID that isn't registered will silently fail. +#### `URL.canParse(input[, base])` + + + +* `input` {string} The absolute or relative input URL to parse. If `input` + is relative, then `base` is required. If `input` is absolute, the `base` + is ignored. If `input` is not a string, it is [converted to a string][] first. +* `base` {string} The base URL to resolve against if the `input` is not + absolute. If `base` is not a string, it is [converted to a string][] first. +* Returns: {boolean} + +Checks if an `input` relative to the `base` can be parsed to a `URL`. + +```js +const isValid = URL.canParse('/foo', 'https://example.org/'); // true + +const isNotValid = URL.canParse('/foo'); // false +``` + ### Class: `URLSearchParams` - 1033 - - The Setup Wizard will install [ProductName] on your computer. - Choose a custom location or click Next to install. - - A later version of [ProductName] is already installed. Setup will now exit. - - [ProductName] Setup - {\WixUI_Font_Title}Tools for Native Modules - Optionally install the tools necessary to compile native modules. - WixUI_Bmp_Banner - Some npm modules need to be compiled from C/C++ when installing. If you want to be able to install such modules, some tools (Python and Visual Studio Build Tools) need to be installed. - Automatically install the necessary tools. Note that this will also install Chocolatey. The script will pop-up in a new window after the installation completes. - Alternatively, follow the instructions at https://github.com/nodejs/node-gyp#on-windows]]> to install the dependencies yourself. - - - Node.js runtime - Install the core [ProductName] runtime (node.exe). - - npm package manager - Install npm, the recommended package manager for [ProductName]. - - corepack manager - Install corepack, the universal package manager for [ProductName]. - - Online documentation shortcuts - Add start menu entries that link the online documentation for [ProductName] [FullVersion] and the [ProductName] website. - - Add to PATH - Add [ProductName], npm, and modules that were globally installed by npm to the PATH environment variable. - - Node.js and npm - Add [ProductName] and npm (if installed) to the PATH environment variable. - - npm modules - Add modules that are installed globally by npm to the PATH environment variable. This option works for the current user only; other users need to update their PATH manually. - - - Node.js has been successfully installed. - diff --git a/tools/msvs/msi/nodemsi.sln b/tools/msvs/msi/nodemsi.sln index 86b4b10dcb043f..e06530f5e24abd 100644 --- a/tools/msvs/msi/nodemsi.sln +++ b/tools/msvs/msi/nodemsi.sln @@ -1,9 +1,13 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "nodemsi", "nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}" +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.33027.164 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "nodemsi", "nodemsi\nodemsi.wixproj", "{1D808FF0-B5A9-4BE9-859D-B334B6F48BE2}" + ProjectSection(ProjectDependencies) = postProject + {B70585F8-DAB7-40FA-9904-13CF53A73A06} = {B70585F8-DAB7-40FA-9904-13CF53A73A06} + EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_actions", "custom_actions.vcxproj", "{B70585F8-DAB7-40FA-9904-13CF53A73A06}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "custom_actions", "custom_actions\custom_actions.vcxproj", "{B70585F8-DAB7-40FA-9904-13CF53A73A06}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -43,4 +47,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FB650322-7A09-471D-A635-F2DBDCEECDB8} + EndGlobalSection EndGlobal diff --git a/tools/msvs/msi/nodemsi.wixproj b/tools/msvs/msi/nodemsi.wixproj deleted file mode 100644 index 0cf215daca5978..00000000000000 --- a/tools/msvs/msi/nodemsi.wixproj +++ /dev/null @@ -1,93 +0,0 @@ - - - - Debug - x86 - 3.5 - {1d808ff0-b5a9-4be9-859d-b334b6f48be2} - 2.0 - node-v$(FullVersion)-$(Platform) - Package - True - $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets - 0.0.0.0 - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - en-US - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - ..\..\..\ - obj\$(Configuration)\ - Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder - - - True - - - - - npm.wxs - - - corepack.wxs - - - - - $(WixExtDir)\WixUIExtension.dll - WixUIExtension - - - $(WixExtDir)\WiXUtilExtension.dll - WiXUtilExtension - - - - - - - - custom_actions - {b70585f8-dab7-40fa-9904-13cf53a73a06} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - - - - - - - - - - - move "!(TargetPath)" "$(TargetDir)\$(TargetFileName)" - move "!(TargetPdbPath)" "$(TargetDir)\$(TargetPdbName)" - - diff --git a/tools/msvs/msi/nodemsi/i18n/en-us.wxl b/tools/msvs/msi/nodemsi/i18n/en-us.wxl new file mode 100644 index 00000000000000..5074d5a43125f7 --- /dev/null +++ b/tools/msvs/msi/nodemsi/i18n/en-us.wxl @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/msvs/msi/nodemsi/nodemsi.wixproj b/tools/msvs/msi/nodemsi/nodemsi.wixproj new file mode 100644 index 00000000000000..b1463cf65696b9 --- /dev/null +++ b/tools/msvs/msi/nodemsi/nodemsi.wixproj @@ -0,0 +1,70 @@ + + + + Debug + x86 + 3.5 + {1d808ff0-b5a9-4be9-859d-b334b6f48be2} + node-v$(FullVersion)-$(Platform) + Package + 0.0.0.0 + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFilesFolder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + en-US + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + + + ..\..\..\..\ + obj\$(Configuration)\ + Debug;ProductVersion=$(NodeVersion);FullVersion=$(FullVersion);DistTypeDir=$(DistTypeDir);NpmSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\npm\;CorepackSourceDir=..\..\..\..\Release\node-v$(FullVersion)-win-$(Platform)\node_modules\corepack\;ProgramFilesFolderId=ProgramFiles64Folder + + + + npm.wxs + + + corepack.wxs + + + + + + + + + + + + + + + + + + + move "$(TargetDir)en-us\$(TargetFileName)" "$(TargetPath)" + move "$(TargetDir)en-us\$(TargetPdbFileName)" "$(TargetPdbPath)" + + diff --git a/tools/msvs/msi/product.wxs b/tools/msvs/msi/nodemsi/product.wxs old mode 100755 new mode 100644 similarity index 79% rename from tools/msvs/msi/product.wxs rename to tools/msvs/msi/nodemsi/product.wxs index c6984777fac3fa..de4a6a34cee118 --- a/tools/msvs/msi/product.wxs +++ b/tools/msvs/msi/nodemsi/product.wxs @@ -1,6 +1,6 @@ - - + @@ -8,24 +8,18 @@ - + - + UpgradeCode="47c07a3a-42ef-4213-a85d-8f5a59077c28" + InstallerVersion="200" + Compressed="yes"> - - - - = 603) OR (VersionNT >= 602 AND MsiNTProductType <> 1)]]> - + @@ -46,10 +40,9 @@ - - - - + + + + AllowAbsent="no"> @@ -79,7 +72,6 @@ - - - - - + + + - - - + + - + @@ -197,13 +187,13 @@ + - - - - - - - - + + + + + + + - + @@ -314,38 +304,39 @@ - + - - + + - + - - - + + + @@ -383,34 +374,35 @@ - 1 + - NOT Installed - Installed AND PATCH - 1 - LicenseAccepted = "1" - 1 - 1 - 1 - 1 - 1 - NOT Installed OR WixUI_InstallMode = "Change" - Installed AND NOT PATCH - Installed AND PATCH - 1 - 1 - 1 - 1 - 1 - Installed - NOT Installed - 1 - 1 - 1 - NATIVETOOLSCHECKBOX = 1 - 1 + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420,6 +412,6 @@ - + diff --git a/vcbuild.bat b/vcbuild.bat index 858b54cc23c57c..a4dd3a28d5c98b 100644 --- a/vcbuild.bat +++ b/vcbuild.bat @@ -259,19 +259,6 @@ echo Looking for Visual Studio 2022 if not defined target_env set "VCINSTALLDIR=" call tools\msvs\vswhere_usability_wrapper.cmd "[17.0,18.0)" %target_arch% "prerelease" if "_%VCINSTALLDIR%_" == "__" goto vs-set-2019 -set "WIXSDKDIR=%WIX%\SDK\VS2017" -if defined msi ( - echo Looking for WiX installation for Visual Studio 2022... - if not exist "%WIXSDKDIR%" ( - echo Failed to find WiX install for Visual Studio 2022 - echo VS2022 support for WiX is only present starting at version 3.XX - goto vs-set-2019 - ) - if not exist "%VCINSTALLDIR%\..\MSBuild\Microsoft\WiX" ( - echo Failed to find the WiX Toolset Visual Studio 2022 Extension - goto vs-set-2019 - ) -) @rem check if VS2022 is already setup, and for the requested arch if "_%VisualStudioVersion%_" == "_17.0_" if "_%VSCMD_ARG_TGT_ARCH%_"=="_%target_arch%_" goto found_vs2022 @rem need to clear VSINSTALLDIR for vcvarsall to work as expected @@ -299,19 +286,6 @@ echo Looking for Visual Studio 2019 if not defined target_env set "VCINSTALLDIR=" call tools\msvs\vswhere_usability_wrapper.cmd "[16.0,17.0)" %target_arch% "prerelease" if "_%VCINSTALLDIR%_" == "__" goto msbuild-not-found -set "WIXSDKDIR=%WIX%\SDK\VS2017" -if defined msi ( - echo Looking for WiX installation for Visual Studio 2019... - if not exist "%WIXSDKDIR%" ( - echo Failed to find WiX install for Visual Studio 2019 - echo VS2019 support for WiX is only present starting at version 3.11 - goto msbuild-not-found - ) - if not exist "%VCINSTALLDIR%\..\MSBuild\Microsoft\WiX" ( - echo Failed to find the WiX Toolset Visual Studio 2019 Extension - goto msbuild-not-found - ) -) @rem check if VS2019 is already setup, and for the requested arch if "_%VisualStudioVersion%_" == "_16.0_" if "_%VSCMD_ARG_TGT_ARCH%_"=="_%target_arch%_" goto found_vs2019 @rem need to clear VSINSTALLDIR for vcvarsall to work as expected @@ -532,7 +506,7 @@ if not defined msi goto install-doctools echo Building node-v%FULLVERSION%-%target_arch%.msi set "msbsdk=" if defined WindowsSDKVersion set "msbsdk=/p:WindowsTargetPlatformVersion=%WindowsSDKVersion:~0,-1%" -msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Clean,Build %msbsdk% /p:PlatformToolset=%PLATFORM_TOOLSET% /p:WixSdkDir="%WIXSDKDIR%" /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo +msbuild "%~dp0tools\msvs\msi\nodemsi.sln" /m /t:Restore,Clean,Build %msbsdk% /p:PlatformToolset=%PLATFORM_TOOLSET% /p:Configuration=%config% /p:Platform=%target_arch% /p:NodeVersion=%NODE_VERSION% /p:FullVersion=%FULLVERSION% /p:DistTypeDir=%DISTTYPEDIR% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo if errorlevel 1 goto exit if not defined sign goto upload From ac85146fc5e7db7e5a2a8a882c45eabda03baf09 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Thu, 23 Mar 2023 00:49:56 +0000 Subject: [PATCH 033/131] meta: move TSC voting member(s) to regular member(s) PR-URL: https://github.com/nodejs/node/pull/47180 Reviewed-By: Darshan Sen Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca Reviewed-By: Joyee Cheung Reviewed-By: Rafael Gonzaga Reviewed-By: Chengzhong Wu --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 295f0c600ad4ab..0084841e921e86 100644 --- a/README.md +++ b/README.md @@ -170,8 +170,6 @@ For information about the governance of the Node.js project, see **Beth Griggs** <> (she/her) * [BridgeAR](https://github.com/BridgeAR) - **Ruben Bridgewater** <> (he/him) -* [ChALkeR](https://github.com/ChALkeR) - - **Сковорода Никита Андреевич** <> (he/him) * [cjihrig](https://github.com/cjihrig) - **Colin Ihrig** <> (he/him) * [danielleadams](https://github.com/danielleadams) - @@ -211,6 +209,8 @@ For information about the governance of the Node.js project, see **Anna Henningsen** <> (she/her) * [bnoordhuis](https://github.com/bnoordhuis) - **Ben Noordhuis** <> +* [ChALkeR](https://github.com/ChALkeR) - + **Сковорода Никита Андреевич** <> (he/him) * [codebytere](https://github.com/codebytere) - **Shelley Vohr** <> (she/her) * [danbev](https://github.com/danbev) - From 7e3eacc3a9b29bdd4ae575fb7c566d9948472ea8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Thu, 23 Mar 2023 01:50:05 +0100 Subject: [PATCH 034/131] doc: remove use of DEFAULT_ENCODING in PBKDF2 docs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no point in documenting this legacy behavior, which will emit a warning when used. PR-URL: https://github.com/nodejs/node/pull/47181 Reviewed-By: Ben Noordhuis Reviewed-By: Michaël Zasso Reviewed-By: Filip Skokan Reviewed-By: Luigi Pinca --- doc/api/crypto.md | 40 ---------------------------------------- 1 file changed, 40 deletions(-) diff --git a/doc/api/crypto.md b/doc/api/crypto.md index 29000bcbcca691..984cdbaa8da3c5 100644 --- a/doc/api/crypto.md +++ b/doc/api/crypto.md @@ -4430,28 +4430,6 @@ pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => { }); ``` -The `crypto.DEFAULT_ENCODING` property can be used to change the way the -`derivedKey` is passed to the callback. This property, however, has been -deprecated and use should be avoided. - -```mjs -import crypto from 'node:crypto'; -crypto.DEFAULT_ENCODING = 'hex'; -crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, derivedKey) => { - if (err) throw err; - console.log(derivedKey); // '3745e48...aa39b34' -}); -``` - -```cjs -const crypto = require('node:crypto'); -crypto.DEFAULT_ENCODING = 'hex'; -crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, derivedKey) => { - if (err) throw err; - console.log(derivedKey); // '3745e48...aa39b34' -}); -``` - An array of supported digest functions can be retrieved using [`crypto.getHashes()`][]. @@ -4521,24 +4499,6 @@ const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512'); console.log(key.toString('hex')); // '3745e48...08d59ae' ``` -The `crypto.DEFAULT_ENCODING` property may be used to change the way the -`derivedKey` is returned. This property, however, is deprecated and use -should be avoided. - -```mjs -import crypto from 'node:crypto'; -crypto.DEFAULT_ENCODING = 'hex'; -const key = crypto.pbkdf2Sync('secret', 'salt', 100000, 512, 'sha512'); -console.log(key); // '3745e48...aa39b34' -``` - -```cjs -const crypto = require('node:crypto'); -crypto.DEFAULT_ENCODING = 'hex'; -const key = crypto.pbkdf2Sync('secret', 'salt', 100000, 512, 'sha512'); -console.log(key); // '3745e48...aa39b34' -``` - An array of supported digest functions can be retrieved using [`crypto.getHashes()`][]. From add1313459435eb68797f5bae8c9f4d3aa2e6f16 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 23 Mar 2023 10:38:17 +0100 Subject: [PATCH 035/131] tools: notify on Slack when invalid commit lands PR-URL: https://github.com/nodejs/node/pull/47178 Reviewed-By: Rich Trott Reviewed-By: Yagiz Nizipli Reviewed-By: Debadree Chatterjee Reviewed-By: Darshan Sen Reviewed-By: Tierney Cyren Reviewed-By: Akhil Marsonya Reviewed-By: Chengzhong Wu Reviewed-By: Matteo Collina --- .github/workflows/notify-force-push.yml | 28 ----------- .github/workflows/notify-on-push.yml | 66 +++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 28 deletions(-) delete mode 100644 .github/workflows/notify-force-push.yml create mode 100644 .github/workflows/notify-on-push.yml diff --git a/.github/workflows/notify-force-push.yml b/.github/workflows/notify-force-push.yml deleted file mode 100644 index 69aacc8524fd93..00000000000000 --- a/.github/workflows/notify-force-push.yml +++ /dev/null @@ -1,28 +0,0 @@ -on: - push: - branches: - - main - -name: Notify on Force Push -permissions: - contents: read - -jobs: - slackNotification: - name: Slack Notification - if: github.repository == 'nodejs/node' && github.event.forced - runs-on: ubuntu-latest - steps: - - name: Slack Notification - uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 - env: - SLACK_COLOR: '#DE512A' - SLACK_ICON: https://github.com/nodejs.png?size=48 - SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }} - SLACK_MESSAGE: | - A commit was force-pushed to by - - Before: - After: - SLACK_USERNAME: nodejs-bot - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml new file mode 100644 index 00000000000000..dd415a4a380dae --- /dev/null +++ b/.github/workflows/notify-on-push.yml @@ -0,0 +1,66 @@ +on: + push: + branches: + - main + +name: Notify on Push +permissions: + contents: read + +jobs: + notifyOnForcePush: + name: Notify on Force Push on `main` + if: github.repository == 'nodejs/node' && github.event.forced + runs-on: ubuntu-latest + steps: + - name: Slack Notification + uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 + env: + SLACK_COLOR: '#DE512A' + SLACK_ICON: https://github.com/nodejs.png?size=48 + SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }} + SLACK_MESSAGE: | + A commit was force-pushed to by + + Before: + After: + SLACK_USERNAME: nodejs-bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} + + notifyOnMissingMetadata: + name: Notify on Push on `main` that lacks metadata + if: github.repository == 'nodejs/node' + runs-on: ubuntu-latest + steps: + - name: Check commit message + run: npx -q core-validate-commit ${{ github.event.commits[0].id }} || echo "INVALID_COMMIT_MESSAGE=1" >> $GITHUB_ENV + - name: Retrieve PR number if possible + if: ${{ env.INVALID_COMMIT_MESSAGE }} + run: | + node <<<'EOF' + const invalidCommitMessageMatch = /\s\(\#\d+\)$/.exec(process.env.COMMIT_MESSAGE); + if (match == null) process.exit(1) + console.log(`PR_ID=${match[0]}`) + EOF >> $GITHUB_ENV || true + env: + COMMIT_MESSAGE: ${{ github.event.commits[0].message }} + - name: Comment on the Pull Request + if: ${{ env.PR_ID }} + run: gh pr comment ${{ env.PR_ID }} --repo "${{ github.repository }}" --body "$BODY" + env: + BODY: | + A commit referencing this Pull Request was pushed to `main` by @${{ github.actor }} without the expected commit metadata added to its message. + - name: Slack Notification + if: ${{ env.INVALID_COMMIT_MESSAGE }} + uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 + env: + SLACK_COLOR: '#DE512A' + SLACK_ICON: https://github.com/nodejs.png?size=48 + SLACK_TITLE: Invalid commit was pushed to ${{ github.repository.default_branch }} + SLACK_MESSAGE: | + A commit lacking the expected metadata was pushed to by . + + Before: + After: + SLACK_USERNAME: nodejs-bot + SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} From bd72de645318f16f84a7f3f390f7387bfa4c2f74 Mon Sep 17 00:00:00 2001 From: Debadree Chatterjee Date: Thu, 23 Mar 2023 23:58:43 +0530 Subject: [PATCH 036/131] fs: invalidate blob created from empty file when written to MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: https://github.com/nodejs/node/issues/47161 PR-URL: https://github.com/nodejs/node/pull/47199 Reviewed-By: Ben Noordhuis Reviewed-By: Michaël Zasso --- lib/internal/blob.js | 12 ------------ test/parallel/test-blob-file-backed.js | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lib/internal/blob.js b/lib/internal/blob.js index 226a071b6d1a79..4188d999f7fde7 100644 --- a/lib/internal/blob.js +++ b/lib/internal/blob.js @@ -1,14 +1,12 @@ 'use strict'; const { - ArrayBuffer, ArrayFrom, MathMax, MathMin, ObjectDefineProperties, ObjectDefineProperty, PromiseReject, - PromiseResolve, ReflectConstruct, RegExpPrototypeExec, RegExpPrototypeSymbolReplace, @@ -266,10 +264,6 @@ class Blob { if (!isBlob(this)) return PromiseReject(new ERR_INVALID_THIS('Blob')); - if (this.size === 0) { - return PromiseResolve(new ArrayBuffer(0)); - } - const { promise, resolve, reject } = createDeferredPromise(); const reader = this[kHandle].getReader(); const buffers = []; @@ -316,12 +310,6 @@ class Blob { if (!isBlob(this)) throw new ERR_INVALID_THIS('Blob'); - if (this.size === 0) { - return new lazyReadableStream({ - start(c) { c.close(); }, - }); - } - const reader = this[kHandle].getReader(); return new lazyReadableStream({ start(c) { diff --git a/test/parallel/test-blob-file-backed.js b/test/parallel/test-blob-file-backed.js index 7271fef2f3ce46..225b660c7bbdb3 100644 --- a/test/parallel/test-blob-file-backed.js +++ b/test/parallel/test-blob-file-backed.js @@ -20,12 +20,14 @@ const { Blob } = require('buffer'); const tmpdir = require('../common/tmpdir'); const testfile = path.join(tmpdir.path, 'test-file-backed-blob.txt'); const testfile2 = path.join(tmpdir.path, 'test-file-backed-blob2.txt'); +const testfile3 = path.join(tmpdir.path, 'test-file-backed-blob3.txt'); tmpdir.refresh(); const data = `${'a'.repeat(1000)}${'b'.repeat(2000)}`; writeFileSync(testfile, data); writeFileSync(testfile2, data.repeat(100)); +writeFileSync(testfile3, ''); (async () => { const blob = await openAsBlob(testfile); @@ -79,3 +81,21 @@ writeFileSync(testfile2, data.repeat(100)); await unlink(testfile2); })().then(common.mustCall()); + +(async () => { + const blob = await openAsBlob(testfile3); + strictEqual(blob.size, 0); + strictEqual(await blob.text(), ''); + writeFileSync(testfile3, 'abc'); + await rejects(blob.text(), { name: 'NotReadableError' }); + await unlink(testfile3); +})().then(common.mustCall()); + +(async () => { + const blob = await openAsBlob(testfile3); + strictEqual(blob.size, 0); + writeFileSync(testfile3, 'abc'); + const stream = blob.stream(); + const reader = stream.getReader(); + await rejects(() => reader.read(), { name: 'NotReadableError' }); +})().then(common.mustCall()); From 90a8910c7ad071af3ca6f6d57db185d4dd8d6e4a Mon Sep 17 00:00:00 2001 From: HinataKah0 <128208841+HinataKah0@users.noreply.github.com> Date: Fri, 24 Mar 2023 02:45:53 +0800 Subject: [PATCH 037/131] test_runner: report failing tests after summary Re-output failing tests after summary has been printed. This behavior follows other popular test runners (e.g. jest, mocha, etc...). Updated SpecReporter: 1. When there is a 'test:fail' event, the test will be stored. 2. After no more input, all the failed tests will be flushed. 3. Extract the logic for formatting a test report into a re-usable function. Fixes: https://github.com/nodejs/node/issues/47110 PR-URL: https://github.com/nodejs/node/pull/47164 Reviewed-By: Moshe Atlow Reviewed-By: Colin Ihrig --- lib/internal/test_runner/reporter/spec.js | 92 +++++--- .../test_runner_output_spec_reporter.out | 209 ++++++++++++++++++ .../test_runner_default_reporter.js | 4 + .../test_runner_default_reporter.out | 50 ++++- 4 files changed, 315 insertions(+), 40 deletions(-) diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js index 3637c74111c4b7..2e3ba834351970 100644 --- a/lib/internal/test_runner/reporter/spec.js +++ b/lib/internal/test_runner/reporter/spec.js @@ -3,6 +3,7 @@ const { ArrayPrototypeJoin, ArrayPrototypePop, + ArrayPrototypePush, ArrayPrototypeShift, ArrayPrototypeUnshift, hardenRegExp, @@ -36,6 +37,7 @@ class SpecReporter extends Transform { #stack = []; #reported = []; #indentMemo = new SafeMap(); + #failedTests = []; constructor() { super({ writableObjectMode: true }); @@ -60,54 +62,74 @@ class SpecReporter extends Transform { ), `\n${indent} `); return `\n${indent} ${message}\n`; } - #handleEvent({ type, data }) { + #formatTestReport(type, data, prefix = '', indent = '', hasChildren = false, skippedSubtest = false) { let color = colors[type] ?? white; let symbol = symbols[type] ?? ' '; - + const duration_ms = data.details?.duration_ms ? ` ${gray}(${data.details.duration_ms}ms)${white}` : ''; + const title = `${data.name}${duration_ms}${skippedSubtest ? ' # SKIP' : ''}`; + if (hasChildren) { + // If this test has had children - it was already reported, so slightly modify the output + return `${prefix}${indent}${color}${symbols['arrow:right']}${white}${title}\n`; + } + const error = this.#formatError(data.details?.error, indent); + if (skippedSubtest) { + color = gray; + symbol = symbols['hyphen:minus']; + } + return `${prefix}${indent}${color}${symbol}${title}${white}${error}`; + } + #handleTestReportEvent(type, data) { + const subtest = ArrayPrototypeShift(this.#stack); // This is the matching `test:start` event + if (subtest) { + assert(subtest.type === 'test:start'); + assert(subtest.data.nesting === data.nesting); + assert(subtest.data.name === data.name); + } + let prefix = ''; + while (this.#stack.length) { + // Report all the parent `test:start` events + const parent = ArrayPrototypePop(this.#stack); + assert(parent.type === 'test:start'); + const msg = parent.data; + ArrayPrototypeUnshift(this.#reported, msg); + prefix += `${this.#indent(msg.nesting)}${symbols['arrow:right']}${msg.name}\n`; + } + let hasChildren = false; + if (this.#reported[0] && this.#reported[0].nesting === data.nesting && this.#reported[0].name === data.name) { + ArrayPrototypeShift(this.#reported); + hasChildren = true; + } + const skippedSubtest = subtest && data.skip && data.skip !== undefined; + const indent = this.#indent(data.nesting); + return `${this.#formatTestReport(type, data, prefix, indent, hasChildren, skippedSubtest)}\n`; + } + #handleEvent({ type, data }) { switch (type) { case 'test:fail': - case 'test:pass': { - const subtest = ArrayPrototypeShift(this.#stack); // This is the matching `test:start` event - if (subtest) { - assert(subtest.type === 'test:start'); - assert(subtest.data.nesting === data.nesting); - assert(subtest.data.name === data.name); - } - let prefix = ''; - while (this.#stack.length) { - // Report all the parent `test:start` events - const parent = ArrayPrototypePop(this.#stack); - assert(parent.type === 'test:start'); - const msg = parent.data; - ArrayPrototypeUnshift(this.#reported, msg); - prefix += `${this.#indent(msg.nesting)}${symbols['arrow:right']}${msg.name}\n`; - } - const skippedSubtest = subtest && data.skip && data.skip !== undefined; - const indent = this.#indent(data.nesting); - const duration_ms = data.details?.duration_ms ? ` ${gray}(${data.details.duration_ms}ms)${white}` : ''; - const title = `${data.name}${duration_ms}${skippedSubtest ? ' # SKIP' : ''}`; - if (this.#reported[0] && this.#reported[0].nesting === data.nesting && this.#reported[0].name === data.name) { - // If this test has had children - it was already reported, so slightly modify the output - ArrayPrototypeShift(this.#reported); - return `${prefix}${indent}${color}${symbols['arrow:right']}${white}${title}\n\n`; - } - const error = this.#formatError(data.details?.error, indent); - if (skippedSubtest) { - color = gray; - symbol = symbols['hyphen:minus']; - } - return `${prefix}${indent}${color}${symbol}${title}${error}${white}\n`; - } + ArrayPrototypePush(this.#failedTests, data); + return this.#handleTestReportEvent(type, data); + case 'test:pass': + return this.#handleTestReportEvent(type, data); case 'test:start': ArrayPrototypeUnshift(this.#stack, { __proto__: null, data, type }); break; case 'test:diagnostic': - return `${color}${this.#indent(data.nesting)}${symbol}${data.message}${white}\n`; + return `${colors[type]}${this.#indent(data.nesting)}${symbols[type]}${data.message}${white}\n`; } } _transform({ type, data }, encoding, callback) { callback(null, this.#handleEvent({ type, data })); } + _flush(callback) { + const results = [`\n${colors['test:fail']}${symbols['test:fail']}failing tests:${white}\n`]; + for (let i = 0; i < this.#failedTests.length; i++) { + ArrayPrototypePush(results, this.#formatTestReport( + 'test:fail', + this.#failedTests[i], + )); + } + callback(null, ArrayPrototypeJoin(results, '\n')); + } } module.exports = SpecReporter; diff --git a/test/message/test_runner_output_spec_reporter.out b/test/message/test_runner_output_spec_reporter.out index d5b443010e77cd..b3ca09b0561893 100644 --- a/test/message/test_runner_output_spec_reporter.out +++ b/test/message/test_runner_output_spec_reporter.out @@ -283,3 +283,212 @@ skipped 10 todo 5 duration_ms * + + failing tests: + + sync fail todo (*ms) + Error: thrown from sync fail todo + * + * + * + * + * + * + * + + sync fail todo with message (*ms) + Error: thrown from sync fail todo with message + * + * + * + * + * + * + * + + sync throw fail (*ms) + Error: thrown from sync throw fail + * + * + * + * + * + * + * + + async throw fail (*ms) + Error: thrown from async throw fail + * + * + * + * + * + * + * + + async skip fail (*ms) + Error: thrown from async throw fail + * + * + * + * + * + * + * + + async assertion fail (*ms) + AssertionError [ERR_ASSERTION]: Expected values to be strictly equal: + + true !== false + + * + * + * + * + * + * + * { + generatedMessage: true, + code: 'ERR_ASSERTION', + actual: true, + expected: false, + operator: 'strictEqual' + } + + reject fail (*ms) + Error: rejected from reject fail + * + * + * + * + * + * + * + + +sync throw fail (*ms) + Error: thrown from subtest sync throw fail + * + * + * + * + * + * + * + * + * + * + + subtest sync throw fail (*ms) + '1 subtest failed' + + sync throw non-error fail (*ms) + Symbol(thrown symbol from sync throw non-error fail) + + +long running (*ms) + 'test did not finish before its parent and was cancelled' + + top level (*ms) + '1 subtest failed' + + sync skip option is false fail (*ms) + Error: this should be executed + * + * + * + * + * + * + * + + callback fail (*ms) + Error: callback failure + * + * + + callback also returns a Promise (*ms) + 'passed a callback but also returned a Promise' + + callback throw (*ms) + Error: thrown from callback throw + * + * + * + * + * + * + * + + callback called twice (*ms) + 'callback invoked multiple times' + + callback called twice in future tick (*ms) + Error [ERR_TEST_FAILURE]: callback invoked multiple times + * + failureType: 'multipleCallbackInvocations', + cause: 'callback invoked multiple times', + code: 'ERR_TEST_FAILURE' + } + + callback async throw (*ms) + Error: thrown from callback async throw + * + * + + custom inspect symbol fail (*ms) + customized + + custom inspect symbol that throws fail (*ms) + { foo: 1, [Symbol(nodejs.util.inspect.custom)]: [Function: [nodejs.util.inspect.custom]] } + + sync throw fails at first (*ms) + Error: thrown from subtest sync throw fails at first + * + * + * + * + * + * + * + * + * + * + + sync throw fails at second (*ms) + Error: thrown from subtest sync throw fails at second + * + * + * + * + * + * + * + * + * + * + + subtest sync throw fails (*ms) + '2 subtests failed' + + timed out async test (*ms) + 'test timed out after 5ms' + + timed out callback test (*ms) + 'test timed out after 5ms' + + rejected thenable (*ms) + 'custom error' + + unfinished test with uncaughtException (*ms) + Error: foo + * + * + * + + unfinished test with unhandledRejection (*ms) + Error: bar + * + * + * + + invalid subtest fail (*ms) + 'test could not be started because its parent finished' diff --git a/test/pseudo-tty/test_runner_default_reporter.js b/test/pseudo-tty/test_runner_default_reporter.js index 1c6cda0ebbdd51..1596603b217660 100644 --- a/test/pseudo-tty/test_runner_default_reporter.js +++ b/test/pseudo-tty/test_runner_default_reporter.js @@ -9,3 +9,7 @@ const test = require('node:test'); test('should pass', () => {}); test('should fail', () => { throw new Error('fail'); }); test('should skip', { skip: true }, () => {}); +test('parent', () => { + test('should fail', () => { throw new Error('fail'); }); + test('should pass but parent fail', () => {}); +}); diff --git a/test/pseudo-tty/test_runner_default_reporter.out b/test/pseudo-tty/test_runner_default_reporter.out index aec99725c61cba..f032cf0a291562 100644 --- a/test/pseudo-tty/test_runner_default_reporter.out +++ b/test/pseudo-tty/test_runner_default_reporter.out @@ -1,5 +1,5 @@ [32m* should pass [90m(*ms)[39m[39m -[31m* should fail [90m(*ms)[39m +[31m* should fail [90m(*ms)[39m[39m Error: fail at * [90m(*)[39m [90m at *[39m @@ -8,13 +8,53 @@ [90m at *[39m [90m at *[39m [90m at *[39m -** + [90m* should skip [90m(*ms)[39m # SKIP[39m -[34m* tests 3[39m +* parent + [31m* should fail [90m(*ms)[39m[39m + Error: fail + at * [90m(*)[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + + [31m* should pass but parent fail [90m(*ms)[39m[39m + [32m'test did not finish before its parent and was cancelled'[39m + +[31m* [39mparent [90m(*ms)[39m + +[34m* tests 6[39m [34m* suites 0[39m [34m* pass 1[39m -[34m* fail 1[39m -[34m* cancelled 0[39m +[34m* fail 3[39m +[34m* cancelled 1[39m [34m* skipped 1[39m [34m* todo 0[39m [34m* duration_ms *[39m + +[31m* failing tests:[39m + +[31m* should fail [90m(*ms)[39m[39m + Error: fail + at * [90m(*)[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + +[31m* should fail [90m(*ms)[39m[39m + Error: fail + at * [90m(*)[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + [90m at *[39m + +[31m* should pass but parent fail [90m(*ms)[39m[39m + [32m'test did not finish before its parent and was cancelled'[39m + +[31m* parent [90m(*ms)[39m[39m + [32m'2 subtests failed'[39m From 429b6f64bc3cef2d2136b4fd307b2d1bcf4efce5 Mon Sep 17 00:00:00 2001 From: Yagiz Nizipli Date: Thu, 23 Mar 2023 15:45:21 -0400 Subject: [PATCH 038/131] url: add pending-deprecation to `url.parse()` PR-URL: https://github.com/nodejs/node/pull/47203 Reviewed-By: James M Snell Reviewed-By: Darshan Sen Reviewed-By: Chengzhong Wu Reviewed-By: Matteo Collina Reviewed-By: Beth Griggs Reviewed-By: Joyee Cheung --- doc/api/deprecations.md | 5 ++++- lib/url.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 7417817944e9be..fd5564c376153e 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -3280,13 +3280,16 @@ Node-API callbacks. -Type: Documentation-only +Type: Documentation-only (supports [`--pending-deprecation`][]) [`url.parse()`][] behavior is not standardized and prone to errors that have security implications. Use the [WHATWG URL API][] instead. CVEs are not diff --git a/lib/url.js b/lib/url.js index 9d2911cdf47f73..de77bda1159197 100644 --- a/lib/url.js +++ b/lib/url.js @@ -62,6 +62,8 @@ const { formatUrl, } = internalBinding('url'); +const { getOptionValue } = require('internal/options'); + // Original url.parse() API function Url() { @@ -146,7 +148,20 @@ const { CHAR_COLON, } = require('internal/constants'); +let urlParseWarned = false; + function urlParse(url, parseQueryString, slashesDenoteHost) { + if (!urlParseWarned && getOptionValue('--pending-deprecation')) { + urlParseWarned = true; + process.emitWarning( + '`url.parse()` behavior is not standardized and prone to ' + + 'errors that have security implications. Use the WHATWG URL API ' + + 'instead. CVEs are not issued for `url.parse()` vulnerabilities.', + 'DeprecationWarning', + 'DEP0169', + ); + } + if (url instanceof Url) return url; const urlObject = new Url(); From 0f2eff20cd6f80dbaa0e2105ea738d9476b7a051 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 23 Mar 2023 22:17:55 +0100 Subject: [PATCH 039/131] tools: fix Slack notification action PR-URL: https://github.com/nodejs/node/pull/47237 Reviewed-By: Moshe Atlow Reviewed-By: Debadree Chatterjee --- .github/workflows/notify-on-push.yml | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml index dd415a4a380dae..36e62ee53c7334 100644 --- a/.github/workflows/notify-on-push.yml +++ b/.github/workflows/notify-on-push.yml @@ -31,25 +31,29 @@ jobs: name: Notify on Push on `main` that lacks metadata if: github.repository == 'nodejs/node' runs-on: ubuntu-latest + permissions: + pull-requests: write steps: + - uses: actions/checkout@v3 + with: + persist-credentials: false - name: Check commit message - run: npx -q core-validate-commit ${{ github.event.commits[0].id }} || echo "INVALID_COMMIT_MESSAGE=1" >> $GITHUB_ENV + run: npx -q core-validate-commit ${{ github.event.after }} || echo "INVALID_COMMIT_MESSAGE=1" >> $GITHUB_ENV - name: Retrieve PR number if possible - if: ${{ env.INVALID_COMMIT_MESSAGE }} + if: env.INVALID_COMMIT_MESSAGE run: | - node <<<'EOF' - const invalidCommitMessageMatch = /\s\(\#\d+\)$/.exec(process.env.COMMIT_MESSAGE); - if (match == null) process.exit(1) - console.log(`PR_ID=${match[0]}`) - EOF >> $GITHUB_ENV || true - env: - COMMIT_MESSAGE: ${{ github.event.commits[0].message }} + COMMIT_TITLE=$(git --no-pager log --oneline -1 --no-color) node <<'EOF' >> $GITHUB_ENV || true + const invalidCommitMessageMatch = /\s\(\#(\d+)\)$/.exec(process.env.COMMIT_TITLE); + if (invalidCommitMessageMatch == null) process.exit(1) + console.log(`PR_ID=${invalidCommitMessageMatch[1]}`) + EOF - name: Comment on the Pull Request if: ${{ env.PR_ID }} - run: gh pr comment ${{ env.PR_ID }} --repo "${{ github.repository }}" --body "$BODY" + run: | + gh pr comment ${{ env.PR_ID }} --repo "${{ github.repository }}" \ + --body "A commit referencing this Pull Request was pushed to `main` by @${{ github.actor }} without the expected commit metadata added to its message." env: - BODY: | - A commit referencing this Pull Request was pushed to `main` by @${{ github.actor }} without the expected commit metadata added to its message. + GH_TOKEN: ${{ github.token }} - name: Slack Notification if: ${{ env.INVALID_COMMIT_MESSAGE }} uses: rtCamp/action-slack-notify@12e36fc18b0689399306c2e0b3e0f2978b7f1ee7 From fff36a179e16f087acfd34fa5cbfa337c98f2fcc Mon Sep 17 00:00:00 2001 From: Danielle Adams <6271256+danielleadams@users.noreply.github.com> Date: Fri, 24 Mar 2023 01:27:16 -0400 Subject: [PATCH 040/131] meta: automate description requests when notable change label is added MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47078 Fixes: https://github.com/nodejs/Release/issues/821 Reviewed-By: Beth Griggs Reviewed-By: Moshe Atlow Reviewed-By: Tierney Cyren Reviewed-By: Michaël Zasso Reviewed-By: Rich Trott --- .github/workflows/comment-labeled.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/.github/workflows/comment-labeled.yml b/.github/workflows/comment-labeled.yml index 5f59a48bb5a6d0..278a4e45b16210 100644 --- a/.github/workflows/comment-labeled.yml +++ b/.github/workflows/comment-labeled.yml @@ -10,6 +10,10 @@ env: This issue/PR was marked as stalled, it will be automatically closed in 30 days. If it should remain open, please leave a comment explaining why it should remain open. FAST_TRACK_MESSAGE: Fast-track has been requested by @${{ github.actor }}. Please 👍 to approve. + NOTABLE_CHANGE_MESSAGE: | + The ${{ github.event.label.url }} label has been added by @${{ github.actor }}. + + Please suggest a text for the release notes if you'd like to include a more detailed summary, then proceed to update the PR description with the text or a link to the notable change suggested text comment. permissions: contents: read @@ -38,3 +42,14 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$FAST_TRACK_MESSAGE" + + notable-change: + permissions: + pull-requests: write + if: github.repository == 'nodejs/node' && github.event_name == 'pull_request_target' && github.event.label.name == 'notable-change' + runs-on: ubuntu-latest + steps: + - name: Add notable change description + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$NOTABLE_CHANGE_MESSAGE" From 86ebdf7cf01bf9a184265c39e61d82fc08f2c3e3 Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Fri, 24 Mar 2023 08:20:18 +0100 Subject: [PATCH 041/131] stream: expose stream symbols This is required for streams interop with e.g. readable-stream. Currently readable-stream helpers will not work with normal node streams which is confusing and bad for the ecosystem. PR-URL: https://github.com/nodejs/node/pull/45671 Reviewed-By: Matteo Collina Reviewed-By: James M Snell Reviewed-By: Antoine du Hamel Reviewed-By: Benjamin Gruenbaum Reviewed-By: Debadree Chatterjee --- lib/internal/streams/destroy.js | 4 ++-- lib/internal/streams/utils.js | 22 ++++++++++++++-------- lib/stream.js | 4 ++++ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/internal/streams/destroy.js b/lib/internal/streams/destroy.js index 358422e12a33e0..cfb49f2c7c7273 100644 --- a/lib/internal/streams/destroy.js +++ b/lib/internal/streams/destroy.js @@ -11,7 +11,7 @@ const { Symbol, } = primordials; const { - kDestroyed, + kIsDestroyed, isDestroyed, isFinished, isServerRequest, @@ -327,7 +327,7 @@ function destroyer(stream, err) { } if (!stream.destroyed) { - stream[kDestroyed] = true; + stream[kIsDestroyed] = true; } } diff --git a/lib/internal/streams/utils.js b/lib/internal/streams/utils.js index c9e61ca8cdd8eb..1b2a6c0fbf6a05 100644 --- a/lib/internal/streams/utils.js +++ b/lib/internal/streams/utils.js @@ -1,16 +1,20 @@ 'use strict'; const { - Symbol, SymbolAsyncIterator, SymbolIterator, SymbolFor, } = primordials; -const kDestroyed = Symbol('kDestroyed'); -const kIsErrored = Symbol('kIsErrored'); -const kIsReadable = Symbol('kIsReadable'); -const kIsDisturbed = Symbol('kIsDisturbed'); +// We need to use SymbolFor to make these globally available +// for interopt with readable-stream, i.e. readable-stream +// and node core needs to be able to read/write private state +// from each other for proper interoperability. +const kIsDestroyed = SymbolFor('nodejs.stream.destroyed'); +const kIsErrored = SymbolFor('nodejs.stream.errored'); +const kIsReadable = SymbolFor('nodejs.stream.readable'); +const kIsWritable = SymbolFor('nodejs.stream.writable'); +const kIsDisturbed = SymbolFor('nodejs.stream.disturbed'); const kIsClosedPromise = SymbolFor('nodejs.webstream.isClosedPromise'); const kControllerErrorFunction = SymbolFor('nodejs.webstream.controllerErrorFunction'); @@ -104,7 +108,7 @@ function isDestroyed(stream) { const wState = stream._writableState; const rState = stream._readableState; const state = wState || rState; - return !!(stream.destroyed || stream[kDestroyed] || state?.destroyed); + return !!(stream.destroyed || stream[kIsDestroyed] || state?.destroyed); } // Have been end():d. @@ -162,6 +166,7 @@ function isReadable(stream) { } function isWritable(stream) { + if (stream && stream[kIsWritable] != null) return stream[kIsWritable]; if (typeof stream?.writable !== 'boolean') return null; if (isDestroyed(stream)) return false; return isWritableNodeStream(stream) && @@ -298,7 +303,8 @@ function isErrored(stream) { } module.exports = { - kDestroyed, + isDestroyed, + kIsDestroyed, isDisturbed, kIsDisturbed, isErrored, @@ -307,8 +313,8 @@ module.exports = { kIsReadable, kIsClosedPromise, kControllerErrorFunction, + kIsWritable, isClosed, - isDestroyed, isDuplexNodeStream, isFinished, isIterable, diff --git a/lib/stream.js b/lib/stream.js index 4c105067bae1ca..e8f205c056834f 100644 --- a/lib/stream.js +++ b/lib/stream.js @@ -51,9 +51,13 @@ const promises = require('stream/promises'); const utils = require('internal/streams/utils'); const Stream = module.exports = require('internal/streams/legacy').Stream; + +Stream.isDestroyed = utils.isDestroyed; Stream.isDisturbed = utils.isDisturbed; Stream.isErrored = utils.isErrored; Stream.isReadable = utils.isReadable; +Stream.isWritable = utils.isWritable; + Stream.Readable = require('internal/streams/readable'); for (const key of ObjectKeys(streamReturningOperators)) { const op = streamReturningOperators[key]; From 239e25ae88597c1bfb79269ace1927d5b5f425b1 Mon Sep 17 00:00:00 2001 From: Debadree Chatterjee Date: Fri, 24 Mar 2023 12:50:31 +0530 Subject: [PATCH 042/131] deps: V8: cherry-pick 975ff4dbfd1b MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: fix GetPropertyNames for proxys with ownKeys trap Added checks to FilterProxyKeys function for when skip_indices is enabled. Bug: v8:13728 Change-Id: Id096e32ef8e6c2344be9682e8222aea8790bd66d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4333698 Reviewed-by: Camillo Bruni Commit-Queue: Jakob Kummerow Cr-Commit-Position: refs/heads/main@{#86548} Refs: https://github.com/v8/v8/commit/975ff4dbfd1be3a7395e26d412774bc955b47341 PR-URL: https://github.com/nodejs/node/pull/47209 Fixes: https://github.com/nodejs/node/issues/41714 Reviewed-By: Michaël Zasso Reviewed-By: Jiawen Geng Reviewed-By: Richard Lau Reviewed-By: Erick Wendel --- common.gypi | 2 +- deps/v8/AUTHORS | 1 + deps/v8/src/objects/keys.cc | 10 ++- deps/v8/test/cctest/test-api.cc | 104 ++++++++++++++++++++++++++++++++ 4 files changed, 114 insertions(+), 3 deletions(-) diff --git a/common.gypi b/common.gypi index 6f8518cc8e23a7..65720283c54109 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.13', + 'v8_embedder_string': '-node.11', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/AUTHORS b/deps/v8/AUTHORS index af37f8db25121e..38e5cd01b2d41d 100644 --- a/deps/v8/AUTHORS +++ b/deps/v8/AUTHORS @@ -98,6 +98,7 @@ Darshan Sen David Carlier David Manouchehri David Sanders +Debadree Chatterjee Deepak Mohan Deon Dior Derek Tu diff --git a/deps/v8/src/objects/keys.cc b/deps/v8/src/objects/keys.cc index ac21fbf9c3d2d2..001008f3b9d268 100644 --- a/deps/v8/src/objects/keys.cc +++ b/deps/v8/src/objects/keys.cc @@ -182,7 +182,8 @@ ExceptionStatus KeyAccumulator::AddKeys(Handle array_like, MaybeHandle FilterProxyKeys(KeyAccumulator* accumulator, Handle owner, Handle keys, - PropertyFilter filter) { + PropertyFilter filter, + bool skip_indices) { if (filter == ALL_PROPERTIES) { // Nothing to do. return keys; @@ -192,6 +193,10 @@ MaybeHandle FilterProxyKeys(KeyAccumulator* accumulator, for (int i = 0; i < keys->length(); ++i) { Handle key(Name::cast(keys->get(i)), isolate); if (key->FilterKey(filter)) continue; // Skip this key. + if (skip_indices) { + uint32_t index; + if (key->AsArrayIndex(&index)) continue; // Skip this key. + } if (filter & ONLY_ENUMERABLE) { PropertyDescriptor desc; Maybe found = @@ -218,7 +223,8 @@ Maybe KeyAccumulator::AddKeysFromJSProxy(Handle proxy, // Postpone the enumerable check for for-in to the ForInFilter step. if (!is_for_in_) { ASSIGN_RETURN_ON_EXCEPTION_VALUE( - isolate_, keys, FilterProxyKeys(this, proxy, keys, filter_), + isolate_, keys, + FilterProxyKeys(this, proxy, keys, filter_, skip_indices_), Nothing()); } // https://tc39.es/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-ownpropertykeys diff --git a/deps/v8/test/cctest/test-api.cc b/deps/v8/test/cctest/test-api.cc index 5e13f3b4bae67f..755e12bb3d51fa 100644 --- a/deps/v8/test/cctest/test-api.cc +++ b/deps/v8/test/cctest/test-api.cc @@ -14429,6 +14429,110 @@ THREADED_TEST(ProxyGetPropertyNames) { CheckIsSymbolAt(isolate, properties, 4, "symbol"); } +THREADED_TEST(ProxyGetPropertyNamesWithOwnKeysTrap) { + LocalContext context; + v8::Isolate* isolate = context->GetIsolate(); + v8::HandleScope scope(isolate); + v8::Local result = CompileRun( + "var target = {0: 0, 1: 1, a: 2, b: 3};" + "target[2**32] = '4294967296';" + "target[2**32-1] = '4294967295';" + "target[2**32-2] = '4294967294';" + "target[Symbol('symbol')] = true;" + "target.__proto__ = {__proto__:null, 2: 4, 3: 5, c: 6, d: 7};" + "var result = new Proxy(target, { ownKeys: (t) => Reflect.ownKeys(t) });" + "result;"); + v8::Local object = result.As(); + v8::PropertyFilter default_filter = + static_cast(v8::ONLY_ENUMERABLE | v8::SKIP_SYMBOLS); + v8::PropertyFilter include_symbols_filter = v8::ONLY_ENUMERABLE; + + v8::Local properties = + object->GetPropertyNames(context.local()).ToLocalChecked(); + const char* expected_properties1[] = {"0", "1", "4294967294", "a", + "b", "4294967296", "4294967295", "2", + "3", "c", "d"}; + CheckStringArray(isolate, properties, 11, expected_properties1); + + properties = + object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + default_filter, v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + CheckStringArray(isolate, properties, 11, expected_properties1); + + properties = object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + include_symbols_filter, + v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + const char* expected_properties1_1[] = { + "0", "1", "4294967294", "a", "b", "4294967296", + "4294967295", nullptr, "2", "3", "c", "d"}; + CheckStringArray(isolate, properties, 12, expected_properties1_1); + CheckIsSymbolAt(isolate, properties, 7, "symbol"); + + properties = + object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + default_filter, v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties2[] = {"a", "b", "4294967296", + "4294967295", "c", "d"}; + CheckStringArray(isolate, properties, 6, expected_properties2); + + properties = object + ->GetPropertyNames(context.local(), + v8::KeyCollectionMode::kIncludePrototypes, + include_symbols_filter, + v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties2_1[] = { + "a", "b", "4294967296", "4294967295", nullptr, "c", "d"}; + CheckStringArray(isolate, properties, 7, expected_properties2_1); + CheckIsSymbolAt(isolate, properties, 4, "symbol"); + + properties = + object + ->GetPropertyNames(context.local(), v8::KeyCollectionMode::kOwnOnly, + default_filter, v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + const char* expected_properties3[] = {"0", "1", "4294967294", "a", + "b", "4294967296", "4294967295"}; + CheckStringArray(isolate, properties, 7, expected_properties3); + + properties = object + ->GetPropertyNames( + context.local(), v8::KeyCollectionMode::kOwnOnly, + include_symbols_filter, v8::IndexFilter::kIncludeIndices) + .ToLocalChecked(); + const char* expected_properties3_1[] = { + "0", "1", "4294967294", "a", "b", "4294967296", "4294967295", nullptr}; + CheckStringArray(isolate, properties, 8, expected_properties3_1); + CheckIsSymbolAt(isolate, properties, 7, "symbol"); + + properties = + object + ->GetPropertyNames(context.local(), v8::KeyCollectionMode::kOwnOnly, + default_filter, v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties4[] = {"a", "b", "4294967296", "4294967295"}; + CheckStringArray(isolate, properties, 4, expected_properties4); + + properties = object + ->GetPropertyNames( + context.local(), v8::KeyCollectionMode::kOwnOnly, + include_symbols_filter, v8::IndexFilter::kSkipIndices) + .ToLocalChecked(); + const char* expected_properties4_1[] = {"a", "b", "4294967296", "4294967295", + nullptr}; + CheckStringArray(isolate, properties, 5, expected_properties4_1); + CheckIsSymbolAt(isolate, properties, 4, "symbol"); +} + THREADED_TEST(AccessChecksReenabledCorrectly) { LocalContext context; v8::Isolate* isolate = context->GetIsolate(); From 5fe90d79f5cbf09f015a9e76f9b064ac2e6d5b07 Mon Sep 17 00:00:00 2001 From: Raz Luvaton <16746759+rluvaton@users.noreply.github.com> Date: Fri, 24 Mar 2023 14:27:55 +0300 Subject: [PATCH 043/131] doc: update stream.reduce concurrency note PR-URL: https://github.com/nodejs/node/pull/47166 Reviewed-By: Matteo Collina Reviewed-By: Mohammed Keyvanzadeh --- doc/api/stream.md | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/doc/api/stream.md b/doc/api/stream.md index e832ff4cf272d6..8ec678a56a223f 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -2499,21 +2499,44 @@ This method calls `fn` on each chunk of the stream in order, passing it the result from the calculation on the previous element. It returns a promise for the final value of the reduction. -The reducer function iterates the stream element-by-element which means that -there is no `concurrency` parameter or parallelism. To perform a `reduce` -concurrently, it can be chained to the [`readable.map`][] method. - If no `initial` value is supplied the first chunk of the stream is used as the initial value. If the stream is empty, the promise is rejected with a `TypeError` with the `ERR_INVALID_ARGS` code property. ```mjs import { Readable } from 'node:stream'; +import { readdir, stat } from 'node:fs/promises'; +import { join } from 'node:path'; -const ten = await Readable.from([1, 2, 3, 4]).reduce((previous, data) => { - return previous + data; -}); -console.log(ten); // 10 +const directoryPath = './src'; +const filesInDir = await readdir(directoryPath); + +const folderSize = await Readable.from(filesInDir) + .reduce(async (totalSize, file) => { + const { size } = await stat(join(directoryPath, file)); + return totalSize + size; + }, 0); + +console.log(folderSize); +``` + +The reducer function iterates the stream element-by-element which means that +there is no `concurrency` parameter or parallelism. To perform a `reduce` +concurrently, you can extract the async function to [`readable.map`][] method. + +```mjs +import { Readable } from 'node:stream'; +import { readdir, stat } from 'node:fs/promises'; +import { join } from 'node:path'; + +const directoryPath = './src'; +const filesInDir = await readdir(directoryPath); + +const folderSize = await Readable.from(filesInDir) + .map((file) => stat(join(directoryPath, file)), { concurrency: 2 }) + .reduce((totalSize, { size }) => totalSize + size, 0); + +console.log(folderSize); ``` ### Duplex and transform streams From 7cfd215da549ae74889f0fdf8de9dcb2911fc3ae Mon Sep 17 00:00:00 2001 From: Mohammed Keyvanzadeh Date: Fri, 24 Mar 2023 17:01:19 +0330 Subject: [PATCH 044/131] doc: fix grammar in the collaborator guide MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47245 Reviewed-By: Tobias Nießen Reviewed-By: Darshan Sen Reviewed-By: Qingyu Deng Reviewed-By: LiviaMedeiros Reviewed-By: Kohei Ueno --- doc/contributing/collaborator-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/contributing/collaborator-guide.md b/doc/contributing/collaborator-guide.md index 84c5ea7396ce21..14963263c5546a 100644 --- a/doc/contributing/collaborator-guide.md +++ b/doc/contributing/collaborator-guide.md @@ -509,7 +509,7 @@ The TSC serves as the final arbiter where required. squashing only keeps one author. * The "Rebase and merge" method has no way of adding metadata to the commit. 3. Make sure CI is complete and green. If the CI is not green, check for - unreliable tests and infrastructure failures. If there are not corresponding + unreliable tests and infrastructure failures. If there are no corresponding issues in the [node][unreliable tests] or [build](https://github.com/nodejs/build/issues) repositories, open new issues. Run a new CI any time someone pushes new code to the pull request. From 73ff86356198ff7861f3e4d219c379a9e563c59d Mon Sep 17 00:00:00 2001 From: Rafael Gonzaga Date: Fri, 24 Mar 2023 12:11:18 -0300 Subject: [PATCH 045/131] doc: drop one-week branch sync on major releases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47149 Reviewed-By: Michaël Zasso Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca Reviewed-By: Colin Ihrig Reviewed-By: Ruy Adorno Reviewed-By: Richard Lau --- doc/contributing/releases.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/contributing/releases.md b/doc/contributing/releases.md index e7fb0f5d0d8b22..9c2d54ba1b4137 100644 --- a/doc/contributing/releases.md +++ b/doc/contributing/releases.md @@ -1148,8 +1148,8 @@ announced immediately following the release of 12.0.0). Approximately two months before a major release, new `vN.x` and `vN.x-staging` branches (where `N` indicates the major release) should be -created as forks of the `main` branch. Up until one week before the release -date, these must be kept in sync with `main`. +created as forks of the `main` branch. Up until the cut-off date announced by +the releaser, these must be kept in sync with `main`. The `vN.x` and `vN.x-staging` branches must be kept in sync with one another up until the date of the release. From f747bd5a6e9b92f6b2829acd63e6b143ac4fef4f Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Fri, 24 Mar 2023 18:30:56 +0100 Subject: [PATCH 046/131] deps: V8: cherry-pick 215ccd593edb MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: Use FlagValue::value() in SLOW_DCHECK Previously SLOW_DCHECK used the non-constexpr bool() operator of FlagValue, which cannot be used in constexpr. Switch to FlagValue::value() instead for make it compile in constexpr. Change-Id: I3e4f70d82c0027cf56999b6c4639479606151696 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4341495 Reviewed-by: Jakob Linke Commit-Queue: Joyee Cheung Cr-Commit-Position: refs/heads/main@{#86611} Refs: https://github.com/v8/v8/commit/215ccd593edbf18170fa1aae109b6b1cccf0ccbf PR-URL: https://github.com/nodejs/node/pull/47212 Reviewed-By: Michaël Zasso Reviewed-By: Debadree Chatterjee Reviewed-By: Richard Lau --- deps/v8/src/common/checks.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/v8/src/common/checks.h b/deps/v8/src/common/checks.h index 59c845b4f549ff..33d7a8458bd95f 100644 --- a/deps/v8/src/common/checks.h +++ b/deps/v8/src/common/checks.h @@ -15,7 +15,7 @@ #ifdef ENABLE_SLOW_DCHECKS #define SLOW_DCHECK(condition) \ - CHECK(!v8::internal::FLAG_enable_slow_asserts || (condition)) + CHECK(!v8::internal::v8_flags.enable_slow_asserts.value() || (condition)) #define SLOW_DCHECK_IMPLIES(lhs, rhs) SLOW_DCHECK(!(lhs) || (rhs)) #else #define SLOW_DCHECK(condition) ((void)0) From e7237a39bf890a23963ae1adbd3ace28c565699b Mon Sep 17 00:00:00 2001 From: Vladimir Morozov Date: Mon, 23 Jan 2023 07:15:34 -0800 Subject: [PATCH 047/131] node-api: deprecate napi_module_register PR-URL: https://github.com/nodejs/node/pull/46319 Reviewed-By: Chengzhong Wu Reviewed-By: Michael Dawson --- src/api/environment.cc | 30 ++- src/node.h | 8 +- src/node_api.h | 76 ++---- test/cctest/test_linked_binding.cc | 243 +++++++++++------- test/node-api/test_null_init/test_null_init.c | 52 +++- 5 files changed, 254 insertions(+), 155 deletions(-) diff --git a/src/api/environment.cc b/src/api/environment.cc index c9ec5e0a43288c..9dab85383a7d25 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -865,7 +865,9 @@ void AddLinkedBinding(Environment* env, const node_module& mod) { } void AddLinkedBinding(Environment* env, const napi_module& mod) { - AddLinkedBinding(env, napi_module_to_node_module(&mod)); + node_module node_mod = napi_module_to_node_module(&mod); + node_mod.nm_flags = NM_F_LINKED; + AddLinkedBinding(env, node_mod); } void AddLinkedBinding(Environment* env, @@ -886,6 +888,32 @@ void AddLinkedBinding(Environment* env, AddLinkedBinding(env, mod); } +void AddLinkedBinding(Environment* env, + const char* name, + napi_addon_register_func fn) { + node_module mod = { + -1, + NM_F_LINKED, + nullptr, // nm_dso_handle + nullptr, // nm_filename + nullptr, // nm_register_func + [](v8::Local exports, + v8::Local module, + v8::Local context, + void* priv) { + napi_module_register_by_symbol( + exports, + module, + context, + reinterpret_cast(priv)); + }, + name, + reinterpret_cast(fn), + nullptr // nm_link + }; + AddLinkedBinding(env, mod); +} + static std::atomic next_thread_id{0}; ThreadId AllocateEnvironmentThreadId() { diff --git a/src/node.h b/src/node.h index 5ca2f6d0dc89b7..8f71f923ee4af4 100644 --- a/src/node.h +++ b/src/node.h @@ -75,6 +75,9 @@ #include "v8-platform.h" // NOLINT(build/include_order) #include "node_version.h" // NODE_MODULE_VERSION +#define NAPI_EXPERIMENTAL +#include "node_api.h" + #include #include #include @@ -121,8 +124,6 @@ // Forward-declare libuv loop struct uv_loop_s; -struct napi_module; - // Forward-declare these functions now to stop MSVS from becoming // terminally confused when it's done in node_internals.h namespace node { @@ -1252,6 +1253,9 @@ NODE_EXTERN void AddLinkedBinding(Environment* env, const char* name, addon_context_register_func fn, void* priv); +NODE_EXTERN void AddLinkedBinding(Environment* env, + const char* name, + napi_addon_register_func fn); /* Registers a callback with the passed-in Environment instance. The callback * is called after the event loop exits, but before the VM is disposed. diff --git a/src/node_api.h b/src/node_api.h index caf987dbd8dd8b..4d1b50414e2e02 100644 --- a/src/node_api.h +++ b/src/node_api.h @@ -31,6 +31,7 @@ struct uv_loop_s; // Forward declaration. typedef napi_value(NAPI_CDECL* napi_addon_register_func)(napi_env env, napi_value exports); +// Used by deprecated registration method napi_module_register. typedef struct napi_module { int nm_version; unsigned int nm_flags; @@ -43,70 +44,15 @@ typedef struct napi_module { #define NAPI_MODULE_VERSION 1 -#if defined(_MSC_VER) -#if defined(__cplusplus) -#define NAPI_C_CTOR(fn) \ - static void NAPI_CDECL fn(void); \ - namespace { \ - struct fn##_ { \ - fn##_() { fn(); } \ - } fn##_v_; \ - } \ - static void NAPI_CDECL fn(void) -#else // !defined(__cplusplus) -#pragma section(".CRT$XCU", read) -// The NAPI_C_CTOR macro defines a function fn that is called during CRT -// initialization. -// C does not support dynamic initialization of static variables and this code -// simulates C++ behavior. Exporting the function pointer prevents it from being -// optimized. See for details: -// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170 -#define NAPI_C_CTOR(fn) \ - static void NAPI_CDECL fn(void); \ - __declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \ - fn; \ - static void NAPI_CDECL fn(void) -#endif // defined(__cplusplus) -#else -#define NAPI_C_CTOR(fn) \ - static void fn(void) __attribute__((constructor)); \ - static void fn(void) -#endif - -#define NAPI_MODULE_X(modname, regfunc, priv, flags) \ - EXTERN_C_START \ - static napi_module _module = { \ - NAPI_MODULE_VERSION, \ - flags, \ - __FILE__, \ - regfunc, \ - #modname, \ - priv, \ - {0}, \ - }; \ - NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \ - EXTERN_C_END - #define NAPI_MODULE_INITIALIZER_X(base, version) \ NAPI_MODULE_INITIALIZER_X_HELPER(base, version) #define NAPI_MODULE_INITIALIZER_X_HELPER(base, version) base##version #ifdef __wasm32__ -#define NAPI_WASM_INITIALIZER \ - NAPI_MODULE_INITIALIZER_X(napi_register_wasm_v, NAPI_MODULE_VERSION) -#define NAPI_MODULE(modname, regfunc) \ - EXTERN_C_START \ - NAPI_MODULE_EXPORT napi_value NAPI_WASM_INITIALIZER(napi_env env, \ - napi_value exports) { \ - return regfunc(env, exports); \ - } \ - EXTERN_C_END +#define NAPI_MODULE_INITIALIZER_BASE napi_register_wasm_v #else -#define NAPI_MODULE(modname, regfunc) \ - NAPI_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage) -#endif - #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v +#endif #define NAPI_MODULE_INITIALIZER \ NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION) @@ -116,12 +62,24 @@ typedef struct napi_module { NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \ napi_value exports); \ EXTERN_C_END \ - NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \ napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports) +#define NAPI_MODULE(modname, regfunc) \ + NAPI_MODULE_INIT() { return regfunc(env, exports); } + +// Deprecated. Use NAPI_MODULE. +#define NAPI_MODULE_X(modname, regfunc, priv, flags) \ + NAPI_MODULE(modname, regfunc) + EXTERN_C_START -NAPI_EXTERN void NAPI_CDECL napi_module_register(napi_module* mod); +// Deprecated. Replaced by symbol-based registration defined by NAPI_MODULE +// and NAPI_MODULE_INIT macros. +#if defined(__cplusplus) && __cplusplus >= 201402L +[[deprecated]] +#endif +NAPI_EXTERN void NAPI_CDECL +napi_module_register(napi_module* mod); NAPI_EXTERN NAPI_NO_RETURN void NAPI_CDECL napi_fatal_error(const char* location, diff --git a/test/cctest/test_linked_binding.cc b/test/cctest/test_linked_binding.cc index 7e40068b5db799..1a4e6a838b5d72 100644 --- a/test/cctest/test_linked_binding.cc +++ b/test/cctest/test_linked_binding.cc @@ -1,19 +1,19 @@ -#include "node_test_fixture.h" #include "node_api.h" +#include "node_test_fixture.h" void InitializeBinding(v8::Local exports, v8::Local module, v8::Local context, void* priv) { v8::Isolate* isolate = context->GetIsolate(); - exports->Set( - context, - v8::String::NewFromOneByte(isolate, - reinterpret_cast("key")) - .ToLocalChecked(), - v8::String::NewFromOneByte(isolate, - reinterpret_cast("value")) - .ToLocalChecked()) + exports + ->Set(context, + v8::String::NewFromOneByte(isolate, + reinterpret_cast("key")) + .ToLocalChecked(), + v8::String::NewFromOneByte( + isolate, reinterpret_cast("value")) + .ToLocalChecked()) .FromJust(); } @@ -24,18 +24,18 @@ class LinkedBindingTest : public EnvironmentTestFixture {}; TEST_F(LinkedBindingTest, SimpleTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; v8::Local context = isolate_->GetCurrentContext(); - const char* run_script = - "process._linkedBinding('cctest_linkedbinding').key"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + const char* run_script = "process._linkedBinding('cctest_linkedbinding').key"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); @@ -48,35 +48,35 @@ void InitializeLocalBinding(v8::Local exports, void* priv) { ++*static_cast(priv); v8::Isolate* isolate = context->GetIsolate(); - exports->Set( - context, - v8::String::NewFromOneByte(isolate, - reinterpret_cast("key")) - .ToLocalChecked(), - v8::String::NewFromOneByte(isolate, - reinterpret_cast("value")) - .ToLocalChecked()) + exports + ->Set(context, + v8::String::NewFromOneByte(isolate, + reinterpret_cast("key")) + .ToLocalChecked(), + v8::String::NewFromOneByte( + isolate, reinterpret_cast("value")) + .ToLocalChecked()) .FromJust(); } TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; int calls = 0; AddLinkedBinding(*test_env, "local_linked", InitializeLocalBinding, &calls); v8::Local context = isolate_->GetCurrentContext(); - const char* run_script = - "process._linkedBinding('local_linked').key"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + const char* run_script = "process._linkedBinding('local_linked').key"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); @@ -86,41 +86,64 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingTest) { napi_value InitializeLocalNapiBinding(napi_env env, napi_value exports) { napi_value key, value; - CHECK_EQ( - napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), napi_ok); - CHECK_EQ( - napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &value), napi_ok); + CHECK_EQ(napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), + napi_ok); + CHECK_EQ(napi_create_string_utf8(env, "world", NAPI_AUTO_LENGTH, &value), + napi_ok); CHECK_EQ(napi_set_property(env, exports, key, value), napi_ok); return nullptr; } static napi_module local_linked_napi = { - NAPI_MODULE_VERSION, - node::ModuleFlags::kLinked, - nullptr, - InitializeLocalNapiBinding, - "local_linked_napi", - nullptr, - {0}, + NAPI_MODULE_VERSION, + node::ModuleFlags::kLinked, + nullptr, + InitializeLocalNapiBinding, + "local_linked_napi", + nullptr, + {0}, }; TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; AddLinkedBinding(*test_env, local_linked_napi); v8::Local context = isolate_->GetCurrentContext(); - const char* run_script = - "process._linkedBinding('local_linked_napi').hello"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + const char* run_script = "process._linkedBinding('local_linked_napi').hello"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); + v8::Local completion_value = script->Run(context).ToLocalChecked(); + v8::String::Utf8Value utf8val(isolate_, completion_value); + CHECK_NOT_NULL(*utf8val); + CHECK_EQ(strcmp(*utf8val, "world"), 0); +} + +TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiCallbackTest) { + const v8::HandleScope handle_scope(isolate_); + const Argv argv; + Env test_env{handle_scope, argv}; + + AddLinkedBinding(*test_env, "local_linked_napi", InitializeLocalNapiBinding); + + v8::Local context = isolate_->GetCurrentContext(); + + const char* run_script = "process._linkedBinding('local_linked_napi').hello"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); @@ -129,33 +152,32 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiTest) { napi_value NapiLinkedWithInstanceData(napi_env env, napi_value exports) { int* instance_data = new int(0); - CHECK_EQ( - napi_set_instance_data( - env, - instance_data, - [](napi_env env, void* data, void* hint) { - ++*static_cast(data); - }, nullptr), - napi_ok); + CHECK_EQ(napi_set_instance_data( + env, + instance_data, + [](napi_env env, void* data, void* hint) { + ++*static_cast(data); + }, + nullptr), + napi_ok); napi_value key, value; - CHECK_EQ( - napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), napi_ok); - CHECK_EQ( - napi_create_external(env, instance_data, nullptr, nullptr, &value), - napi_ok); + CHECK_EQ(napi_create_string_utf8(env, "hello", NAPI_AUTO_LENGTH, &key), + napi_ok); + CHECK_EQ(napi_create_external(env, instance_data, nullptr, nullptr, &value), + napi_ok); CHECK_EQ(napi_set_property(env, exports, key, value), napi_ok); return nullptr; } static napi_module local_linked_napi_id = { - NAPI_MODULE_VERSION, - node::ModuleFlags::kLinked, - nullptr, - NapiLinkedWithInstanceData, - "local_linked_napi_id", - nullptr, - {0}, + NAPI_MODULE_VERSION, + node::ModuleFlags::kLinked, + nullptr, + NapiLinkedWithInstanceData, + "local_linked_napi_id", + nullptr, + {0}, }; TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { @@ -164,7 +186,7 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { { const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; AddLinkedBinding(*test_env, local_linked_napi_id); @@ -172,17 +194,54 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { const char* run_script = "process._linkedBinding('local_linked_napi_id').hello"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); CHECK(completion_value->IsExternal()); - instance_data = static_cast( - completion_value.As()->Value()); + instance_data = + static_cast(completion_value.As()->Value()); + CHECK_NE(instance_data, nullptr); + CHECK_EQ(*instance_data, 0); + } + + CHECK_EQ(*instance_data, 1); + delete instance_data; +} + +TEST_F(LinkedBindingTest, + LocallyDefinedLinkedBindingNapiCallbackInstanceDataTest) { + const v8::HandleScope handle_scope(isolate_); + int* instance_data = nullptr; + + { + const Argv argv; + Env test_env{handle_scope, argv}; + + AddLinkedBinding( + *test_env, "local_linked_napi_id", NapiLinkedWithInstanceData); + + v8::Local context = isolate_->GetCurrentContext(); + + const char* run_script = + "process._linkedBinding('local_linked_napi_id').hello"; + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); + v8::Local completion_value = + script->Run(context).ToLocalChecked(); + CHECK(completion_value->IsExternal()); + instance_data = + static_cast(completion_value.As()->Value()); CHECK_NE(instance_data, nullptr); CHECK_EQ(*instance_data, 0); } @@ -194,7 +253,7 @@ TEST_F(LinkedBindingTest, LocallyDefinedLinkedBindingNapiInstanceDataTest) { TEST_F(LinkedBindingTest, ManyBindingsTest) { const v8::HandleScope handle_scope(isolate_); const Argv argv; - Env test_env {handle_scope, argv}; + Env test_env{handle_scope, argv}; int calls = 0; AddLinkedBinding(*test_env, "local_linked1", InitializeLocalBinding, &calls); @@ -209,16 +268,16 @@ TEST_F(LinkedBindingTest, ManyBindingsTest) { const char* run_script = "for (let i = 1; i <= 5; i++)process._linkedBinding(`local_linked${i}`);" "process._linkedBinding('local_linked_napi').hello"; - v8::Local script = v8::Script::Compile( - context, - v8::String::NewFromOneByte(isolate_, - reinterpret_cast(run_script)) - .ToLocalChecked()) - .ToLocalChecked(); + v8::Local script = + v8::Script::Compile( + context, + v8::String::NewFromOneByte( + isolate_, reinterpret_cast(run_script)) + .ToLocalChecked()) + .ToLocalChecked(); v8::Local completion_value = script->Run(context).ToLocalChecked(); v8::String::Utf8Value utf8val(isolate_, completion_value); CHECK_NOT_NULL(*utf8val); CHECK_EQ(strcmp(*utf8val, "world"), 0); CHECK_EQ(calls, 5); } - diff --git a/test/node-api/test_null_init/test_null_init.c b/test/node-api/test_null_init/test_null_init.c index d9d2200488ce41..28c283b89240f7 100644 --- a/test/node-api/test_null_init/test_null_init.c +++ b/test/node-api/test_null_init/test_null_init.c @@ -1,3 +1,53 @@ #include -NAPI_MODULE(NODE_GYP_MODULE_NAME, NULL) +// This test uses old module initialization style deprecated in current code. +// The goal is to see that all previously compiled code continues to work the +// same way as before. +// The test has a copy of previous macro definitions which are removed from +// the node_api.h file. + +#if defined(_MSC_VER) +#if defined(__cplusplus) +#define NAPI_C_CTOR(fn) \ + static void NAPI_CDECL fn(void); \ + namespace { \ + struct fn##_ { \ + fn##_() { fn(); } \ + } fn##_v_; \ + } \ + static void NAPI_CDECL fn(void) +#else // !defined(__cplusplus) +#pragma section(".CRT$XCU", read) +// The NAPI_C_CTOR macro defines a function fn that is called during CRT +// initialization. +// C does not support dynamic initialization of static variables and this code +// simulates C++ behavior. Exporting the function pointer prevents it from being +// optimized. See for details: +// https://docs.microsoft.com/en-us/cpp/c-runtime-library/crt-initialization?view=msvc-170 +#define NAPI_C_CTOR(fn) \ + static void NAPI_CDECL fn(void); \ + __declspec(dllexport, allocate(".CRT$XCU")) void(NAPI_CDECL * fn##_)(void) = \ + fn; \ + static void NAPI_CDECL fn(void) +#endif // defined(__cplusplus) +#else +#define NAPI_C_CTOR(fn) \ + static void fn(void) __attribute__((constructor)); \ + static void fn(void) +#endif + +#define NAPI_MODULE_TEST(modname, regfunc) \ + EXTERN_C_START \ + static napi_module _module = { \ + NAPI_MODULE_VERSION, \ + 0, \ + __FILE__, \ + regfunc, \ + #modname, \ + NULL, \ + {0}, \ + }; \ + NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \ + EXTERN_C_END + +NAPI_MODULE_TEST(NODE_GYP_MODULE_NAME, NULL) From f9a091a56d7e5d5b97da72fd94b3208d2f7cefe1 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Sat, 25 Mar 2023 09:24:55 +0100 Subject: [PATCH 048/131] tools: standardize update-nghttp2.sh PR-URL: https://github.com/nodejs/node/pull/47197 Refs: https://github.com/nodejs/security-wg/issues/828 Reviewed-By: Antoine du Hamel Reviewed-By: Luigi Pinca Reviewed-By: Darshan Sen Reviewed-By: Rafael Gonzaga Reviewed-By: Gireesh Punathil Reviewed-By: Matteo Collina --- .github/workflows/tools.yml | 10 +++--- doc/contributing/maintaining-nghttp2.md | 9 +----- tools/{ => dep_updaters}/update-nghttp2.sh | 36 ++++++++++++++++------ 3 files changed, 32 insertions(+), 23 deletions(-) rename tools/{ => dep_updaters}/update-nghttp2.sh (52%) diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 5e286f98f75c7a..c8fbd5b4eddd53 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -142,12 +142,10 @@ jobs: subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/nghttp2/nghttp2/releases/latest -q '.tag_name|ltrimstr("v")') - CURRENT_VERSION=$(grep "#define NGHTTP2_VERSION" ./deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h | sed -n "s/^.*VERSION \(.*\)/\1/p") - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/update-nghttp2.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/nghttp2.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: llhttp subsystem: deps label: dependencies diff --git a/doc/contributing/maintaining-nghttp2.md b/doc/contributing/maintaining-nghttp2.md index e75240f107aa35..41ba0b58508513 100644 --- a/doc/contributing/maintaining-nghttp2.md +++ b/doc/contributing/maintaining-nghttp2.md @@ -13,16 +13,9 @@ directory and C++ code in the ## Step 1: Updating nghttp2 -The `tools/update-nghttp2.sh` script automates the update of the +The `tools/dep_updaters/update-nghttp2.sh` script automates the update of the postject source files. -In the following examples, `x.y.z` should match the nghttp2 -version to update to. - -```console -$ ./tools/update-nghttp2.sh x.y.z -``` - ## Step 2: Test the build ```console diff --git a/tools/update-nghttp2.sh b/tools/dep_updaters/update-nghttp2.sh similarity index 52% rename from tools/update-nghttp2.sh rename to tools/dep_updaters/update-nghttp2.sh index ba01f8d6bdef9f..c53a620ba096ec 100755 --- a/tools/update-nghttp2.sh +++ b/tools/dep_updaters/update-nghttp2.sh @@ -2,13 +2,27 @@ set -e # Shell script to update nghttp2 in the source tree to specific version -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) DEPS_DIR="$BASE_DIR/deps" -NGHTTP2_VERSION=$1 -if [ "$#" -le 0 ]; then - echo "Error: please provide an nghttp2 version to update to" - exit 1 +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) + +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/nghttp2/nghttp2/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('v', '')); +EOF +)" + +CURRENT_VERSION=$(grep "#define NGHTTP2_VERSION" ./deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h | sed -n "s/^.*VERSION \"\(.*\)\"/\1/p") + +echo "Comparing $NEW_VERSION with $CURRENT_VERSION" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because nghttp2 is on the latest version." + exit 0 fi echo "Making temporary workspace" @@ -23,8 +37,8 @@ cleanup () { trap cleanup INT TERM EXIT -NGHTTP2_REF="v$NGHTTP2_VERSION" -NGHTTP2_TARBALL="nghttp2-$NGHTTP2_VERSION.tar.gz" +NGHTTP2_REF="v$NEW_VERSION" +NGHTTP2_TARBALL="nghttp2-$NEW_VERSION.tar.gz" cd "$WORKSPACE" @@ -32,7 +46,7 @@ echo "Fetching nghttp2 source archive" curl -sL -o "$NGHTTP2_TARBALL" "https://github.com/nghttp2/nghttp2/releases/download/$NGHTTP2_REF/$NGHTTP2_TARBALL" gzip -dc "$NGHTTP2_TARBALL" | tar xf - rm "$NGHTTP2_TARBALL" -mv "nghttp2-$NGHTTP2_VERSION" nghttp2 +mv "nghttp2-$NEW_VERSION" nghttp2 echo "Removing everything, except lib/ and COPYING" cd nghttp2 @@ -59,5 +73,9 @@ echo "" echo "Please git add nghttp2, commit the new version:" echo "" echo "$ git add -A deps/nghttp2" -echo "$ git commit -m \"deps: update nghttp2 to $NGHTTP2_VERSION\"" +echo "$ git commit -m \"deps: update nghttp2 to $NEW_VERSION\"" echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" From d1efe8efc075758b574e007d9451ab81c6b33bac Mon Sep 17 00:00:00 2001 From: jakecastelli <38635403+jakecastelli@users.noreply.github.com> Date: Sat, 25 Mar 2023 19:11:43 +1030 Subject: [PATCH 049/131] tools: add button to copy code example to clipboard PR-URL: https://github.com/nodejs/node/pull/46928 Refs: https://github.com/nodejs/node/issues/46894 Reviewed-By: Debadree Chatterjee --- doc/api_assets/api.js | 32 ++++++++++++++++++++++++++++++++ doc/api_assets/style.css | 27 +++++++++++++++++++++++++++ tools/doc/html.mjs | 8 ++++++-- 3 files changed, 65 insertions(+), 2 deletions(-) diff --git a/doc/api_assets/api.js b/doc/api_assets/api.js index 49906b1a2abab5..c1151ae493e8da 100644 --- a/doc/api_assets/api.js +++ b/doc/api_assets/api.js @@ -136,6 +136,36 @@ updateHashes(); } + function setupCopyButton() { + const buttons = document.querySelectorAll('.copy-button'); + buttons.forEach((button) => { + button.addEventListener('click', (el) => { + const parentNode = el.target.parentNode; + + const flavorSelector = parentNode.querySelector('.js-flavor-selector'); + + let code = ''; + + if (flavorSelector) { + if (flavorSelector.checked) { + code = parentNode.querySelector('.mjs').textContent; + } else { + code = parentNode.querySelector('.cjs').textContent; + } + } else { + code = parentNode.querySelector('code').textContent; + } + + button.textContent = 'Copied'; + navigator.clipboard.writeText(code); + + setTimeout(() => { + button.textContent = 'Copy'; + }, 2500); + }); + }); + } + function bootstrap() { // Check if we have JavaScript support. document.documentElement.classList.add('has-js'); @@ -151,6 +181,8 @@ // Make link to other versions of the doc open to the same hash target (if it exists). setupAltDocsLink(); + + setupCopyButton(); } if (document.readyState === 'loading') { diff --git a/doc/api_assets/style.css b/doc/api_assets/style.css index 42126949d55d5c..6b27fa1fb71b94 100644 --- a/doc/api_assets/style.css +++ b/doc/api_assets/style.css @@ -973,6 +973,33 @@ kbd { .dark-mode .js-flavor-selector { filter: invert(1); } + +.copy-button { + float: right; + + outline: none; + font-size: 10px; + color: #fff; + background-color: var(--green1); + line-height: 1; + border-radius: 500px; + border: 1px solid transparent; + letter-spacing: 2px; + min-width: 7.5rem; + text-transform: uppercase; + font-weight: 700; + padding: 0 .5rem; + margin-right: .2rem; + height: 1.5rem; + transition-property: background-color,border-color,color,box-shadow,filter; + transition-duration: .3s; + cursor: pointer; +} + +.copy-button:hover { + background-color: var(--green2); +} + @supports (aspect-ratio: 1 / 1) { .js-flavor-selector { height: 1.5em; diff --git a/tools/doc/html.mjs b/tools/doc/html.mjs index 86df5162f58000..d5dd7973e206ac 100644 --- a/tools/doc/html.mjs +++ b/tools/doc/html.mjs @@ -226,10 +226,13 @@ export function preprocessElements({ filename }) { const className = isJSFlavorSnippet(node) ? `language-js ${node.lang}` : `language-${node.lang}`; + const highlighted = `${(getLanguage(node.lang || '') ? highlight(node.value, { language: node.lang }) : node).value}`; node.type = 'html'; + const copyButton = ''; + if (isJSFlavorSnippet(node)) { const previousNode = parent.children[index - 1] || {}; const nextNode = parent.children[index + 1] || {}; @@ -253,16 +256,17 @@ export function preprocessElements({ filename }) { ' aria-label="Show modern ES modules syntax">' + previousNode.value + highlighted + + copyButton + ''; node.lang = null; previousNode.value = ''; previousNode.lang = null; } else { // Isolated JS snippet, no need to add the checkbox. - node.value = `
${highlighted}
`; + node.value = `
${highlighted} ${copyButton}
`; } } else { - node.value = `
${highlighted}
`; + node.value = `
${highlighted} ${copyButton}
`; } } else if (node.type === 'html' && common.isYAMLBlock(node.value)) { node.value = parseYAML(node.value); From b0dd84a1bf6c7dfafdca41ca23a9a94fed6dc05d Mon Sep 17 00:00:00 2001 From: Filip Skokan Date: Sat, 25 Mar 2023 12:48:21 +0100 Subject: [PATCH 050/131] test,crypto: update WebCryptoAPI WPT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47222 Reviewed-By: Yagiz Nizipli Reviewed-By: Luigi Pinca Reviewed-By: Tobias Nießen --- test/fixtures/wpt/README.md | 2 +- .../cfrg_curves_bits.https.any.js | 1 + .../derive_bits_keys/cfrg_curves_bits.js | 50 +++---------------- .../cfrg_curves_bits_fixtures.js | 37 ++++++++++++++ .../cfrg_curves_keys.https.any.js | 1 + .../derive_bits_keys/cfrg_curves_keys.js | 49 +++++++++++------- test/fixtures/wpt/versions.json | 2 +- 7 files changed, 77 insertions(+), 65 deletions(-) create mode 100644 test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js diff --git a/test/fixtures/wpt/README.md b/test/fixtures/wpt/README.md index 950f0cd0a966f3..6d60c747c36261 100644 --- a/test/fixtures/wpt/README.md +++ b/test/fixtures/wpt/README.md @@ -31,7 +31,7 @@ Last update: - user-timing: https://github.com/web-platform-tests/wpt/tree/df24fb604e/user-timing - wasm/jsapi: https://github.com/web-platform-tests/wpt/tree/d8dbe6990b/wasm/jsapi - wasm/webapi: https://github.com/web-platform-tests/wpt/tree/fd1b23eeaa/wasm/webapi -- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/1406b5c0d0/WebCryptoAPI +- WebCryptoAPI: https://github.com/web-platform-tests/wpt/tree/188993d46b/WebCryptoAPI - webidl/ecmascript-binding/es-exceptions: https://github.com/web-platform-tests/wpt/tree/a370aad338/webidl/ecmascript-binding/es-exceptions - webmessaging/broadcastchannel: https://github.com/web-platform-tests/wpt/tree/e97fac4791/webmessaging/broadcastchannel diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js index afa7db845faaee..c1837591ee85d4 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.https.any.js @@ -1,4 +1,5 @@ // META: title=WebCryptoAPI: deriveBits() Using ECDH with CFRG Elliptic Curves +// META: script=cfrg_curves_bits_fixtures.js // META: script=cfrg_curves_bits.js // Define subtests from a `promise_test` to ensure the harness does not diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js index 463f687f1652e4..4e12ca0eb711fa 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits.js @@ -3,44 +3,6 @@ function define_tests() { // May want to test prefixed implementations. var subtle = self.crypto.subtle; - var pkcs8 = { - "X25519": new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), - "X448": new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]) - }; - - var spki = { - "X25519": new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), - "X448": new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]) - }; - - var sizes = { - "X25519": 32, - "X448": 56 - }; - - var derivations = { - "X25519": new Uint8Array([39, 104, 64, 157, 250, 185, 158, 194, 59, 140, 137, 185, 63, 245, 136, 2, 149, 247, 97, 118, 8, 143, 137, 228, 61, 254, 190, 126, 161, 149, 0, 8]), - "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) - }; - - var kSmallOrderPoint = { - "X25519": [ - { order: "0", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "1", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "8", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 224, 235, 122, 124, 59, 65, 184, 174, 22, 86, 227, 250, 241, 159, 196, 106, 218, 9, 141, 235, 156, 50, 177, 253, 134, 98, 5, 22, 95, 73, 184, 0]) }, - { order: "p-1 (order 2)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, - { order: "p (=0, order 4)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, - { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, - ], - "X448": [ - { order: "0", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "1", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, - { order: "p-1 (order 2)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, - { order: "p (=0, order 4)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, - { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, - ] - }; - // Verify the derive functions perform checks against the all-zero value results, // ensuring small-order points are rejected. // https://www.rfc-editor.org/rfc/rfc7748#section-6.1 @@ -50,16 +12,16 @@ function define_tests() { kSmallOrderPoint[algorithmName].forEach(function(test) { promise_test(async() => { let derived; - let privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], + let privateKey; + let publicKey; + try { + privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], {name: algorithmName}, false, ["deriveBits", "deriveKey"]); - let publicKey = await subtle.importKey("spki", test.vector, + publicKey = await subtle.importKey("spki", test.vector, {name: algorithmName}, false, []) - try { - derived = await subtle.deriveKey({name: algorithmName, public: publicKey}, privateKey, - {name: "HMAC", hash: "SHA-256", length: 256}, true, - ["sign", "verify"]); + derived = await subtle.deriveBits({name: algorithmName, public: publicKey}, privateKey, 8 * sizes[algorithmName]); } catch (err) { assert_false(privateKey === undefined, "Private key should be valid."); assert_false(publicKey === undefined, "Public key should be valid."); diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js new file mode 100644 index 00000000000000..ffdeb51eab9700 --- /dev/null +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_bits_fixtures.js @@ -0,0 +1,37 @@ +var pkcs8 = { + "X25519": new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), + "X448": new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]) +}; + +var spki = { + "X25519": new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), + "X448": new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]) +}; + +var sizes = { + "X25519": 32, + "X448": 56 +}; + +var derivations = { + "X25519": new Uint8Array([39, 104, 64, 157, 250, 185, 158, 194, 59, 140, 137, 185, 63, 245, 136, 2, 149, 247, 97, 118, 8, 143, 137, 228, 61, 254, 190, 126, 161, 149, 0, 8]), + "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) +}; + +var kSmallOrderPoint = { + "X25519": [ + { order: "0", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "8", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 224, 235, 122, 124, 59, 65, 184, 174, 22, 86, 227, 250, 241, 159, 196, 106, 218, 9, 141, 235, 156, 50, 177, 253, 134, 98, 5, 22, 95, 73, 184, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 236, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 237, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127]) }, + ], + "X448": [ + { order: "0", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "1", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) }, + { order: "p-1 (order 2)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p (=0, order 4)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + { order: "p+1 (=1, order 1)", vector : new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255]) }, + ] +}; diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js index 71fe87d9a874b7..96658a56e81da9 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.https.any.js @@ -1,4 +1,5 @@ // META: title=WebCryptoAPI: deriveKey() Using ECDH with CFRG Elliptic Curves +// META: script=cfrg_curves_bits_fixtures.js // META: script=cfrg_curves_keys.js // Define subtests from a `promise_test` to ensure the harness does not diff --git a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js index 3c53697ce3c49b..81244ba05a8766 100644 --- a/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js +++ b/test/fixtures/wpt/WebCryptoAPI/derive_bits_keys/cfrg_curves_keys.js @@ -3,25 +3,36 @@ function define_tests() { // May want to test prefixed implementations. var subtle = self.crypto.subtle; - var pkcs8 = { - "X25519": new Uint8Array([48, 46, 2, 1, 0, 48, 5, 6, 3, 43, 101, 110, 4, 34, 4, 32, 200, 131, 142, 118, 208, 87, 223, 183, 216, 201, 90, 105, 225, 56, 22, 10, 221, 99, 115, 253, 113, 164, 210, 118, 187, 86, 227, 168, 27, 100, 255, 97]), - "X448": new Uint8Array([48, 70, 2, 1, 0, 48, 5, 6, 3, 43, 101, 111, 4, 58, 4, 56, 88, 199, 210, 154, 62, 181, 25, 178, 157, 0, 207, 177, 145, 187, 100, 252, 109, 138, 66, 216, 241, 113, 118, 39, 43, 137, 242, 39, 45, 24, 25, 41, 92, 101, 37, 192, 130, 150, 113, 176, 82, 239, 7, 39, 83, 15, 24, 142, 49, 208, 204, 83, 191, 38, 146, 158]) - }; - - var spki = { - "X25519": new Uint8Array([48, 42, 48, 5, 6, 3, 43, 101, 110, 3, 33, 0, 28, 242, 177, 230, 2, 46, 197, 55, 55, 30, 215, 245, 62, 84, 250, 17, 84, 216, 62, 152, 235, 100, 234, 81, 250, 229, 179, 48, 124, 254, 151, 6]), - "X448": new Uint8Array([48, 66, 48, 5, 6, 3, 43, 101, 111, 3, 57, 0, 182, 4, 161, 209, 165, 205, 29, 148, 38, 213, 97, 239, 99, 10, 158, 177, 108, 190, 105, 213, 185, 202, 97, 94, 220, 83, 99, 62, 251, 82, 234, 49, 230, 230, 160, 161, 219, 172, 198, 231, 108, 188, 230, 72, 45, 126, 75, 163, 213, 93, 158, 128, 39, 101, 206, 111]) - }; - - var sizes = { - "X25519": 32, - "X448": 56 - }; - - var derivations = { - "X25519": new Uint8Array([39, 104, 64, 157, 250, 185, 158, 194, 59, 140, 137, 185, 63, 245, 136, 2, 149, 247, 97, 118, 8, 143, 137, 228, 61, 254, 190, 126, 161, 149, 0, 8]), - "X448": new Uint8Array([240, 246, 197, 241, 127, 148, 244, 41, 30, 171, 113, 120, 134, 109, 55, 236, 137, 6, 221, 108, 81, 65, 67, 220, 133, 190, 124, 242, 141, 239, 243, 155, 114, 110, 15, 109, 207, 129, 14, 181, 148, 220, 169, 123, 72, 130, 189, 68, 196, 62, 167, 220, 103, 244, 154, 78]) - }; + // Verify the derive functions perform checks against the all-zero value results, + // ensuring small-order points are rejected. + // https://www.rfc-editor.org/rfc/rfc7748#section-6.1 + // TODO: The spec states that the check must be done on use, but there is discussion about doing it on import. + // https://github.com/WICG/webcrypto-secure-curves/pull/13 + Object.keys(kSmallOrderPoint).forEach(function(algorithmName) { + kSmallOrderPoint[algorithmName].forEach(function(test) { + promise_test(async() => { + let derived; + let privateKey; + let publicKey; + try { + privateKey = await subtle.importKey("pkcs8", pkcs8[algorithmName], + {name: algorithmName}, + false, ["deriveBits", "deriveKey"]); + publicKey = await subtle.importKey("spki", test.vector, + {name: algorithmName}, + false, []) + derived = await subtle.deriveKey({name: algorithmName, public: publicKey}, privateKey, + {name: "HMAC", hash: "SHA-256", length: 256}, true, + ["sign", "verify"]); + } catch (err) { + assert_false(privateKey === undefined, "Private key should be valid."); + assert_false(publicKey === undefined, "Public key should be valid."); + assert_equals(err.name, "OperationError", "Should throw correct error, not " + err.name + ": " + err.message + "."); + } + assert_equals(derived, undefined, "Operation succeeded, but should not have."); + }, algorithmName + " deriveBits checks for all-zero value result with a key of order " + test.order); + }); + }); // Ensure the keys generated by each algorithm are valid for key derivation. Object.keys(sizes).forEach(function(algorithmName) { diff --git a/test/fixtures/wpt/versions.json b/test/fixtures/wpt/versions.json index 583e1f75bf585f..c76ebb17760bfc 100644 --- a/test/fixtures/wpt/versions.json +++ b/test/fixtures/wpt/versions.json @@ -84,7 +84,7 @@ "path": "wasm/webapi" }, "WebCryptoAPI": { - "commit": "1406b5c0d07b5e8dd08e328c451e42c23f3b96c8", + "commit": "188993d46b95c9c0414ba2cef8751f5e19d3d498", "path": "WebCryptoAPI" }, "webidl/ecmascript-binding/es-exceptions": { From 138db9fb0f99bb2a56bd3663a4e7b5b4e7cd9439 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Sat, 25 Mar 2023 12:56:49 +0100 Subject: [PATCH 051/131] meta: update link to collaborators discussion page Refs: https://github.com/nodejs/TSC/issues/1340 PR-URL: https://github.com/nodejs/node/pull/47211 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca Reviewed-By: Michael Dawson Reviewed-By: Darshan Sen Reviewed-By: Rafael Gonzaga Reviewed-By: Rich Trott --- GOVERNANCE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/GOVERNANCE.md b/GOVERNANCE.md index c055b800c01280..6ba1ef2daf2c3d 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -177,6 +177,6 @@ The TSC follows a [Consensus Seeking][] decision-making model per the [Consensus Seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making [TSC Charter]: https://github.com/nodejs/TSC/blob/HEAD/TSC-Charter.md -[collaborators discussion page]: https://github.com/orgs/nodejs/teams/collaborators/discussions +[collaborators discussion page]: https://github.com/nodejs/collaborators/discussions/categories/collaborator-nominations [nodejs/help]: https://github.com/nodejs/help [nodejs/node]: https://github.com/nodejs/node From 61e4005b65f302c2933ce462da9b6302c062990f Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Thu, 23 Mar 2023 00:50:41 +0900 Subject: [PATCH 052/131] doc: update output of example in AbortController Actual output of example in AbortController is mismatched. Plus, make `reason` parameter as optional in JSDoc. Refs: https://github.com/nodejs/node/blob/main/doc/api/globals.md#abortcontrollerabortreason Refs: https://github.com/nodejs/node/blob/main/doc/api/globals.md#static-method-abortsignalabortreason PR-URL: https://github.com/nodejs/node/pull/47227 Reviewed-By: Debadree Chatterjee Reviewed-By: Erick Wendel Reviewed-By: Luigi Pinca --- doc/api/globals.md | 4 ++-- lib/internal/abort_controller.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/api/globals.md b/doc/api/globals.md index ec42fd53ab24eb..a9a6348264acb8 100644 --- a/doc/api/globals.md +++ b/doc/api/globals.md @@ -43,7 +43,7 @@ ac.signal.addEventListener('abort', () => console.log('Aborted!'), ac.abort(); -console.log(ac.signal.aborted); // Prints True +console.log(ac.signal.aborted); // Prints true ``` ### `abortController.abort([reason])` @@ -196,7 +196,7 @@ An optional reason specified when the `AbortSignal` was triggered. ```js const ac = new AbortController(); ac.abort(new Error('boom!')); -console.log(ac.signal.reason); // Error('boom!'); +console.log(ac.signal.reason); // Error: boom! ``` #### `abortSignal.throwIfAborted()` diff --git a/lib/internal/abort_controller.js b/lib/internal/abort_controller.js index 847d9db6699d75..2c1f43354f9f7c 100644 --- a/lib/internal/abort_controller.js +++ b/lib/internal/abort_controller.js @@ -163,7 +163,7 @@ class AbortSignal extends EventTarget { } /** - * @param {any} reason + * @param {any} [reason] * @returns {AbortSignal} */ static abort( @@ -326,7 +326,7 @@ class AbortController { } /** - * @param {any} reason + * @param {any} [reason] */ abort(reason = new DOMException('This operation was aborted', 'AbortError')) { abortSignal(this.#signal ??= createAbortSignal(), reason); From 588579a67343059fa42c97452d6eb8e91b7bf237 Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Sat, 25 Mar 2023 15:26:01 +0100 Subject: [PATCH 053/131] tools: standardize update-llhttp.sh PR-URL: https://github.com/nodejs/node/pull/47198 Refs: https://github.com/nodejs/security-wg/issues/828 Reviewed-By: Rafael Gonzaga Reviewed-By: Matteo Collina Reviewed-By: Paolo Insogna Reviewed-By: Tierney Cyren --- .github/workflows/tools.yml | 13 ++--- doc/contributing/maintaining-http.md | 2 +- tools/dep_updaters/update-llhttp.sh | 83 ++++++++++++++++++++++++++++ tools/update-llhttp.sh | 63 --------------------- 4 files changed, 88 insertions(+), 73 deletions(-) create mode 100755 tools/dep_updaters/update-llhttp.sh delete mode 100755 tools/update-llhttp.sh diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index c8fbd5b4eddd53..0b4e8c9f79ec86 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -150,15 +150,10 @@ jobs: subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/nodejs/llhttp/releases/latest -q '.tag_name|ltrimstr("release/v")') - CURRENT_MAJOR_VERSION=$(grep "#define LLHTTP_VERSION_MAJOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MAJOR \(.*\)/\1/p") - CURRENT_MINOR_VERSION=$(grep "#define LLHTTP_VERSION_MINOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MINOR \(.*\)/\1/p") - CURRENT_PATCH_VERSION=$(grep "#define LLHTTP_VERSION_PATCH" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*PATCH \(.*\)/\1/p") - CURRENT_VERSION="$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION.$CURRENT_PATCH_VERSION" - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/update-llhttp.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/update-llhttp.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: c-ares subsystem: deps label: dependencies diff --git a/doc/contributing/maintaining-http.md b/doc/contributing/maintaining-http.md index dab06fdc6ed84a..88d6fdb6ee55e5 100644 --- a/doc/contributing/maintaining-http.md +++ b/doc/contributing/maintaining-http.md @@ -79,7 +79,7 @@ repository. Updates are pulled into Node.js under [deps/llhttp](https://github.com/nodejs/node/tree/HEAD/deps/llhttp). In order to update Node.js with a new version of llhttp you can use the -`tools/update-llhttp.sh` script. +`tools/dep_updaters/update-llhttp.sh` script. The contents of the `deps/llhttp` folder should look like the following: diff --git a/tools/dep_updaters/update-llhttp.sh b/tools/dep_updaters/update-llhttp.sh new file mode 100755 index 00000000000000..9c46536f205b40 --- /dev/null +++ b/tools/dep_updaters/update-llhttp.sh @@ -0,0 +1,83 @@ +#!/bin/sh +set -e + +# Shell script to update llhttp in the source tree to specific version + +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) +DEPS_DIR="${BASE_DIR}/deps" + +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) + +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/nodejs/llhttp/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('release/v', '')); +EOF +)" + +CURRENT_MAJOR_VERSION=$(grep "#define LLHTTP_VERSION_MAJOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MAJOR \(.*\)/\1/p") +CURRENT_MINOR_VERSION=$(grep "#define LLHTTP_VERSION_MINOR" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*MINOR \(.*\)/\1/p") +CURRENT_PATCH_VERSION=$(grep "#define LLHTTP_VERSION_PATCH" ./deps/llhttp/include/llhttp.h | sed -n "s/^.*PATCH \(.*\)/\1/p") +CURRENT_VERSION="$CURRENT_MAJOR_VERSION.$CURRENT_MINOR_VERSION.$CURRENT_PATCH_VERSION" + +echo "Comparing $NEW_VERSION with $CURRENT_VERSION" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because llhttp is on the latest version." + exit 0 +fi + +cleanup () { + EXIT_CODE=$? + [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" + exit $EXIT_CODE +} + +echo "Making temporary workspace ..." +WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') +trap cleanup INT TERM EXIT + +cd "$WORKSPACE" + +if echo "$NEW_VERSION" | grep -qs "/" ; then # Download a release + REPO="git@github.com:$NEW_VERSION.git" + BRANCH=$2 + [ -z "$BRANCH" ] && BRANCH=main + + echo "Cloning llhttp source archive $REPO ..." + git clone "$REPO" llhttp + cd llhttp + echo "Checking out branch $BRANCH ..." + git checkout "$BRANCH" + + echo "Building llhtttp ..." + npm install + make release + + echo "Copying llhtttp release ..." + rm -rf "$DEPS_DIR/llhttp" + cp -a release "$DEPS_DIR/llhttp" +else + echo "Download llhttp release $NEW_VERSION ..." + curl -sL -o llhttp.tar.gz "https://github.com/nodejs/llhttp/archive/refs/tags/release/v$NEW_VERSION.tar.gz" + gzip -dc llhttp.tar.gz | tar xf - + + echo "Copying llhtttp release ..." + rm -rf "$DEPS_DIR/llhttp" + cp -a "llhttp-release-v$NEW_VERSION" "$DEPS_DIR/llhttp" +fi + +echo "" +echo "All done!" +echo "" +echo "Please git add llhttp, commit the new version:" +echo "" +echo "$ git add -A deps/llhttp" +echo "$ git commit -m \"deps: update llhttp to $NEW_VERSION\"" +echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/update-llhttp.sh b/tools/update-llhttp.sh deleted file mode 100755 index 12772e18e23eb9..00000000000000 --- a/tools/update-llhttp.sh +++ /dev/null @@ -1,63 +0,0 @@ -#!/bin/sh -set -e - -# Shell script to update llhttp in the source tree to specific version - -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) -DEPS_DIR="${BASE_DIR}/deps" -LLHTTP_VERSION="$1" - -if [ "$#" -le 0 ]; then - echo "Error: Please provide an llhttp version to update to." - echo "Error: To download directly from GitHub, use the organization/repository syntax, without the .git suffix." - exit 1 -fi - -cleanup () { - EXIT_CODE=$? - [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" - exit $EXIT_CODE -} - -echo "Making temporary workspace ..." -WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') -trap cleanup INT TERM EXIT - -cd "$WORKSPACE" - -if echo "$LLHTTP_VERSION" | grep -qs "/" ; then # Download a release - REPO="git@github.com:$LLHTTP_VERSION.git" - BRANCH=$2 - [ -z "$BRANCH" ] && BRANCH=main - - echo "Cloning llhttp source archive $REPO ..." - git clone "$REPO" llhttp - cd llhttp - echo "Checking out branch $BRANCH ..." - git checkout "$BRANCH" - - echo "Building llhtttp ..." - npm install - make release - - echo "Copying llhtttp release ..." - rm -rf "$DEPS_DIR/llhttp" - cp -a release "$DEPS_DIR/llhttp" -else - echo "Download llhttp release $LLHTTP_VERSION ..." - curl -sL -o llhttp.tar.gz "https://github.com/nodejs/llhttp/archive/refs/tags/release/v$LLHTTP_VERSION.tar.gz" - gzip -dc llhttp.tar.gz | tar xf - - - echo "Copying llhtttp release ..." - rm -rf "$DEPS_DIR/llhttp" - cp -a "llhttp-release-v$LLHTTP_VERSION" "$DEPS_DIR/llhttp" -fi - -echo "" -echo "All done!" -echo "" -echo "Please git add llhttp, commit the new version:" -echo "" -echo "$ git add -A deps/llhttp" -echo "$ git commit -m \"deps: update llhttp to $LLHTTP_VERSION\"" -echo "" From 6206d3ec25e608cda40a1841d0817cde05d48ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Sat, 25 Mar 2023 19:27:46 +0100 Subject: [PATCH 054/131] tools: upgrade Windows digital signature to SHA256 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit signtool still defaults to SHA1, which is vulnerable to certain collisions. This switches to SHA256, which is stronger and which also matches the hash function used by the signing certificate. Technically, `/fd certHash` would be a better choice, but I don't know if it is widely supported. PR-URL: https://github.com/nodejs/node/pull/47206 Reviewed-By: Michaël Zasso Reviewed-By: Luigi Pinca --- tools/sign.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/sign.bat b/tools/sign.bat index 82daaef575f3e8..fae06583b4923f 100644 --- a/tools/sign.bat +++ b/tools/sign.bat @@ -3,7 +3,7 @@ set timeservers=(http://timestamp.globalsign.com/scripts/timestamp.dll http://timestamp.comodoca.com/authenticode http://timestamp.verisign.com/scripts/timestamp.dll http://tsa.starfieldtech.com) for %%s in %timeservers% do ( - signtool sign /a /d "Node.js" /du "https://nodejs.org" /t %%s %1 + signtool sign /a /d "Node.js" /du "https://nodejs.org" /fd SHA256 /t %%s %1 if not ERRORLEVEL 1 ( echo Successfully signed %1 using timeserver %%s exit /b 0 From 010d55845e90cc5a0b1ad8126bca5b5cc79e5822 Mon Sep 17 00:00:00 2001 From: "Node.js GitHub Bot" Date: Sun, 26 Mar 2023 06:34:09 +0000 Subject: [PATCH 055/131] tools: update lint-md-dependencies to rollup@3.20.2 PR-URL: https://github.com/nodejs/node/pull/47255 Reviewed-By: Rich Trott Reviewed-By: Moshe Atlow --- tools/lint-md/package-lock.json | 20 ++++++++++---------- tools/lint-md/package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tools/lint-md/package-lock.json b/tools/lint-md/package-lock.json index ac70aa8b478932..c5d5039b6af444 100644 --- a/tools/lint-md/package-lock.json +++ b/tools/lint-md/package-lock.json @@ -18,7 +18,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-node-resolve": "^15.0.1", - "rollup": "^3.19.1", + "rollup": "^3.20.2", "rollup-plugin-cleanup": "^3.2.1" } }, @@ -130,9 +130,9 @@ } }, "node_modules/@types/mdast": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.10.tgz", - "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.11.tgz", + "integrity": "sha512-Y/uImid8aAwrEA24/1tcRZwpxX3pIFTSilcNDKSPn+Y2iDywSEachzRuvgAYYLR3wpGXAsMbv5lvKLDZLeYPAw==", "dependencies": { "@types/unist": "*" } @@ -268,9 +268,9 @@ } }, "node_modules/deepmerge": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", - "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2232,9 +2232,9 @@ } }, "node_modules/rollup": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz", - "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==", + "version": "3.20.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.2.tgz", + "integrity": "sha512-3zwkBQl7Ai7MFYQE0y1MeQ15+9jsi7XxfrqwTb/9EK8D9C9+//EBR4M+CuA1KODRaNbFez/lWxA5vhEGZp4MUg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" diff --git a/tools/lint-md/package.json b/tools/lint-md/package.json index 5768c7715c73ac..f973bf335b6a3c 100644 --- a/tools/lint-md/package.json +++ b/tools/lint-md/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rollup/plugin-commonjs": "^24.0.1", "@rollup/plugin-node-resolve": "^15.0.1", - "rollup": "^3.19.1", + "rollup": "^3.20.2", "rollup-plugin-cleanup": "^3.2.1" } } From 7cbdb4e9422b7792238c00c9ff8e319447d743d1 Mon Sep 17 00:00:00 2001 From: Zach Bjornson Date: Sun, 26 Mar 2023 13:30:05 -0700 Subject: [PATCH 056/131] doc: clarify http error events after calling destroy() PR-URL: https://github.com/nodejs/node/pull/46903 Reviewed-By: Paolo Insogna Reviewed-By: Matteo Collina Reviewed-By: Luigi Pinca --- doc/api/http.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/doc/api/http.md b/doc/api/http.md index 406c91f5a50135..f46ca6e7a8a653 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -3644,7 +3644,7 @@ the following events will be emitted in the following order: * (connection closed here) * `'aborted'` on the `res` object * `'error'` on the `res` object with an error with message - `'Error: aborted'` and code `'ECONNRESET'`. + `'Error: aborted'` and code `'ECONNRESET'` * `'close'` * `'close'` on the `res` object @@ -3653,7 +3653,7 @@ events will be emitted in the following order: * (`req.destroy()` called here) * `'error'` with an error with message `'Error: socket hang up'` and code - `'ECONNRESET'` + `'ECONNRESET'`, or the error with which `req.destroy()` was called * `'close'` If `req.destroy()` is called before the connection succeeds, the following @@ -3662,7 +3662,7 @@ events will be emitted in the following order: * `'socket'` * (`req.destroy()` called here) * `'error'` with an error with message `'Error: socket hang up'` and code - `'ECONNRESET'` + `'ECONNRESET'`, or the error with which `req.destroy()` was called * `'close'` If `req.destroy()` is called after the response is received, the following @@ -3673,8 +3673,8 @@ events will be emitted in the following order: * `'data'` any number of times, on the `res` object * (`req.destroy()` called here) * `'aborted'` on the `res` object -* `'error'` on the `res` object with an error with message - `'Error: aborted'` and code `'ECONNRESET'`. +* `'error'` on the `res` object with an error with message `'Error: aborted'` + and code `'ECONNRESET'`, or the error with which `req.destroy()` was called * `'close'` * `'close'` on the `res` object @@ -3712,9 +3712,11 @@ events will be emitted in the following order: Setting the `timeout` option or using the `setTimeout()` function will not abort the request or do anything besides add a `'timeout'` event. -Passing an `AbortSignal` and then calling `abort` on the corresponding +Passing an `AbortSignal` and then calling `abort()` on the corresponding `AbortController` will behave the same way as calling `.destroy()` on the -request itself. +request. Specifically, the `'error'` event will be emitted with an error with +the message `'AbortError: The operation was aborted'`, the code `'ABORT_ERR'` +and the `cause`, if one was provided. ## `http.validateHeaderName(name[, label])` From d34ed2e220c2c3dc797e22158a63d3fdba0e544c Mon Sep 17 00:00:00 2001 From: Julian Dax Date: Sun, 26 Mar 2023 22:38:27 +0200 Subject: [PATCH 057/131] doc: improve example for Error.captureStackTrace() Change the `MyError` example so that instances of `MyError`are `instanceof Error` and also native errors when checked with `util.types.isNativeError()`. Co-authored-by: Ruben Bridgewater PR-URL: https://github.com/nodejs/node/pull/46886 Reviewed-By: James M Snell Reviewed-By: Debadree Chatterjee Reviewed-By: Luigi Pinca --- doc/api/errors.md | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/doc/api/errors.md b/doc/api/errors.md index a895dd5a5af904..396a5c594fbf12 100644 --- a/doc/api/errors.md +++ b/doc/api/errors.md @@ -232,14 +232,27 @@ The `constructorOpt` argument is useful for hiding implementation details of error generation from the user. For instance: ```js -function MyError() { - Error.captureStackTrace(this, MyError); +function a() { + b(); } -// Without passing MyError to captureStackTrace, the MyError -// frame would show up in the .stack property. By passing -// the constructor, we omit that frame, and retain all frames below it. -new MyError().stack; +function b() { + c(); +} + +function c() { + // Create an error without stack trace to avoid calculating the stack trace twice. + const { stackTraceLimit } = Error; + Error.stackTraceLimit = 0; + const error = new Error(); + Error.stackTraceLimit = stackTraceLimit; + + // Capture the stack trace above function b + Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace + throw error; +} + +a(); ``` ### `Error.stackTraceLimit` From ee9052da1306fb07cbefa64f0a0364a114de7d38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= Date: Mon, 27 Mar 2023 11:27:08 +0200 Subject: [PATCH 058/131] doc: use serial comma in cli docs Refs: https://github.com/nodejs/node/pull/11321 Refs: https://github.com/nodejs/node/pull/17384 PR-URL: https://github.com/nodejs/node/pull/47262 Reviewed-By: Moshe Atlow Reviewed-By: Deokjin Kim --- doc/api/cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/cli.md b/doc/api/cli.md index 31309254c5e3dc..c99d02fc9394ee 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -1214,7 +1214,7 @@ path to the blob that is used to restore the application state. When loading a snapshot, Node.js checks that: -1. The version, architecture and platform of the running Node.js binary +1. The version, architecture, and platform of the running Node.js binary are exactly the same as that of the binary that generates the snapshot. 2. The V8 flags and CPU features are compatible with that of the binary that generates the snapshot. From 7f6b1077779001efeee7503a8f3566ac793f524a Mon Sep 17 00:00:00 2001 From: npm CLI robot Date: Wed, 15 Mar 2023 17:39:48 +0000 Subject: [PATCH 059/131] deps: upgrade npm to 9.6.2 PR-URL: https://github.com/nodejs/node/pull/47108 Reviewed-By: Yagiz Nizipli Reviewed-By: Mohammed Keyvanzadeh Reviewed-By: Luigi Pinca --- .../content/commands/npm-install-ci-test.md | 2 +- deps/npm/docs/content/commands/npm-ls.md | 2 +- deps/npm/docs/content/commands/npm.md | 2 +- .../configuring-npm/package-lock-json.md | 9 +- .../output/commands/npm-install-ci-test.html | 2 +- deps/npm/docs/output/commands/npm-ls.html | 2 +- deps/npm/docs/output/commands/npm.html | 2 +- .../configuring-npm/package-lock-json.html | 9 +- deps/npm/lib/commands/access.js | 34 +- deps/npm/lib/commands/audit.js | 3 +- deps/npm/lib/commands/completion.js | 7 +- deps/npm/lib/commands/run-script.js | 3 + deps/npm/lib/utils/audit-error.js | 3 +- deps/npm/lib/utils/cmd-list.js | 4 +- deps/npm/lib/utils/completion.fish | 40 + deps/npm/man/man1/npm-access.1 | 2 +- deps/npm/man/man1/npm-adduser.1 | 2 +- deps/npm/man/man1/npm-audit.1 | 2 +- deps/npm/man/man1/npm-bugs.1 | 2 +- deps/npm/man/man1/npm-cache.1 | 2 +- deps/npm/man/man1/npm-ci.1 | 2 +- deps/npm/man/man1/npm-completion.1 | 2 +- deps/npm/man/man1/npm-config.1 | 2 +- deps/npm/man/man1/npm-dedupe.1 | 2 +- deps/npm/man/man1/npm-deprecate.1 | 2 +- deps/npm/man/man1/npm-diff.1 | 2 +- deps/npm/man/man1/npm-dist-tag.1 | 2 +- deps/npm/man/man1/npm-docs.1 | 2 +- deps/npm/man/man1/npm-doctor.1 | 2 +- deps/npm/man/man1/npm-edit.1 | 2 +- deps/npm/man/man1/npm-exec.1 | 2 +- deps/npm/man/man1/npm-explain.1 | 2 +- deps/npm/man/man1/npm-explore.1 | 2 +- deps/npm/man/man1/npm-find-dupes.1 | 2 +- deps/npm/man/man1/npm-fund.1 | 2 +- deps/npm/man/man1/npm-help-search.1 | 2 +- deps/npm/man/man1/npm-help.1 | 2 +- deps/npm/man/man1/npm-hook.1 | 2 +- deps/npm/man/man1/npm-init.1 | 2 +- deps/npm/man/man1/npm-install-ci-test.1 | 4 +- deps/npm/man/man1/npm-install-test.1 | 2 +- deps/npm/man/man1/npm-install.1 | 2 +- deps/npm/man/man1/npm-link.1 | 2 +- deps/npm/man/man1/npm-login.1 | 2 +- deps/npm/man/man1/npm-logout.1 | 2 +- deps/npm/man/man1/npm-ls.1 | 4 +- deps/npm/man/man1/npm-org.1 | 2 +- deps/npm/man/man1/npm-outdated.1 | 2 +- deps/npm/man/man1/npm-owner.1 | 2 +- deps/npm/man/man1/npm-pack.1 | 2 +- deps/npm/man/man1/npm-ping.1 | 2 +- deps/npm/man/man1/npm-pkg.1 | 2 +- deps/npm/man/man1/npm-prefix.1 | 2 +- deps/npm/man/man1/npm-profile.1 | 2 +- deps/npm/man/man1/npm-prune.1 | 2 +- deps/npm/man/man1/npm-publish.1 | 2 +- deps/npm/man/man1/npm-query.1 | 2 +- deps/npm/man/man1/npm-rebuild.1 | 2 +- deps/npm/man/man1/npm-repo.1 | 2 +- deps/npm/man/man1/npm-restart.1 | 2 +- deps/npm/man/man1/npm-root.1 | 2 +- deps/npm/man/man1/npm-run-script.1 | 2 +- deps/npm/man/man1/npm-search.1 | 2 +- deps/npm/man/man1/npm-shrinkwrap.1 | 2 +- deps/npm/man/man1/npm-star.1 | 2 +- deps/npm/man/man1/npm-stars.1 | 2 +- deps/npm/man/man1/npm-start.1 | 2 +- deps/npm/man/man1/npm-stop.1 | 2 +- deps/npm/man/man1/npm-team.1 | 2 +- deps/npm/man/man1/npm-test.1 | 2 +- deps/npm/man/man1/npm-token.1 | 2 +- deps/npm/man/man1/npm-uninstall.1 | 2 +- deps/npm/man/man1/npm-unpublish.1 | 2 +- deps/npm/man/man1/npm-unstar.1 | 2 +- deps/npm/man/man1/npm-update.1 | 2 +- deps/npm/man/man1/npm-version.1 | 2 +- deps/npm/man/man1/npm-view.1 | 2 +- deps/npm/man/man1/npm-whoami.1 | 2 +- deps/npm/man/man1/npm.1 | 4 +- deps/npm/man/man1/npx.1 | 2 +- deps/npm/man/man5/folders.5 | 2 +- deps/npm/man/man5/install.5 | 2 +- deps/npm/man/man5/npm-global.5 | 2 +- deps/npm/man/man5/npm-json.5 | 2 +- deps/npm/man/man5/npm-shrinkwrap-json.5 | 2 +- deps/npm/man/man5/npmrc.5 | 2 +- deps/npm/man/man5/package-json.5 | 2 +- deps/npm/man/man5/package-lock-json.5 | 6 +- deps/npm/man/man7/config.7 | 2 +- deps/npm/man/man7/dependency-selectors.7 | 2 +- deps/npm/man/man7/developers.7 | 2 +- deps/npm/man/man7/logging.7 | 2 +- deps/npm/man/man7/orgs.7 | 2 +- deps/npm/man/man7/package-spec.7 | 2 +- deps/npm/man/man7/registry.7 | 2 +- deps/npm/man/man7/removal.7 | 2 +- deps/npm/man/man7/scope.7 | 2 +- deps/npm/man/man7/scripts.7 | 2 +- deps/npm/man/man7/workspaces.7 | 2 +- .../arborist/lib/arborist/build-ideal-tree.js | 2 +- .../@npmcli/arborist/lib/arborist/reify.js | 9 +- .../@npmcli/arborist/package.json | 8 +- .../@npmcli/config/lib/parse-field.js | 5 + .../node_modules/@npmcli/config/package.json | 6 +- .../installed-package-contents/lib/index.js | 2 + .../installed-package-contents/package.json | 7 +- .../@sigstore/protobuf-specs/LICENSE | 202 +++++ .../dist}/__generated__/envelope.d.ts | 0 .../dist}/__generated__/envelope.js | 0 .../google/api/field_behavior.d.ts | 0 .../google/api/field_behavior.js | 0 .../google/protobuf/descriptor.d.ts | 0 .../google/protobuf/descriptor.js | 0 .../google/protobuf/timestamp.d.ts | 0 .../google/protobuf/timestamp.js | 0 .../dist}/__generated__/sigstore_bundle.d.ts | 0 .../dist}/__generated__/sigstore_bundle.js | 0 .../dist}/__generated__/sigstore_common.d.ts | 0 .../dist}/__generated__/sigstore_common.js | 0 .../dist}/__generated__/sigstore_rekor.d.ts | 19 +- .../dist}/__generated__/sigstore_rekor.js | 0 .../__generated__/sigstore_trustroot.d.ts | 0 .../dist}/__generated__/sigstore_trustroot.js | 0 .../__generated__/sigstore_verification.d.ts | 0 .../__generated__/sigstore_verification.js | 0 .../@sigstore/protobuf-specs/dist/index.d.ts | 6 + .../@sigstore/protobuf-specs/dist/index.js | 37 + .../@sigstore/protobuf-specs/package.json | 31 + deps/npm/node_modules/@tufjs/models/LICENSE | 21 + .../models => @tufjs/models/dist}/base.d.ts | 9 +- .../models => @tufjs/models/dist}/base.js | 18 +- .../models/dist}/delegations.d.ts | 2 +- .../models/dist}/delegations.js | 12 +- .../@tufjs/models/dist/error.d.ts | 12 + .../node_modules/@tufjs/models/dist/error.js | 27 + .../models => @tufjs/models/dist}/file.d.ts | 2 +- .../models => @tufjs/models/dist}/file.js | 10 +- .../@tufjs/models/dist/index.d.ts | 10 + .../node_modules/@tufjs/models/dist/index.js | 24 + .../models => @tufjs/models/dist}/key.d.ts | 2 +- .../dist/models => @tufjs/models/dist}/key.js | 34 +- .../models/dist}/metadata.d.ts | 7 +- .../models => @tufjs/models/dist}/metadata.js | 41 +- .../models => @tufjs/models/dist}/role.d.ts | 2 +- .../models => @tufjs/models/dist}/role.js | 15 +- .../models => @tufjs/models/dist}/root.d.ts | 5 +- .../models => @tufjs/models/dist}/root.js | 25 +- .../models/dist}/signature.d.ts | 3 +- .../models/dist}/signature.js | 6 + .../models/dist}/snapshot.d.ts | 4 +- .../models => @tufjs/models/dist}/snapshot.js | 12 +- .../models/dist}/targets.d.ts | 5 +- .../models => @tufjs/models/dist}/targets.js | 17 +- .../models/dist}/timestamp.d.ts | 4 +- .../models/dist}/timestamp.js | 10 +- .../models}/dist/utils/guard.d.ts | 3 +- .../models}/dist/utils/guard.js | 8 +- .../@tufjs/models/dist/utils/index.d.ts | 3 + .../models}/dist/utils/index.js | 7 +- .../models}/dist/utils/json.d.ts | 0 .../models}/dist/utils/json.js | 0 .../models}/dist/utils/key.d.ts | 0 .../models}/dist/utils/key.js | 0 .../models}/dist/utils/oid.d.ts | 0 .../models}/dist/utils/oid.js | 0 .../models}/dist/utils/types.d.ts | 6 - .../@tufjs/models/dist/utils/types.js | 2 + .../models/dist/utils/verify.d.ts} | 0 .../models/dist/utils/verify.js} | 0 .../node_modules/@tufjs/models/package.json | 41 ++ .../node_modules/agentkeepalive/package.json | 20 +- deps/npm/node_modules/depd/History.md | 7 + deps/npm/node_modules/depd/LICENSE | 2 +- deps/npm/node_modules/depd/index.js | 42 +- .../depd/lib/compat/callsite-tostring.js | 103 --- .../depd/lib/compat/event-listener-count.js | 22 - .../npm/node_modules/depd/lib/compat/index.js | 79 -- deps/npm/node_modules/depd/package.json | 22 +- .../node_modules/libnpmaccess/package.json | 4 +- deps/npm/node_modules/libnpmdiff/package.json | 10 +- deps/npm/node_modules/libnpmexec/package.json | 8 +- deps/npm/node_modules/libnpmfund/package.json | 8 +- deps/npm/node_modules/libnpmhook/package.json | 4 +- deps/npm/node_modules/libnpmorg/package.json | 4 +- deps/npm/node_modules/libnpmpack/package.json | 8 +- .../libnpmpublish/lib/provenance.js | 19 +- .../node_modules/libnpmpublish/lib/publish.js | 27 +- .../node_modules/libnpmpublish/package.json | 7 +- .../node_modules/libnpmsearch/package.json | 4 +- deps/npm/node_modules/libnpmteam/package.json | 4 +- .../node_modules/libnpmversion/package.json | 4 +- deps/npm/node_modules/lru-cache/index.d.ts | 216 +++++- deps/npm/node_modules/lru-cache/index.js | 254 ++++++- deps/npm/node_modules/lru-cache/index.mjs | 254 ++++++- deps/npm/node_modules/lru-cache/package.json | 4 +- deps/npm/node_modules/minipass/index.d.ts | 15 +- deps/npm/node_modules/minipass/index.js | 55 +- deps/npm/node_modules/minipass/index.mjs | 697 ++++++++++++++++++ deps/npm/node_modules/minipass/package.json | 28 +- .../readable-stream/lib/_stream_duplex.js | 53 +- .../lib/_stream_passthrough.js | 8 +- .../readable-stream/lib/_stream_readable.js | 524 ++++++------- .../readable-stream/lib/_stream_transform.js | 74 +- .../readable-stream/lib/_stream_writable.js | 327 ++++---- .../lib/internal/streams/async_iterator.js | 204 +++-- .../lib/internal/streams/buffer_list.js | 325 ++++---- .../lib/internal/streams/destroy.js | 58 +- .../lib/internal/streams/end-of-stream.js | 42 +- .../lib/internal/streams/from.js | 42 +- .../lib/internal/streams/pipeline.js | 49 +- .../lib/internal/streams/state.js | 17 +- .../node_modules/readable-stream/package.json | 2 +- deps/npm/node_modules/sigstore/LICENSE | 2 +- deps/npm/node_modules/sigstore/README.md | 39 +- .../node_modules/sigstore/dist/sigstore.d.ts | 6 +- .../node_modules/sigstore/dist/sigstore.js | 21 +- .../tlog/types/__generated__/hashedrekord.js | 2 +- .../dist/tlog/types/__generated__/intoto.js | 2 +- .../node_modules/sigstore/dist/tuf/index.d.ts | 6 +- .../node_modules/sigstore/dist/tuf/index.js | 114 +-- .../sigstore/dist/tuf/target.d.ts | 2 + .../node_modules/sigstore/dist/tuf/target.js | 60 ++ .../sigstore/dist/tuf/trustroot.d.ts | 11 - .../sigstore/dist/tuf/trustroot.js | 163 ---- .../sigstore/dist/types/sigstore/index.d.ts | 12 +- .../sigstore/dist/types/sigstore/index.js | 39 +- .../dist/types/sigstore/validate.d.ts | 3 +- .../sigstore/dist/types/sigstore/validate.js | 15 - .../sigstore/dist/util/appdata.d.ts | 1 + .../sigstore/dist/util/appdata.js | 26 + .../sigstore/dist/util/index.d.ts | 1 + .../node_modules/sigstore/dist/util/index.js | 3 +- deps/npm/node_modules/sigstore/dist/verify.js | 12 +- deps/npm/node_modules/sigstore/package.json | 11 +- deps/npm/node_modules/sigstore/store/map.json | 19 - deps/npm/node_modules/spdx-correct/index.js | 26 +- .../node_modules/spdx-correct/package.json | 17 +- deps/npm/node_modules/tuf-js/LICENSE | 2 +- .../tuf-js/dist/{utils => }/config.d.ts | 0 .../tuf-js/dist/{utils => }/config.js | 0 deps/npm/node_modules/tuf-js/dist/error.d.ts | 8 - deps/npm/node_modules/tuf-js/dist/error.js | 16 +- .../npm/node_modules/tuf-js/dist/fetcher.d.ts | 8 +- deps/npm/node_modules/tuf-js/dist/fetcher.js | 6 +- deps/npm/node_modules/tuf-js/dist/index.d.ts | 4 +- deps/npm/node_modules/tuf-js/dist/index.js | 6 +- .../tuf-js/dist/models/index.d.ts | 5 - .../node_modules/tuf-js/dist/models/index.js | 13 - deps/npm/node_modules/tuf-js/dist/store.d.ts | 2 +- deps/npm/node_modules/tuf-js/dist/store.js | 33 +- .../npm/node_modules/tuf-js/dist/updater.d.ts | 8 +- deps/npm/node_modules/tuf-js/dist/updater.js | 24 +- .../node_modules/tuf-js/dist/utils/index.d.ts | 5 - .../node_modules/tuf-js/dist/utils/types.js | 10 - deps/npm/node_modules/tuf-js/package.json | 42 +- deps/npm/package.json | 22 +- .../tap-snapshots/test/lib/docs.js.test.cjs | 8 +- deps/npm/test/lib/commands/access.js | 17 +- deps/npm/test/lib/commands/run-script.js | 11 +- deps/npm/test/lib/utils/audit-error.js | 4 +- 260 files changed, 3377 insertions(+), 2191 deletions(-) create mode 100644 deps/npm/lib/utils/completion.fish create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/envelope.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/envelope.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/api/field_behavior.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/api/field_behavior.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/descriptor.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/descriptor.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/timestamp.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/google/protobuf/timestamp.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_bundle.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_bundle.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_common.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_common.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_rekor.d.ts (87%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_rekor.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_trustroot.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_trustroot.js (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_verification.d.ts (100%) rename deps/npm/node_modules/{sigstore/dist/types/sigstore => @sigstore/protobuf-specs/dist}/__generated__/sigstore_verification.js (100%) create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js create mode 100644 deps/npm/node_modules/@sigstore/protobuf-specs/package.json create mode 100644 deps/npm/node_modules/@tufjs/models/LICENSE rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/base.d.ts (78%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/base.js (81%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/delegations.d.ts (94%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/delegations.js (93%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/error.d.ts create mode 100644 deps/npm/node_modules/@tufjs/models/dist/error.js rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/file.d.ts (95%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/file.js (95%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/index.d.ts create mode 100644 deps/npm/node_modules/@tufjs/models/dist/index.js rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/key.d.ts (91%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/key.js (68%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/metadata.d.ts (90%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/metadata.js (82%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/role.d.ts (98%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/role.js (96%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/root.d.ts (85%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/root.js (84%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/signature.d.ts (88%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/signature.js (89%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/snapshot.d.ts (87%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/snapshot.js (89%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/targets.d.ts (80%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/targets.js (88%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/timestamp.d.ts (85%) rename deps/npm/node_modules/{tuf-js/dist/models => @tufjs/models/dist}/timestamp.js (86%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/guard.d.ts (78%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/guard.js (74%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/index.js (79%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/json.d.ts (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/json.js (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/key.d.ts (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/key.js (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/oid.d.ts (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/oid.js (100%) rename deps/npm/node_modules/{tuf-js => @tufjs/models}/dist/utils/types.d.ts (51%) create mode 100644 deps/npm/node_modules/@tufjs/models/dist/utils/types.js rename deps/npm/node_modules/{tuf-js/dist/utils/signer.d.ts => @tufjs/models/dist/utils/verify.d.ts} (100%) rename deps/npm/node_modules/{tuf-js/dist/utils/signer.js => @tufjs/models/dist/utils/verify.js} (100%) create mode 100644 deps/npm/node_modules/@tufjs/models/package.json delete mode 100644 deps/npm/node_modules/depd/lib/compat/callsite-tostring.js delete mode 100644 deps/npm/node_modules/depd/lib/compat/event-listener-count.js delete mode 100644 deps/npm/node_modules/depd/lib/compat/index.js create mode 100644 deps/npm/node_modules/minipass/index.mjs create mode 100644 deps/npm/node_modules/sigstore/dist/tuf/target.d.ts create mode 100644 deps/npm/node_modules/sigstore/dist/tuf/target.js delete mode 100644 deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts delete mode 100644 deps/npm/node_modules/sigstore/dist/tuf/trustroot.js create mode 100644 deps/npm/node_modules/sigstore/dist/util/appdata.d.ts create mode 100644 deps/npm/node_modules/sigstore/dist/util/appdata.js delete mode 100644 deps/npm/node_modules/sigstore/store/map.json rename deps/npm/node_modules/tuf-js/dist/{utils => }/config.d.ts (100%) rename deps/npm/node_modules/tuf-js/dist/{utils => }/config.js (100%) delete mode 100644 deps/npm/node_modules/tuf-js/dist/models/index.d.ts delete mode 100644 deps/npm/node_modules/tuf-js/dist/models/index.js delete mode 100644 deps/npm/node_modules/tuf-js/dist/utils/index.d.ts delete mode 100644 deps/npm/node_modules/tuf-js/dist/utils/types.js diff --git a/deps/npm/docs/content/commands/npm-install-ci-test.md b/deps/npm/docs/content/commands/npm-install-ci-test.md index f4db7ee0c54dca..5a8095787a1708 100644 --- a/deps/npm/docs/content/commands/npm-install-ci-test.md +++ b/deps/npm/docs/content/commands/npm-install-ci-test.md @@ -9,7 +9,7 @@ description: Install a project with a clean slate and run tests ```bash npm install-ci-test -alias: cit +aliases: cit, clean-install-test, sit ``` ### Description diff --git a/deps/npm/docs/content/commands/npm-ls.md b/deps/npm/docs/content/commands/npm-ls.md index 139e6ec56e3f87..b1754ed02c9525 100644 --- a/deps/npm/docs/content/commands/npm-ls.md +++ b/deps/npm/docs/content/commands/npm-ls.md @@ -27,7 +27,7 @@ packages will *also* show the paths to the specified packages. For example, running `npm ls promzard` in npm's source tree will show: ```bash -npm@9.5.1 /path/to/npm +npm@9.6.2 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 ``` diff --git a/deps/npm/docs/content/commands/npm.md b/deps/npm/docs/content/commands/npm.md index 6d6f5771e3b0c6..6f8ea0a36e3503 100644 --- a/deps/npm/docs/content/commands/npm.md +++ b/deps/npm/docs/content/commands/npm.md @@ -14,7 +14,7 @@ Note: This command is unaware of workspaces. ### Version -9.5.1 +9.6.2 ### Description diff --git a/deps/npm/docs/content/configuring-npm/package-lock-json.md b/deps/npm/docs/content/configuring-npm/package-lock-json.md index 61766dea355b36..8904f308870982 100644 --- a/deps/npm/docs/content/configuring-npm/package-lock-json.md +++ b/deps/npm/docs/content/configuring-npm/package-lock-json.md @@ -112,12 +112,9 @@ the npm registry. Lockfiles generated by npm v7 will contain * No version provided: an "ancient" shrinkwrap file from a version of npm prior to npm v5. * `1`: The lockfile version used by npm v5 and v6. -* `2`: The lockfile version used by npm v7, which is backwards compatible - to v1 lockfiles. -* `3`: The lockfile version used by npm v7, _without_ backwards - compatibility affordances. This is used for the hidden lockfile at - `node_modules/.package-lock.json`, and will likely be used in a future - version of npm, once support for npm v6 is no longer relevant. +* `2`: The lockfile version used by npm v7 and v8. Backwards compatible to v1 + lockfiles. +* `3`: The lockfile version used by npm v9. Backwards compatible to npm v7. npm will always attempt to get whatever data it can out of a lockfile, even if it is not a version that it was designed to support. diff --git a/deps/npm/docs/output/commands/npm-install-ci-test.html b/deps/npm/docs/output/commands/npm-install-ci-test.html index b2f6a3affbbafa..20b001f4e856b6 100644 --- a/deps/npm/docs/output/commands/npm-install-ci-test.html +++ b/deps/npm/docs/output/commands/npm-install-ci-test.html @@ -148,7 +148,7 @@

Table of contents

Synopsis

npm install-ci-test
 
-alias: cit
+aliases: cit, clean-install-test, sit
 

Description

This command runs npm ci followed immediately by npm test.

diff --git a/deps/npm/docs/output/commands/npm-ls.html b/deps/npm/docs/output/commands/npm-ls.html index 26d3dce7718e76..51142e341c7638 100644 --- a/deps/npm/docs/output/commands/npm-ls.html +++ b/deps/npm/docs/output/commands/npm-ls.html @@ -160,7 +160,7 @@

Description

the results to only the paths to the packages named. Note that nested packages will also show the paths to the specified packages. For example, running npm ls promzard in npm's source tree will show:

-
npm@9.5.1 /path/to/npm
+
npm@9.6.2 /path/to/npm
 └─┬ init-package-json@0.0.4
   └── promzard@0.1.5
 
diff --git a/deps/npm/docs/output/commands/npm.html b/deps/npm/docs/output/commands/npm.html index d16a1cec6c69e8..fd8603a02d39bb 100644 --- a/deps/npm/docs/output/commands/npm.html +++ b/deps/npm/docs/output/commands/npm.html @@ -150,7 +150,7 @@

Table of contents

Note: This command is unaware of workspaces.

Version

-

9.5.1

+

9.6.2

Description

npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency diff --git a/deps/npm/docs/output/configuring-npm/package-lock-json.html b/deps/npm/docs/output/configuring-npm/package-lock-json.html index 59b757568f016c..7587b4ad6056a8 100644 --- a/deps/npm/docs/output/configuring-npm/package-lock-json.html +++ b/deps/npm/docs/output/configuring-npm/package-lock-json.html @@ -239,12 +239,9 @@

lockfileVersion

  • No version provided: an "ancient" shrinkwrap file from a version of npm prior to npm v5.
  • 1: The lockfile version used by npm v5 and v6.
  • -
  • 2: The lockfile version used by npm v7, which is backwards compatible -to v1 lockfiles.
  • -
  • 3: The lockfile version used by npm v7, without backwards -compatibility affordances. This is used for the hidden lockfile at -node_modules/.package-lock.json, and will likely be used in a future -version of npm, once support for npm v6 is no longer relevant.
  • +
  • 2: The lockfile version used by npm v7 and v8. Backwards compatible to v1 +lockfiles.
  • +
  • 3: The lockfile version used by npm v9. Backwards compatible to npm v7.
  • npm will always attempt to get whatever data it can out of a lockfile, even if it is not a version that it was designed to support.

    diff --git a/deps/npm/lib/commands/access.js b/deps/npm/lib/commands/access.js index 23e51f071b1124..318151fc81e2c0 100644 --- a/deps/npm/lib/commands/access.js +++ b/deps/npm/lib/commands/access.js @@ -53,20 +53,22 @@ class Access extends BaseCommand { return commands } - switch (argv[2]) { - case 'grant': - return ['read-only', 'read-write'] - case 'revoke': - return [] - case 'list': - case 'ls': - return ['packages', 'collaborators'] - case 'get': - return ['status'] - case 'set': - return setCommands - default: - throw new Error(argv[2] + ' not recognized') + if (argv.length === 3) { + switch (argv[2]) { + case 'grant': + return ['read-only', 'read-write'] + case 'revoke': + return [] + case 'list': + case 'ls': + return ['packages', 'collaborators'] + case 'get': + return ['status'] + case 'set': + return setCommands + default: + throw new Error(argv[2] + ' not recognized') + } } } @@ -116,11 +118,11 @@ class Access extends BaseCommand { } async #grant (permissions, scope, pkg) { - await libnpmaccess.setPermissions(scope, pkg, permissions) + await libnpmaccess.setPermissions(scope, pkg, permissions, this.npm.flatOptions) } async #revoke (scope, pkg) { - await libnpmaccess.removePermissions(scope, pkg) + await libnpmaccess.removePermissions(scope, pkg, this.npm.flatOptions) } async #listPackages (owner, pkg) { diff --git a/deps/npm/lib/commands/audit.js b/deps/npm/lib/commands/audit.js index 05830fff69c2ea..dab871669eba59 100644 --- a/deps/npm/lib/commands/audit.js +++ b/deps/npm/lib/commands/audit.js @@ -389,11 +389,12 @@ class Audit extends ArboristWorkspaceCmd { const argv = opts.conf.argv.remain if (argv.length === 2) { - return ['fix'] + return ['fix', 'signatures'] } switch (argv[2]) { case 'fix': + case 'signatures': return [] default: throw Object.assign(new Error(argv[2] + ' not recognized'), { diff --git a/deps/npm/lib/commands/completion.js b/deps/npm/lib/commands/completion.js index f5604e099f9a27..49a66627cca2c8 100644 --- a/deps/npm/lib/commands/completion.js +++ b/deps/npm/lib/commands/completion.js @@ -79,12 +79,10 @@ class Completion extends BaseCommand { }) } - const { COMP_CWORD, COMP_LINE, COMP_POINT } = process.env + const { COMP_CWORD, COMP_LINE, COMP_POINT, COMP_FISH } = process.env // if the COMP_* isn't in the env, then just dump the script. - if (COMP_CWORD === undefined || - COMP_LINE === undefined || - COMP_POINT === undefined) { + if (COMP_CWORD === undefined || COMP_LINE === undefined || COMP_POINT === undefined) { return dumpScript(resolve(this.npm.npmRoot, 'lib', 'utils', 'completion.sh')) } @@ -111,6 +109,7 @@ class Completion extends BaseCommand { partialWords.push(partialWord) const opts = { + isFish: COMP_FISH === 'true', words, w, word, diff --git a/deps/npm/lib/commands/run-script.js b/deps/npm/lib/commands/run-script.js index 51746c5e5285d9..40e18e1ea06446 100644 --- a/deps/npm/lib/commands/run-script.js +++ b/deps/npm/lib/commands/run-script.js @@ -51,6 +51,9 @@ class RunScript extends BaseCommand { // find the script name const json = resolve(this.npm.localPrefix, 'package.json') const { scripts = {} } = await rpj(json).catch(er => ({})) + if (opts.isFish) { + return Object.keys(scripts).map(s => `${s}\t${scripts[s].slice(0, 30)}`) + } return Object.keys(scripts) } } diff --git a/deps/npm/lib/utils/audit-error.js b/deps/npm/lib/utils/audit-error.js index 7feccc739b6a9f..aaf35566fc0304 100644 --- a/deps/npm/lib/utils/audit-error.js +++ b/deps/npm/lib/utils/audit-error.js @@ -1,4 +1,5 @@ const log = require('./log-shim') +const replaceInfo = require('./replace-info.js') // print an error or just nothing if the audit report has an error // this is called by the audit command, and by the reify-output util @@ -24,7 +25,7 @@ const auditError = (npm, report) => { npm.output(JSON.stringify({ message: error.message, method: error.method, - uri: error.uri, + uri: replaceInfo(error.uri), headers: error.headers, statusCode: error.statusCode, body, diff --git a/deps/npm/lib/utils/cmd-list.js b/deps/npm/lib/utils/cmd-list.js index 03fe8ed07c930e..68074fe9a4286f 100644 --- a/deps/npm/lib/utils/cmd-list.js +++ b/deps/npm/lib/utils/cmd-list.js @@ -36,7 +36,7 @@ const aliases = { v: 'view', run: 'run-script', 'clean-install': 'ci', - 'clean-install-test': 'cit', + 'clean-install-test': 'install-ci-test', x: 'exec', why: 'explain', la: 'll', @@ -62,7 +62,7 @@ const aliases = { upgrade: 'update', udpate: 'update', rum: 'run-script', - sit: 'cit', + sit: 'install-ci-test', urn: 'run-script', ogr: 'org', 'add-user': 'adduser', diff --git a/deps/npm/lib/utils/completion.fish b/deps/npm/lib/utils/completion.fish new file mode 100644 index 00000000000000..5e274ad77e5fd0 --- /dev/null +++ b/deps/npm/lib/utils/completion.fish @@ -0,0 +1,40 @@ +# npm completions for Fish shell +# This script is a work in progress and does not fall under the normal semver contract as the rest of npm. + +# __fish_npm_needs_command taken from: +# https://stackoverflow.com/questions/16657803/creating-autocomplete-script-with-sub-commands +function __fish_npm_needs_command + set -l cmd (commandline -opc) + + if test (count $cmd) -eq 1 + return 0 + end + + return 1 +end + +# Taken from https://github.com/fish-shell/fish-shell/blob/HEAD/share/completions/npm.fish +function __fish_complete_npm -d "Complete the commandline using npm's 'completion' tool" + # tell npm we are fish shell + set -lx COMP_FISH true + if command -sq npm + # npm completion is bash-centric, so we need to translate fish's "commandline" stuff to bash's $COMP_* stuff + # COMP_LINE is an array with the words in the commandline + set -lx COMP_LINE (commandline -opc) + # COMP_CWORD is the index of the current word in COMP_LINE + # bash starts arrays with 0, so subtract 1 + set -lx COMP_CWORD (math (count $COMP_LINE) - 1) + # COMP_POINT is the index of point/cursor when the commandline is viewed as a string + set -lx COMP_POINT (commandline -C) + # If the cursor is after the last word, the empty token will disappear in the expansion + # Readd it + if test (commandline -ct) = "" + set COMP_CWORD (math $COMP_CWORD + 1) + set COMP_LINE $COMP_LINE "" + end + command npm completion -- $COMP_LINE 2>/dev/null + end +end + +# flush out what ships with fish +complete -e npm diff --git a/deps/npm/man/man1/npm-access.1 b/deps/npm/man/man1/npm-access.1 index 732813c2b8642f..8d87e40f24508a 100644 --- a/deps/npm/man/man1/npm-access.1 +++ b/deps/npm/man/man1/npm-access.1 @@ -1,4 +1,4 @@ -.TH "NPM-ACCESS" "1" "February 2023" "" "" +.TH "NPM-ACCESS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-access\fR - Set access level on published packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-adduser.1 b/deps/npm/man/man1/npm-adduser.1 index 5a4ee97566cc08..d123f80979af44 100644 --- a/deps/npm/man/man1/npm-adduser.1 +++ b/deps/npm/man/man1/npm-adduser.1 @@ -1,4 +1,4 @@ -.TH "NPM-ADDUSER" "1" "February 2023" "" "" +.TH "NPM-ADDUSER" "1" "March 2023" "" "" .SH "NAME" \fBnpm-adduser\fR - Add a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-audit.1 b/deps/npm/man/man1/npm-audit.1 index f0c8475937f7fa..084ca0973316c7 100644 --- a/deps/npm/man/man1/npm-audit.1 +++ b/deps/npm/man/man1/npm-audit.1 @@ -1,4 +1,4 @@ -.TH "NPM-AUDIT" "1" "February 2023" "" "" +.TH "NPM-AUDIT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-audit\fR - Run a security audit .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-bugs.1 b/deps/npm/man/man1/npm-bugs.1 index 1f2ee1642dab02..a48dd27ebd4a14 100644 --- a/deps/npm/man/man1/npm-bugs.1 +++ b/deps/npm/man/man1/npm-bugs.1 @@ -1,4 +1,4 @@ -.TH "NPM-BUGS" "1" "February 2023" "" "" +.TH "NPM-BUGS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-bugs\fR - Report bugs for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-cache.1 b/deps/npm/man/man1/npm-cache.1 index 5559b3be352bfb..d28a915c1b64a9 100644 --- a/deps/npm/man/man1/npm-cache.1 +++ b/deps/npm/man/man1/npm-cache.1 @@ -1,4 +1,4 @@ -.TH "NPM-CACHE" "1" "February 2023" "" "" +.TH "NPM-CACHE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-cache\fR - Manipulates packages cache .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ci.1 b/deps/npm/man/man1/npm-ci.1 index 66b688f9717612..cc1a7b24717bb8 100644 --- a/deps/npm/man/man1/npm-ci.1 +++ b/deps/npm/man/man1/npm-ci.1 @@ -1,4 +1,4 @@ -.TH "NPM-CI" "1" "February 2023" "" "" +.TH "NPM-CI" "1" "March 2023" "" "" .SH "NAME" \fBnpm-ci\fR - Clean install a project .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-completion.1 b/deps/npm/man/man1/npm-completion.1 index b82899fd35db14..9a8653259752be 100644 --- a/deps/npm/man/man1/npm-completion.1 +++ b/deps/npm/man/man1/npm-completion.1 @@ -1,4 +1,4 @@ -.TH "NPM-COMPLETION" "1" "February 2023" "" "" +.TH "NPM-COMPLETION" "1" "March 2023" "" "" .SH "NAME" \fBnpm-completion\fR - Tab Completion for npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-config.1 b/deps/npm/man/man1/npm-config.1 index 0cf96143ff8e3b..d8a23d49c65eb4 100644 --- a/deps/npm/man/man1/npm-config.1 +++ b/deps/npm/man/man1/npm-config.1 @@ -1,4 +1,4 @@ -.TH "NPM-CONFIG" "1" "February 2023" "" "" +.TH "NPM-CONFIG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-config\fR - Manage the npm configuration files .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dedupe.1 b/deps/npm/man/man1/npm-dedupe.1 index 302d63b3c2c107..7e9b6c1ed17a44 100644 --- a/deps/npm/man/man1/npm-dedupe.1 +++ b/deps/npm/man/man1/npm-dedupe.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEDUPE" "1" "February 2023" "" "" +.TH "NPM-DEDUPE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-dedupe\fR - Reduce duplication in the package tree .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-deprecate.1 b/deps/npm/man/man1/npm-deprecate.1 index d525e703e841d9..0a5b8e497b3c4d 100644 --- a/deps/npm/man/man1/npm-deprecate.1 +++ b/deps/npm/man/man1/npm-deprecate.1 @@ -1,4 +1,4 @@ -.TH "NPM-DEPRECATE" "1" "February 2023" "" "" +.TH "NPM-DEPRECATE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-deprecate\fR - Deprecate a version of a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-diff.1 b/deps/npm/man/man1/npm-diff.1 index 5d2c240f839f95..360b202a6045ee 100644 --- a/deps/npm/man/man1/npm-diff.1 +++ b/deps/npm/man/man1/npm-diff.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIFF" "1" "February 2023" "" "" +.TH "NPM-DIFF" "1" "March 2023" "" "" .SH "NAME" \fBnpm-diff\fR - The registry diff command .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-dist-tag.1 b/deps/npm/man/man1/npm-dist-tag.1 index bd700f0fefe5ed..ab0b91e90d0e85 100644 --- a/deps/npm/man/man1/npm-dist-tag.1 +++ b/deps/npm/man/man1/npm-dist-tag.1 @@ -1,4 +1,4 @@ -.TH "NPM-DIST-TAG" "1" "February 2023" "" "" +.TH "NPM-DIST-TAG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-dist-tag\fR - Modify package distribution tags .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-docs.1 b/deps/npm/man/man1/npm-docs.1 index 6ee27d9348b7b1..b62d222cd3d3bb 100644 --- a/deps/npm/man/man1/npm-docs.1 +++ b/deps/npm/man/man1/npm-docs.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCS" "1" "February 2023" "" "" +.TH "NPM-DOCS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-docs\fR - Open documentation for a package in a web browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-doctor.1 b/deps/npm/man/man1/npm-doctor.1 index d1b5a4165452af..1cb73f9c5bd446 100644 --- a/deps/npm/man/man1/npm-doctor.1 +++ b/deps/npm/man/man1/npm-doctor.1 @@ -1,4 +1,4 @@ -.TH "NPM-DOCTOR" "1" "February 2023" "" "" +.TH "NPM-DOCTOR" "1" "March 2023" "" "" .SH "NAME" \fBnpm-doctor\fR - Check your npm environment .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-edit.1 b/deps/npm/man/man1/npm-edit.1 index de723dfabe983b..5e56a2fc90e35a 100644 --- a/deps/npm/man/man1/npm-edit.1 +++ b/deps/npm/man/man1/npm-edit.1 @@ -1,4 +1,4 @@ -.TH "NPM-EDIT" "1" "February 2023" "" "" +.TH "NPM-EDIT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-edit\fR - Edit an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-exec.1 b/deps/npm/man/man1/npm-exec.1 index 10d06ae263408f..d2627715dd8490 100644 --- a/deps/npm/man/man1/npm-exec.1 +++ b/deps/npm/man/man1/npm-exec.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXEC" "1" "February 2023" "" "" +.TH "NPM-EXEC" "1" "March 2023" "" "" .SH "NAME" \fBnpm-exec\fR - Run a command from a local or remote npm package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-explain.1 b/deps/npm/man/man1/npm-explain.1 index a8f5e0e2b63487..4623c49f5a1a01 100644 --- a/deps/npm/man/man1/npm-explain.1 +++ b/deps/npm/man/man1/npm-explain.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLAIN" "1" "February 2023" "" "" +.TH "NPM-EXPLAIN" "1" "March 2023" "" "" .SH "NAME" \fBnpm-explain\fR - Explain installed packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-explore.1 b/deps/npm/man/man1/npm-explore.1 index 82452e0cba6eaa..cfa05d1b5ea04c 100644 --- a/deps/npm/man/man1/npm-explore.1 +++ b/deps/npm/man/man1/npm-explore.1 @@ -1,4 +1,4 @@ -.TH "NPM-EXPLORE" "1" "February 2023" "" "" +.TH "NPM-EXPLORE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-explore\fR - Browse an installed package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-find-dupes.1 b/deps/npm/man/man1/npm-find-dupes.1 index 4834f54df6abd3..cd808c61bc0bec 100644 --- a/deps/npm/man/man1/npm-find-dupes.1 +++ b/deps/npm/man/man1/npm-find-dupes.1 @@ -1,4 +1,4 @@ -.TH "NPM-FIND-DUPES" "1" "February 2023" "" "" +.TH "NPM-FIND-DUPES" "1" "March 2023" "" "" .SH "NAME" \fBnpm-find-dupes\fR - Find duplication in the package tree .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-fund.1 b/deps/npm/man/man1/npm-fund.1 index a0a31eebd445ac..896eb052c051bd 100644 --- a/deps/npm/man/man1/npm-fund.1 +++ b/deps/npm/man/man1/npm-fund.1 @@ -1,4 +1,4 @@ -.TH "NPM-FUND" "1" "February 2023" "" "" +.TH "NPM-FUND" "1" "March 2023" "" "" .SH "NAME" \fBnpm-fund\fR - Retrieve funding information .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help-search.1 b/deps/npm/man/man1/npm-help-search.1 index 846f507f51e4d7..51c948d072a7b2 100644 --- a/deps/npm/man/man1/npm-help-search.1 +++ b/deps/npm/man/man1/npm-help-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP-SEARCH" "1" "February 2023" "" "" +.TH "NPM-HELP-SEARCH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-help-search\fR - Search npm help documentation .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-help.1 b/deps/npm/man/man1/npm-help.1 index cffb33d49f91ef..90cd1c1f2c721d 100644 --- a/deps/npm/man/man1/npm-help.1 +++ b/deps/npm/man/man1/npm-help.1 @@ -1,4 +1,4 @@ -.TH "NPM-HELP" "1" "February 2023" "" "" +.TH "NPM-HELP" "1" "March 2023" "" "" .SH "NAME" \fBnpm-help\fR - Get help on npm .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-hook.1 b/deps/npm/man/man1/npm-hook.1 index 0cd0935d9498a9..9ae87f10bb1932 100644 --- a/deps/npm/man/man1/npm-hook.1 +++ b/deps/npm/man/man1/npm-hook.1 @@ -1,4 +1,4 @@ -.TH "NPM-HOOK" "1" "February 2023" "" "" +.TH "NPM-HOOK" "1" "March 2023" "" "" .SH "NAME" \fBnpm-hook\fR - Manage registry hooks .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-init.1 b/deps/npm/man/man1/npm-init.1 index 763e2914fa1e67..09c5305b2ca5c1 100644 --- a/deps/npm/man/man1/npm-init.1 +++ b/deps/npm/man/man1/npm-init.1 @@ -1,4 +1,4 @@ -.TH "NPM-INIT" "1" "February 2023" "" "" +.TH "NPM-INIT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-init\fR - Create a package.json file .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install-ci-test.1 b/deps/npm/man/man1/npm-install-ci-test.1 index fbe641322dac4b..ba98387c83d435 100644 --- a/deps/npm/man/man1/npm-install-ci-test.1 +++ b/deps/npm/man/man1/npm-install-ci-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-CI-TEST" "1" "February 2023" "" "" +.TH "NPM-INSTALL-CI-TEST" "1" "March 2023" "" "" .SH "NAME" \fBnpm-install-ci-test\fR - Install a project with a clean slate and run tests .SS "Synopsis" @@ -7,7 +7,7 @@ .nf npm install-ci-test -alias: cit +aliases: cit, clean-install-test, sit .fi .RE .SS "Description" diff --git a/deps/npm/man/man1/npm-install-test.1 b/deps/npm/man/man1/npm-install-test.1 index 528ec9b75adf02..73ff246c9e0bfb 100644 --- a/deps/npm/man/man1/npm-install-test.1 +++ b/deps/npm/man/man1/npm-install-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL-TEST" "1" "February 2023" "" "" +.TH "NPM-INSTALL-TEST" "1" "March 2023" "" "" .SH "NAME" \fBnpm-install-test\fR - Install package(s) and run tests .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-install.1 b/deps/npm/man/man1/npm-install.1 index 4eb982a825f3e3..1cbf4a6523498f 100644 --- a/deps/npm/man/man1/npm-install.1 +++ b/deps/npm/man/man1/npm-install.1 @@ -1,4 +1,4 @@ -.TH "NPM-INSTALL" "1" "February 2023" "" "" +.TH "NPM-INSTALL" "1" "March 2023" "" "" .SH "NAME" \fBnpm-install\fR - Install a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-link.1 b/deps/npm/man/man1/npm-link.1 index 84c3e7fd7ccc3c..efd5925f87a7db 100644 --- a/deps/npm/man/man1/npm-link.1 +++ b/deps/npm/man/man1/npm-link.1 @@ -1,4 +1,4 @@ -.TH "NPM-LINK" "1" "February 2023" "" "" +.TH "NPM-LINK" "1" "March 2023" "" "" .SH "NAME" \fBnpm-link\fR - Symlink a package folder .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-login.1 b/deps/npm/man/man1/npm-login.1 index 83535a93440fa7..dc154a2cd630d0 100644 --- a/deps/npm/man/man1/npm-login.1 +++ b/deps/npm/man/man1/npm-login.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGIN" "1" "February 2023" "" "" +.TH "NPM-LOGIN" "1" "March 2023" "" "" .SH "NAME" \fBnpm-login\fR - Login to a registry user account .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-logout.1 b/deps/npm/man/man1/npm-logout.1 index 945b6ef8e02003..c55de1b109a86f 100644 --- a/deps/npm/man/man1/npm-logout.1 +++ b/deps/npm/man/man1/npm-logout.1 @@ -1,4 +1,4 @@ -.TH "NPM-LOGOUT" "1" "February 2023" "" "" +.TH "NPM-LOGOUT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-logout\fR - Log out of the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ls.1 b/deps/npm/man/man1/npm-ls.1 index ac59cba39a3f50..ebc3f41d460819 100644 --- a/deps/npm/man/man1/npm-ls.1 +++ b/deps/npm/man/man1/npm-ls.1 @@ -1,4 +1,4 @@ -.TH "NPM-LS" "1" "February 2023" "" "" +.TH "NPM-LS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-ls\fR - List installed packages .SS "Synopsis" @@ -20,7 +20,7 @@ Positional arguments are \fBname@version-range\fR identifiers, which will limit .P .RS 2 .nf -npm@9.5.1 /path/to/npm +npm@9.6.2 /path/to/npm └─┬ init-package-json@0.0.4 └── promzard@0.1.5 .fi diff --git a/deps/npm/man/man1/npm-org.1 b/deps/npm/man/man1/npm-org.1 index 2e952687b307ac..0c54d854a9436e 100644 --- a/deps/npm/man/man1/npm-org.1 +++ b/deps/npm/man/man1/npm-org.1 @@ -1,4 +1,4 @@ -.TH "NPM-ORG" "1" "February 2023" "" "" +.TH "NPM-ORG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-org\fR - Manage orgs .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-outdated.1 b/deps/npm/man/man1/npm-outdated.1 index 683321321f6876..6fce766932bac7 100644 --- a/deps/npm/man/man1/npm-outdated.1 +++ b/deps/npm/man/man1/npm-outdated.1 @@ -1,4 +1,4 @@ -.TH "NPM-OUTDATED" "1" "February 2023" "" "" +.TH "NPM-OUTDATED" "1" "March 2023" "" "" .SH "NAME" \fBnpm-outdated\fR - Check for outdated packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-owner.1 b/deps/npm/man/man1/npm-owner.1 index bf73df68cdf48b..adb0168df44fc4 100644 --- a/deps/npm/man/man1/npm-owner.1 +++ b/deps/npm/man/man1/npm-owner.1 @@ -1,4 +1,4 @@ -.TH "NPM-OWNER" "1" "February 2023" "" "" +.TH "NPM-OWNER" "1" "March 2023" "" "" .SH "NAME" \fBnpm-owner\fR - Manage package owners .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pack.1 b/deps/npm/man/man1/npm-pack.1 index e6b19f2eb061c6..18c1a786c54db8 100644 --- a/deps/npm/man/man1/npm-pack.1 +++ b/deps/npm/man/man1/npm-pack.1 @@ -1,4 +1,4 @@ -.TH "NPM-PACK" "1" "February 2023" "" "" +.TH "NPM-PACK" "1" "March 2023" "" "" .SH "NAME" \fBnpm-pack\fR - Create a tarball from a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-ping.1 b/deps/npm/man/man1/npm-ping.1 index 4ae24a8cd6eb46..166edeb7691496 100644 --- a/deps/npm/man/man1/npm-ping.1 +++ b/deps/npm/man/man1/npm-ping.1 @@ -1,4 +1,4 @@ -.TH "NPM-PING" "1" "February 2023" "" "" +.TH "NPM-PING" "1" "March 2023" "" "" .SH "NAME" \fBnpm-ping\fR - Ping npm registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-pkg.1 b/deps/npm/man/man1/npm-pkg.1 index d67f473563af1a..9c18b6dd6df68c 100644 --- a/deps/npm/man/man1/npm-pkg.1 +++ b/deps/npm/man/man1/npm-pkg.1 @@ -1,4 +1,4 @@ -.TH "NPM-PKG" "1" "February 2023" "" "" +.TH "NPM-PKG" "1" "March 2023" "" "" .SH "NAME" \fBnpm-pkg\fR - Manages your package.json .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prefix.1 b/deps/npm/man/man1/npm-prefix.1 index a14aec7c6b3043..2bb8b31bf458b4 100644 --- a/deps/npm/man/man1/npm-prefix.1 +++ b/deps/npm/man/man1/npm-prefix.1 @@ -1,4 +1,4 @@ -.TH "NPM-PREFIX" "1" "February 2023" "" "" +.TH "NPM-PREFIX" "1" "March 2023" "" "" .SH "NAME" \fBnpm-prefix\fR - Display prefix .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-profile.1 b/deps/npm/man/man1/npm-profile.1 index 40bc3df8e842a7..0d24f9d05b0245 100644 --- a/deps/npm/man/man1/npm-profile.1 +++ b/deps/npm/man/man1/npm-profile.1 @@ -1,4 +1,4 @@ -.TH "NPM-PROFILE" "1" "February 2023" "" "" +.TH "NPM-PROFILE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-profile\fR - Change settings on your registry profile .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-prune.1 b/deps/npm/man/man1/npm-prune.1 index 86546ac112f1cd..d0afcb49aa5c20 100644 --- a/deps/npm/man/man1/npm-prune.1 +++ b/deps/npm/man/man1/npm-prune.1 @@ -1,4 +1,4 @@ -.TH "NPM-PRUNE" "1" "February 2023" "" "" +.TH "NPM-PRUNE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-prune\fR - Remove extraneous packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-publish.1 b/deps/npm/man/man1/npm-publish.1 index 97b912987d0bd0..e434b4f2a71d28 100644 --- a/deps/npm/man/man1/npm-publish.1 +++ b/deps/npm/man/man1/npm-publish.1 @@ -1,4 +1,4 @@ -.TH "NPM-PUBLISH" "1" "February 2023" "" "" +.TH "NPM-PUBLISH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-publish\fR - Publish a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-query.1 b/deps/npm/man/man1/npm-query.1 index 24ba7853adba8f..91459b2a27c4a7 100644 --- a/deps/npm/man/man1/npm-query.1 +++ b/deps/npm/man/man1/npm-query.1 @@ -1,4 +1,4 @@ -.TH "NPM-QUERY" "1" "February 2023" "" "" +.TH "NPM-QUERY" "1" "March 2023" "" "" .SH "NAME" \fBnpm-query\fR - Dependency selector query .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-rebuild.1 b/deps/npm/man/man1/npm-rebuild.1 index 1c00566dd1701a..8f4d6d75a45e81 100644 --- a/deps/npm/man/man1/npm-rebuild.1 +++ b/deps/npm/man/man1/npm-rebuild.1 @@ -1,4 +1,4 @@ -.TH "NPM-REBUILD" "1" "February 2023" "" "" +.TH "NPM-REBUILD" "1" "March 2023" "" "" .SH "NAME" \fBnpm-rebuild\fR - Rebuild a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-repo.1 b/deps/npm/man/man1/npm-repo.1 index 65bb96687f571e..0588d9b595c126 100644 --- a/deps/npm/man/man1/npm-repo.1 +++ b/deps/npm/man/man1/npm-repo.1 @@ -1,4 +1,4 @@ -.TH "NPM-REPO" "1" "February 2023" "" "" +.TH "NPM-REPO" "1" "March 2023" "" "" .SH "NAME" \fBnpm-repo\fR - Open package repository page in the browser .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-restart.1 b/deps/npm/man/man1/npm-restart.1 index 9323e2841a261e..a05bc3f189ae6e 100644 --- a/deps/npm/man/man1/npm-restart.1 +++ b/deps/npm/man/man1/npm-restart.1 @@ -1,4 +1,4 @@ -.TH "NPM-RESTART" "1" "February 2023" "" "" +.TH "NPM-RESTART" "1" "March 2023" "" "" .SH "NAME" \fBnpm-restart\fR - Restart a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-root.1 b/deps/npm/man/man1/npm-root.1 index bd943bb95a6d9c..af4c9f323f4848 100644 --- a/deps/npm/man/man1/npm-root.1 +++ b/deps/npm/man/man1/npm-root.1 @@ -1,4 +1,4 @@ -.TH "NPM-ROOT" "1" "February 2023" "" "" +.TH "NPM-ROOT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-root\fR - Display npm root .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-run-script.1 b/deps/npm/man/man1/npm-run-script.1 index afcf4d655bf218..a905e08ae68dc1 100644 --- a/deps/npm/man/man1/npm-run-script.1 +++ b/deps/npm/man/man1/npm-run-script.1 @@ -1,4 +1,4 @@ -.TH "NPM-RUN-SCRIPT" "1" "February 2023" "" "" +.TH "NPM-RUN-SCRIPT" "1" "March 2023" "" "" .SH "NAME" \fBnpm-run-script\fR - Run arbitrary package scripts .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-search.1 b/deps/npm/man/man1/npm-search.1 index 2241f81e2250e8..9c172a44b6da6c 100644 --- a/deps/npm/man/man1/npm-search.1 +++ b/deps/npm/man/man1/npm-search.1 @@ -1,4 +1,4 @@ -.TH "NPM-SEARCH" "1" "February 2023" "" "" +.TH "NPM-SEARCH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-search\fR - Search for packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-shrinkwrap.1 b/deps/npm/man/man1/npm-shrinkwrap.1 index 5192bc1222f3dc..7981f03b1606ec 100644 --- a/deps/npm/man/man1/npm-shrinkwrap.1 +++ b/deps/npm/man/man1/npm-shrinkwrap.1 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP" "1" "February 2023" "" "" +.TH "NPM-SHRINKWRAP" "1" "March 2023" "" "" .SH "NAME" \fBnpm-shrinkwrap\fR - Lock down dependency versions for publication .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-star.1 b/deps/npm/man/man1/npm-star.1 index ecb2ffe84fa809..1f0392794bf79b 100644 --- a/deps/npm/man/man1/npm-star.1 +++ b/deps/npm/man/man1/npm-star.1 @@ -1,4 +1,4 @@ -.TH "NPM-STAR" "1" "February 2023" "" "" +.TH "NPM-STAR" "1" "March 2023" "" "" .SH "NAME" \fBnpm-star\fR - Mark your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stars.1 b/deps/npm/man/man1/npm-stars.1 index 49ffc90e03ce10..c2472bc237ea33 100644 --- a/deps/npm/man/man1/npm-stars.1 +++ b/deps/npm/man/man1/npm-stars.1 @@ -1,4 +1,4 @@ -.TH "NPM-STARS" "1" "February 2023" "" "" +.TH "NPM-STARS" "1" "March 2023" "" "" .SH "NAME" \fBnpm-stars\fR - View packages marked as favorites .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-start.1 b/deps/npm/man/man1/npm-start.1 index ecf3ad2838266c..83905a1bd6a596 100644 --- a/deps/npm/man/man1/npm-start.1 +++ b/deps/npm/man/man1/npm-start.1 @@ -1,4 +1,4 @@ -.TH "NPM-START" "1" "February 2023" "" "" +.TH "NPM-START" "1" "March 2023" "" "" .SH "NAME" \fBnpm-start\fR - Start a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-stop.1 b/deps/npm/man/man1/npm-stop.1 index 4a5f604941e09d..c04cffa982b339 100644 --- a/deps/npm/man/man1/npm-stop.1 +++ b/deps/npm/man/man1/npm-stop.1 @@ -1,4 +1,4 @@ -.TH "NPM-STOP" "1" "February 2023" "" "" +.TH "NPM-STOP" "1" "March 2023" "" "" .SH "NAME" \fBnpm-stop\fR - Stop a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-team.1 b/deps/npm/man/man1/npm-team.1 index 30399634bc8bc8..435f882a60ef6a 100644 --- a/deps/npm/man/man1/npm-team.1 +++ b/deps/npm/man/man1/npm-team.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEAM" "1" "February 2023" "" "" +.TH "NPM-TEAM" "1" "March 2023" "" "" .SH "NAME" \fBnpm-team\fR - Manage organization teams and team memberships .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-test.1 b/deps/npm/man/man1/npm-test.1 index ddd45f0757b9ff..48100ddd2ed3fa 100644 --- a/deps/npm/man/man1/npm-test.1 +++ b/deps/npm/man/man1/npm-test.1 @@ -1,4 +1,4 @@ -.TH "NPM-TEST" "1" "February 2023" "" "" +.TH "NPM-TEST" "1" "March 2023" "" "" .SH "NAME" \fBnpm-test\fR - Test a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-token.1 b/deps/npm/man/man1/npm-token.1 index 202f55bd69e68e..380160743eabf3 100644 --- a/deps/npm/man/man1/npm-token.1 +++ b/deps/npm/man/man1/npm-token.1 @@ -1,4 +1,4 @@ -.TH "NPM-TOKEN" "1" "February 2023" "" "" +.TH "NPM-TOKEN" "1" "March 2023" "" "" .SH "NAME" \fBnpm-token\fR - Manage your authentication tokens .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-uninstall.1 b/deps/npm/man/man1/npm-uninstall.1 index 9c90a9863215c9..b8f291cbeda665 100644 --- a/deps/npm/man/man1/npm-uninstall.1 +++ b/deps/npm/man/man1/npm-uninstall.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNINSTALL" "1" "February 2023" "" "" +.TH "NPM-UNINSTALL" "1" "March 2023" "" "" .SH "NAME" \fBnpm-uninstall\fR - Remove a package .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unpublish.1 b/deps/npm/man/man1/npm-unpublish.1 index 8b250dd67bcc41..0b5bae99d9df93 100644 --- a/deps/npm/man/man1/npm-unpublish.1 +++ b/deps/npm/man/man1/npm-unpublish.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNPUBLISH" "1" "February 2023" "" "" +.TH "NPM-UNPUBLISH" "1" "March 2023" "" "" .SH "NAME" \fBnpm-unpublish\fR - Remove a package from the registry .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-unstar.1 b/deps/npm/man/man1/npm-unstar.1 index c76968c9050b5b..7e01bf1a960392 100644 --- a/deps/npm/man/man1/npm-unstar.1 +++ b/deps/npm/man/man1/npm-unstar.1 @@ -1,4 +1,4 @@ -.TH "NPM-UNSTAR" "1" "February 2023" "" "" +.TH "NPM-UNSTAR" "1" "March 2023" "" "" .SH "NAME" \fBnpm-unstar\fR - Remove an item from your favorite packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-update.1 b/deps/npm/man/man1/npm-update.1 index 7819631243fccd..1ac95a9b5a0c99 100644 --- a/deps/npm/man/man1/npm-update.1 +++ b/deps/npm/man/man1/npm-update.1 @@ -1,4 +1,4 @@ -.TH "NPM-UPDATE" "1" "February 2023" "" "" +.TH "NPM-UPDATE" "1" "March 2023" "" "" .SH "NAME" \fBnpm-update\fR - Update packages .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-version.1 b/deps/npm/man/man1/npm-version.1 index 66bfdbdc598bdd..9f13e68d7f7690 100644 --- a/deps/npm/man/man1/npm-version.1 +++ b/deps/npm/man/man1/npm-version.1 @@ -1,4 +1,4 @@ -.TH "NPM-VERSION" "1" "February 2023" "" "" +.TH "NPM-VERSION" "1" "March 2023" "" "" .SH "NAME" \fBnpm-version\fR - Bump a package version .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-view.1 b/deps/npm/man/man1/npm-view.1 index 6075c163d0e8d2..5da1474d5177a3 100644 --- a/deps/npm/man/man1/npm-view.1 +++ b/deps/npm/man/man1/npm-view.1 @@ -1,4 +1,4 @@ -.TH "NPM-VIEW" "1" "February 2023" "" "" +.TH "NPM-VIEW" "1" "March 2023" "" "" .SH "NAME" \fBnpm-view\fR - View registry info .SS "Synopsis" diff --git a/deps/npm/man/man1/npm-whoami.1 b/deps/npm/man/man1/npm-whoami.1 index d96a3648776381..d20de132af5e01 100644 --- a/deps/npm/man/man1/npm-whoami.1 +++ b/deps/npm/man/man1/npm-whoami.1 @@ -1,4 +1,4 @@ -.TH "NPM-WHOAMI" "1" "February 2023" "" "" +.TH "NPM-WHOAMI" "1" "March 2023" "" "" .SH "NAME" \fBnpm-whoami\fR - Display npm username .SS "Synopsis" diff --git a/deps/npm/man/man1/npm.1 b/deps/npm/man/man1/npm.1 index 631f484d455b98..cd6b3e58c96428 100644 --- a/deps/npm/man/man1/npm.1 +++ b/deps/npm/man/man1/npm.1 @@ -1,4 +1,4 @@ -.TH "NPM" "1" "February 2023" "" "" +.TH "NPM" "1" "March 2023" "" "" .SH "NAME" \fBnpm\fR - javascript package manager .SS "Synopsis" @@ -12,7 +12,7 @@ npm Note: This command is unaware of workspaces. .SS "Version" .P -9.5.1 +9.6.2 .SS "Description" .P npm is the package manager for the Node JavaScript platform. It puts modules in place so that node can find them, and manages dependency conflicts intelligently. diff --git a/deps/npm/man/man1/npx.1 b/deps/npm/man/man1/npx.1 index 079dffeecdbe2e..bf5e9bf8ea4dfe 100644 --- a/deps/npm/man/man1/npx.1 +++ b/deps/npm/man/man1/npx.1 @@ -1,4 +1,4 @@ -.TH "NPX" "1" "February 2023" "" "" +.TH "NPX" "1" "March 2023" "" "" .SH "NAME" \fBnpx\fR - Run a command from a local or remote npm package .SS "Synopsis" diff --git a/deps/npm/man/man5/folders.5 b/deps/npm/man/man5/folders.5 index 50bf4c8c7aec20..403d66ee7fc54d 100644 --- a/deps/npm/man/man5/folders.5 +++ b/deps/npm/man/man5/folders.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "February 2023" "" "" +.TH "FOLDERS" "5" "March 2023" "" "" .SH "NAME" \fBfolders\fR - Folder Structures Used by npm .SS "Description" diff --git a/deps/npm/man/man5/install.5 b/deps/npm/man/man5/install.5 index 68af465f5ee21a..3145d5ac917e68 100644 --- a/deps/npm/man/man5/install.5 +++ b/deps/npm/man/man5/install.5 @@ -1,4 +1,4 @@ -.TH "INSTALL" "5" "February 2023" "" "" +.TH "INSTALL" "5" "March 2023" "" "" .SH "NAME" \fBinstall\fR - Download and install node and npm .SS "Description" diff --git a/deps/npm/man/man5/npm-global.5 b/deps/npm/man/man5/npm-global.5 index 50bf4c8c7aec20..403d66ee7fc54d 100644 --- a/deps/npm/man/man5/npm-global.5 +++ b/deps/npm/man/man5/npm-global.5 @@ -1,4 +1,4 @@ -.TH "FOLDERS" "5" "February 2023" "" "" +.TH "FOLDERS" "5" "March 2023" "" "" .SH "NAME" \fBfolders\fR - Folder Structures Used by npm .SS "Description" diff --git a/deps/npm/man/man5/npm-json.5 b/deps/npm/man/man5/npm-json.5 index 8f7dd8fd5b73e6..b9c12028df641c 100644 --- a/deps/npm/man/man5/npm-json.5 +++ b/deps/npm/man/man5/npm-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "February 2023" "" "" +.TH "PACKAGE.JSON" "5" "March 2023" "" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/npm-shrinkwrap-json.5 b/deps/npm/man/man5/npm-shrinkwrap-json.5 index 12a5dc05887fda..28f1fb6185f994 100644 --- a/deps/npm/man/man5/npm-shrinkwrap-json.5 +++ b/deps/npm/man/man5/npm-shrinkwrap-json.5 @@ -1,4 +1,4 @@ -.TH "NPM-SHRINKWRAP.JSON" "5" "February 2023" "" "" +.TH "NPM-SHRINKWRAP.JSON" "5" "March 2023" "" "" .SH "NAME" \fBnpm-shrinkwrap.json\fR - A publishable lockfile .SS "Description" diff --git a/deps/npm/man/man5/npmrc.5 b/deps/npm/man/man5/npmrc.5 index a568984bc80aaa..d4ab9f65774a26 100644 --- a/deps/npm/man/man5/npmrc.5 +++ b/deps/npm/man/man5/npmrc.5 @@ -1,4 +1,4 @@ -.TH "NPMRC" "5" "February 2023" "" "" +.TH "NPMRC" "5" "March 2023" "" "" .SH "NAME" \fBnpmrc\fR - The npm config files .SS "Description" diff --git a/deps/npm/man/man5/package-json.5 b/deps/npm/man/man5/package-json.5 index 8f7dd8fd5b73e6..b9c12028df641c 100644 --- a/deps/npm/man/man5/package-json.5 +++ b/deps/npm/man/man5/package-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE.JSON" "5" "February 2023" "" "" +.TH "PACKAGE.JSON" "5" "March 2023" "" "" .SH "NAME" \fBpackage.json\fR - Specifics of npm's package.json handling .SS "Description" diff --git a/deps/npm/man/man5/package-lock-json.5 b/deps/npm/man/man5/package-lock-json.5 index 20be57b80db4fb..d6b65de211e4fa 100644 --- a/deps/npm/man/man5/package-lock-json.5 +++ b/deps/npm/man/man5/package-lock-json.5 @@ -1,4 +1,4 @@ -.TH "PACKAGE-LOCK.JSON" "5" "February 2023" "" "" +.TH "PACKAGE-LOCK.JSON" "5" "March 2023" "" "" .SH "NAME" \fBpackage-lock.json\fR - A manifestation of the manifest .SS "Description" @@ -67,9 +67,9 @@ No version provided: an "ancient" shrinkwrap file from a version of npm prior to .IP \(bu 4 \fB1\fR: The lockfile version used by npm v5 and v6. .IP \(bu 4 -\fB2\fR: The lockfile version used by npm v7, which is backwards compatible to v1 lockfiles. +\fB2\fR: The lockfile version used by npm v7 and v8. Backwards compatible to v1 lockfiles. .IP \(bu 4 -\fB3\fR: The lockfile version used by npm v7, \fIwithout\fR backwards compatibility affordances. This is used for the hidden lockfile at \fBnode_modules/.package-lock.json\fR, and will likely be used in a future version of npm, once support for npm v6 is no longer relevant. +\fB3\fR: The lockfile version used by npm v9. Backwards compatible to npm v7. .RE 0 .P diff --git a/deps/npm/man/man7/config.7 b/deps/npm/man/man7/config.7 index dc4261c2803a8c..93fd95d7915703 100644 --- a/deps/npm/man/man7/config.7 +++ b/deps/npm/man/man7/config.7 @@ -1,4 +1,4 @@ -.TH "CONFIG" "7" "February 2023" "" "" +.TH "CONFIG" "7" "March 2023" "" "" .SH "NAME" \fBconfig\fR - More than you probably want to know about npm configuration .SS "Description" diff --git a/deps/npm/man/man7/dependency-selectors.7 b/deps/npm/man/man7/dependency-selectors.7 index f1670a3a20e885..2d5c77e6717fc5 100644 --- a/deps/npm/man/man7/dependency-selectors.7 +++ b/deps/npm/man/man7/dependency-selectors.7 @@ -1,4 +1,4 @@ -.TH "QUERYING" "7" "February 2023" "" "" +.TH "QUERYING" "7" "March 2023" "" "" .SH "NAME" \fBQuerying\fR - Dependency Selector Syntax & Querying .SS "Description" diff --git a/deps/npm/man/man7/developers.7 b/deps/npm/man/man7/developers.7 index a15142ba205a4b..83d9c5a39953f0 100644 --- a/deps/npm/man/man7/developers.7 +++ b/deps/npm/man/man7/developers.7 @@ -1,4 +1,4 @@ -.TH "DEVELOPERS" "7" "February 2023" "" "" +.TH "DEVELOPERS" "7" "March 2023" "" "" .SH "NAME" \fBdevelopers\fR - Developer Guide .SS "Description" diff --git a/deps/npm/man/man7/logging.7 b/deps/npm/man/man7/logging.7 index d1cc3bdf00d8ca..4d1000caa942a1 100644 --- a/deps/npm/man/man7/logging.7 +++ b/deps/npm/man/man7/logging.7 @@ -1,4 +1,4 @@ -.TH "LOGGING" "7" "February 2023" "" "" +.TH "LOGGING" "7" "March 2023" "" "" .SH "NAME" \fBLogging\fR - Why, What & How We Log .SS "Description" diff --git a/deps/npm/man/man7/orgs.7 b/deps/npm/man/man7/orgs.7 index 7aa5da2ede48f4..ea8e56ad714bed 100644 --- a/deps/npm/man/man7/orgs.7 +++ b/deps/npm/man/man7/orgs.7 @@ -1,4 +1,4 @@ -.TH "ORGS" "7" "February 2023" "" "" +.TH "ORGS" "7" "March 2023" "" "" .SH "NAME" \fBorgs\fR - Working with Teams & Orgs .SS "Description" diff --git a/deps/npm/man/man7/package-spec.7 b/deps/npm/man/man7/package-spec.7 index 4ae0095bd13b25..c3eb5e458f6cff 100644 --- a/deps/npm/man/man7/package-spec.7 +++ b/deps/npm/man/man7/package-spec.7 @@ -1,4 +1,4 @@ -.TH "PACKAGE-SPEC" "7" "February 2023" "" "" +.TH "PACKAGE-SPEC" "7" "March 2023" "" "" .SH "NAME" \fBpackage-spec\fR - Package name specifier .SS "Description" diff --git a/deps/npm/man/man7/registry.7 b/deps/npm/man/man7/registry.7 index e67c8bb2b01158..b8926cb2f57a47 100644 --- a/deps/npm/man/man7/registry.7 +++ b/deps/npm/man/man7/registry.7 @@ -1,4 +1,4 @@ -.TH "REGISTRY" "7" "February 2023" "" "" +.TH "REGISTRY" "7" "March 2023" "" "" .SH "NAME" \fBregistry\fR - The JavaScript Package Registry .SS "Description" diff --git a/deps/npm/man/man7/removal.7 b/deps/npm/man/man7/removal.7 index 82e39c8cb1acc3..97066d4d97f274 100644 --- a/deps/npm/man/man7/removal.7 +++ b/deps/npm/man/man7/removal.7 @@ -1,4 +1,4 @@ -.TH "REMOVAL" "7" "February 2023" "" "" +.TH "REMOVAL" "7" "March 2023" "" "" .SH "NAME" \fBremoval\fR - Cleaning the Slate .SS "Synopsis" diff --git a/deps/npm/man/man7/scope.7 b/deps/npm/man/man7/scope.7 index 670b2f88c82116..6b58330b7b89bf 100644 --- a/deps/npm/man/man7/scope.7 +++ b/deps/npm/man/man7/scope.7 @@ -1,4 +1,4 @@ -.TH "SCOPE" "7" "February 2023" "" "" +.TH "SCOPE" "7" "March 2023" "" "" .SH "NAME" \fBscope\fR - Scoped packages .SS "Description" diff --git a/deps/npm/man/man7/scripts.7 b/deps/npm/man/man7/scripts.7 index 5f0ee7735d6a22..d4e5de7e97f3df 100644 --- a/deps/npm/man/man7/scripts.7 +++ b/deps/npm/man/man7/scripts.7 @@ -1,4 +1,4 @@ -.TH "SCRIPTS" "7" "February 2023" "" "" +.TH "SCRIPTS" "7" "March 2023" "" "" .SH "NAME" \fBscripts\fR - How npm handles the "scripts" field .SS "Description" diff --git a/deps/npm/man/man7/workspaces.7 b/deps/npm/man/man7/workspaces.7 index 6e1e9bf59e08f2..7db3d49cc25c6a 100644 --- a/deps/npm/man/man7/workspaces.7 +++ b/deps/npm/man/man7/workspaces.7 @@ -1,4 +1,4 @@ -.TH "WORKSPACES" "7" "February 2023" "" "" +.TH "WORKSPACES" "7" "March 2023" "" "" .SH "NAME" \fBworkspaces\fR - Working with workspaces .SS "Description" diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js index 2ea66ac3364149..0d936d8ef77689 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js @@ -1243,7 +1243,7 @@ This is a one-time fix-up, please be patient... if (isWorkspace) { const existingNode = this.idealTree.edgesOut.get(spec.name).to if (existingNode && existingNode.isWorkspace && existingNode.satisfies(edge)) { - return edge.to + return existingNode } } diff --git a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js index 87993cca876d66..760fa977ecfd91 100644 --- a/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js +++ b/deps/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js @@ -535,9 +535,14 @@ module.exports = cls => class Reifier extends cls { await this[_renamePath](d, retired) } } - const made = await mkdir(node.path, { recursive: true }) this[_sparseTreeDirs].add(node.path) - this[_sparseTreeRoots].add(made) + const made = await mkdir(node.path, { recursive: true }) + // if the directory already exists, made will be undefined. if that's the case + // we don't want to remove it because we aren't the ones who created it so we + // omit it from the _sparseTreeRoots + if (made) { + this[_sparseTreeRoots].add(made) + } })) .then(() => process.emit('timeEnd', 'reify:createSparse')) } diff --git a/deps/npm/node_modules/@npmcli/arborist/package.json b/deps/npm/node_modules/@npmcli/arborist/package.json index aaa69e048432aa..5d1a9362e27387 100644 --- a/deps/npm/node_modules/@npmcli/arborist/package.json +++ b/deps/npm/node_modules/@npmcli/arborist/package.json @@ -1,11 +1,11 @@ { "name": "@npmcli/arborist", - "version": "6.2.3", + "version": "6.2.5", "description": "Manage node_modules trees", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", "@npmcli/fs": "^3.1.0", - "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/installed-package-contents": "^2.0.2", "@npmcli/map-workspaces": "^3.0.2", "@npmcli/metavuln-calculator": "^5.0.0", "@npmcli/name-from-folder": "^2.0.0", @@ -39,7 +39,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "benchmark": "^2.1.4", "chalk": "^4.1.0", "minify-registry-metadata": "^3.0.0", @@ -98,7 +98,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/@npmcli/config/lib/parse-field.js b/deps/npm/node_modules/@npmcli/config/lib/parse-field.js index 0c905bf23cb107..099b0b4eaf1a83 100644 --- a/deps/npm/node_modules/@npmcli/config/lib/parse-field.js +++ b/deps/npm/node_modules/@npmcli/config/lib/parse-field.js @@ -20,6 +20,7 @@ const parseField = (f, key, opts, listElement = false) => { const isUmask = typeList.has(typeDefs.Umask.type) const isNumber = typeList.has(typeDefs.Number.type) const isList = !listElement && typeList.has(Array) + const isDate = typeList.has(typeDefs.Date.type) if (Array.isArray(f)) { return !isList ? f : f.map(field => parseField(field, key, opts, true)) @@ -53,6 +54,10 @@ const parseField = (f, key, opts, listElement = false) => { f = envReplace(f, env) + if (isDate) { + return new Date(f) + } + if (isPath) { const homePattern = platform === 'win32' ? /^~(\/|\\)/ : /^~\// if (homePattern.test(f) && home) { diff --git a/deps/npm/node_modules/@npmcli/config/package.json b/deps/npm/node_modules/@npmcli/config/package.json index 38c063e358beb1..a5b48d3309c75c 100644 --- a/deps/npm/node_modules/@npmcli/config/package.json +++ b/deps/npm/node_modules/@npmcli/config/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/config", - "version": "6.1.3", + "version": "6.1.4", "files": [ "bin/", "lib/" @@ -33,7 +33,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "tap": "^16.3.4" }, "dependencies": { @@ -50,6 +50,6 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4" + "version": "4.12.0" } } diff --git a/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js b/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js index e2c545b5ab949c..20b25c4bc8437d 100755 --- a/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js +++ b/deps/npm/node_modules/@npmcli/installed-package-contents/lib/index.js @@ -1,3 +1,5 @@ +#! /usr/bin/env node + // to GET CONTENTS for folder at PATH (which may be a PACKAGE): // - if PACKAGE, read path/package.json // - if bins in ../node_modules/.bin, add those to result diff --git a/deps/npm/node_modules/@npmcli/installed-package-contents/package.json b/deps/npm/node_modules/@npmcli/installed-package-contents/package.json index aac2de13042561..3554754123e618 100644 --- a/deps/npm/node_modules/@npmcli/installed-package-contents/package.json +++ b/deps/npm/node_modules/@npmcli/installed-package-contents/package.json @@ -1,6 +1,6 @@ { "name": "@npmcli/installed-package-contents", - "version": "2.0.1", + "version": "2.0.2", "description": "Get the list of files installed in a package in node_modules, including bundled dependencies", "author": "GitHub Inc.", "main": "lib/index.js", @@ -19,8 +19,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.6.2", - "mkdirp": "^1.0.4", + "@npmcli/template-oss": "4.11.4", "require-inject": "^1.4.4", "tap": "^16.3.0" }, @@ -41,7 +40,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.6.2" + "version": "4.11.4" }, "tap": { "nyc-arg": [ diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE b/deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE new file mode 100644 index 00000000000000..e9e7c1679a09df --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2023 The Sigstore Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/envelope.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/envelope.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/api/field_behavior.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/api/field_behavior.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/descriptor.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/descriptor.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/google/protobuf/timestamp.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/google/protobuf/timestamp.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_bundle.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_bundle.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_common.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_common.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.d.ts similarity index 87% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.d.ts index 9e33bb80e2a867..74eb82513ddb12 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.d.ts +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.d.ts @@ -98,12 +98,19 @@ export interface TransparencyLogEntry { */ inclusionProof: InclusionProof | undefined; /** - * The canonicalized Rekor entry body, used for SET verification. This - * is the same as the body returned by Rekor. It's included here for - * cases where the client cannot deterministically reconstruct the - * bundle from the other fields. Clients MUST verify that the signature - * referenced in the canonicalized_body matches the signature provided - * in the bundle content. + * The canonicalized transparency log entry, used to reconstruct + * the Signed Entry Timestamp (SET) during verification. + * The contents of this field are the same as the `body` field in + * a Rekor response, meaning that it does **not** include the "full" + * canonicalized form (of log index, ID, etc.) which are + * exposed as separate fields. The verifier is responsible for + * combining the `canonicalized_body`, `log_index`, `log_id`, + * and `integrated_time` into the payload that the SET's signature + * is generated over. + * + * Clients MUST verify that the signatured referenced in the + * `canonicalized_body` matches the signature provided in the + * `Bundle.content`. */ canonicalizedBody: Buffer; } diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_rekor.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_rekor.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_trustroot.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_trustroot.js diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.d.ts similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.d.ts rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.d.ts diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js similarity index 100% rename from deps/npm/node_modules/sigstore/dist/types/sigstore/__generated__/sigstore_verification.js rename to deps/npm/node_modules/@sigstore/protobuf-specs/dist/__generated__/sigstore_verification.js diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts new file mode 100644 index 00000000000000..f87f0aba29ab6a --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.d.ts @@ -0,0 +1,6 @@ +export * from './__generated__/envelope'; +export * from './__generated__/sigstore_bundle'; +export * from './__generated__/sigstore_common'; +export * from './__generated__/sigstore_rekor'; +export * from './__generated__/sigstore_trustroot'; +export * from './__generated__/sigstore_verification'; diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js new file mode 100644 index 00000000000000..eafb768c48fcaa --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/dist/index.js @@ -0,0 +1,37 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +/* +Copyright 2023 The Sigstore Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +__exportStar(require("./__generated__/envelope"), exports); +__exportStar(require("./__generated__/sigstore_bundle"), exports); +__exportStar(require("./__generated__/sigstore_common"), exports); +__exportStar(require("./__generated__/sigstore_rekor"), exports); +__exportStar(require("./__generated__/sigstore_trustroot"), exports); +__exportStar(require("./__generated__/sigstore_verification"), exports); diff --git a/deps/npm/node_modules/@sigstore/protobuf-specs/package.json b/deps/npm/node_modules/@sigstore/protobuf-specs/package.json new file mode 100644 index 00000000000000..7cb4aa9c5364ff --- /dev/null +++ b/deps/npm/node_modules/@sigstore/protobuf-specs/package.json @@ -0,0 +1,31 @@ +{ + "name": "@sigstore/protobuf-specs", + "version": "0.1.0", + "description": "code-signing for npm packages", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/sigstore/protobuf-specs.git" + }, + "files": [ + "dist" + ], + "author": "bdehamer@github.com", + "license": "Apache-2.0", + "bugs": { + "url": "https://github.com/sigstore/protobuf-specs/issues" + }, + "homepage": "https://github.com/sigstore/protobuf-specs#readme", + "devDependencies": { + "@tsconfig/node14": "^1.0.3", + "@types/node": "^18.14.0", + "typescript": "^4.9.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } +} diff --git a/deps/npm/node_modules/@tufjs/models/LICENSE b/deps/npm/node_modules/@tufjs/models/LICENSE new file mode 100644 index 00000000000000..420700f5d37659 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 GitHub and the TUF Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/deps/npm/node_modules/tuf-js/dist/models/base.d.ts b/deps/npm/node_modules/@tufjs/models/dist/base.d.ts similarity index 78% rename from deps/npm/node_modules/tuf-js/dist/models/base.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/base.d.ts index 4c5e0aaf4faaad..4cc2395328592f 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/base.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/base.d.ts @@ -1,5 +1,5 @@ -import { JSONObject, JSONValue } from '../utils/types'; import { Signature } from './signature'; +import { JSONObject, JSONValue } from './utils'; export interface Signable { signatures: Record; signed: Signed; @@ -10,6 +10,13 @@ export interface SignedOptions { expires?: string; unrecognizedFields?: Record; } +export declare enum MetadataKind { + Root = "root", + Timestamp = "timestamp", + Snapshot = "snapshot", + Targets = "targets" +} +export declare function isMetadataKind(value: unknown): value is MetadataKind; /*** * A base class for the signed part of TUF metadata. * diff --git a/deps/npm/node_modules/tuf-js/dist/models/base.js b/deps/npm/node_modules/@tufjs/models/dist/base.js similarity index 81% rename from deps/npm/node_modules/tuf-js/dist/models/base.js rename to deps/npm/node_modules/@tufjs/models/dist/base.js index 7658567e2d6027..d89a089c330922 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/base.js +++ b/deps/npm/node_modules/@tufjs/models/dist/base.js @@ -3,11 +3,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Signed = void 0; +exports.Signed = exports.isMetadataKind = exports.MetadataKind = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const utils_1 = require("../utils"); +const error_1 = require("./error"); +const utils_1 = require("./utils"); const SPECIFICATION_VERSION = ['1', '0', '31']; +var MetadataKind; +(function (MetadataKind) { + MetadataKind["Root"] = "root"; + MetadataKind["Timestamp"] = "timestamp"; + MetadataKind["Snapshot"] = "snapshot"; + MetadataKind["Targets"] = "targets"; +})(MetadataKind = exports.MetadataKind || (exports.MetadataKind = {})); +function isMetadataKind(value) { + return (typeof value === 'string' && + Object.values(MetadataKind).includes(value)); +} +exports.isMetadataKind = isMetadataKind; /*** * A base class for the signed part of TUF metadata. * diff --git a/deps/npm/node_modules/tuf-js/dist/models/delegations.d.ts b/deps/npm/node_modules/@tufjs/models/dist/delegations.d.ts similarity index 94% rename from deps/npm/node_modules/tuf-js/dist/models/delegations.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/delegations.d.ts index b53862aa865bec..357e9dfeb81abd 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/delegations.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/delegations.d.ts @@ -1,6 +1,6 @@ -import { JSONObject, JSONValue } from '../utils/types'; import { Key } from './key'; import { DelegatedRole, SuccinctRoles } from './role'; +import { JSONObject, JSONValue } from './utils'; type DelegatedRoleMap = Record; type KeyMap = Record; interface DelegationsOptions { diff --git a/deps/npm/node_modules/tuf-js/dist/models/delegations.js b/deps/npm/node_modules/@tufjs/models/dist/delegations.js similarity index 93% rename from deps/npm/node_modules/tuf-js/dist/models/delegations.js rename to deps/npm/node_modules/@tufjs/models/dist/delegations.js index 302bd52d8d885d..7165f1e2443936 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/delegations.js +++ b/deps/npm/node_modules/@tufjs/models/dist/delegations.js @@ -5,10 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Delegations = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); +const error_1 = require("./error"); const key_1 = require("./key"); const role_1 = require("./role"); +const utils_1 = require("./utils"); /** * A container object storing information about all delegations. * @@ -67,7 +67,7 @@ class Delegations { static fromJSON(data) { const { keys, roles, succinct_roles, ...unrecognizedFields } = data; let succinctRoles; - if ((0, guard_1.isObject)(succinct_roles)) { + if (utils_1.guard.isObject(succinct_roles)) { succinctRoles = role_1.SuccinctRoles.fromJSON(succinct_roles); } return new Delegations({ @@ -89,7 +89,7 @@ function rolesToJSON(roles) { return Object.values(roles).map((role) => role.toJSON()); } function keysFromJSON(data) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('keys is malformed'); } return Object.entries(data).reduce((acc, [keyID, keyData]) => ({ @@ -99,8 +99,8 @@ function keysFromJSON(data) { } function rolesFromJSON(data) { let roleMap; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectArray)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectArray(data)) { throw new TypeError('roles is malformed'); } roleMap = data.reduce((acc, role) => { diff --git a/deps/npm/node_modules/@tufjs/models/dist/error.d.ts b/deps/npm/node_modules/@tufjs/models/dist/error.d.ts new file mode 100644 index 00000000000000..e03d05a3813993 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/error.d.ts @@ -0,0 +1,12 @@ +export declare class ValueError extends Error { +} +export declare class RepositoryError extends Error { +} +export declare class UnsignedMetadataError extends RepositoryError { +} +export declare class LengthOrHashMismatchError extends RepositoryError { +} +export declare class CryptoError extends Error { +} +export declare class UnsupportedAlgorithmError extends CryptoError { +} diff --git a/deps/npm/node_modules/@tufjs/models/dist/error.js b/deps/npm/node_modules/@tufjs/models/dist/error.js new file mode 100644 index 00000000000000..ba80698747ba06 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/error.js @@ -0,0 +1,27 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnsupportedAlgorithmError = exports.CryptoError = exports.LengthOrHashMismatchError = exports.UnsignedMetadataError = exports.RepositoryError = exports.ValueError = void 0; +// An error about insufficient values +class ValueError extends Error { +} +exports.ValueError = ValueError; +// An error with a repository's state, such as a missing file. +// It covers all exceptions that come from the repository side when +// looking from the perspective of users of metadata API or ngclient. +class RepositoryError extends Error { +} +exports.RepositoryError = RepositoryError; +// An error about metadata object with insufficient threshold of signatures. +class UnsignedMetadataError extends RepositoryError { +} +exports.UnsignedMetadataError = UnsignedMetadataError; +// An error while checking the length and hash values of an object. +class LengthOrHashMismatchError extends RepositoryError { +} +exports.LengthOrHashMismatchError = LengthOrHashMismatchError; +class CryptoError extends Error { +} +exports.CryptoError = CryptoError; +class UnsupportedAlgorithmError extends CryptoError { +} +exports.UnsupportedAlgorithmError = UnsupportedAlgorithmError; diff --git a/deps/npm/node_modules/tuf-js/dist/models/file.d.ts b/deps/npm/node_modules/@tufjs/models/dist/file.d.ts similarity index 95% rename from deps/npm/node_modules/tuf-js/dist/models/file.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/file.d.ts index 9678cf1efefd59..7abeb2bb03fb43 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/file.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/file.d.ts @@ -1,7 +1,7 @@ /// /// import { Readable } from 'stream'; -import { JSONObject, JSONValue } from '../utils/types'; +import { JSONObject, JSONValue } from './utils'; interface MetaFileOptions { version: number; length?: number; diff --git a/deps/npm/node_modules/tuf-js/dist/models/file.js b/deps/npm/node_modules/@tufjs/models/dist/file.js similarity index 95% rename from deps/npm/node_modules/tuf-js/dist/models/file.js rename to deps/npm/node_modules/@tufjs/models/dist/file.js index d6d535f6ca7872..b35fe5950bbb7e 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/file.js +++ b/deps/npm/node_modules/@tufjs/models/dist/file.js @@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.TargetFile = exports.MetaFile = void 0; const crypto_1 = __importDefault(require("crypto")); const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); +const error_1 = require("./error"); +const utils_1 = require("./utils"); // A container with information about a particular metadata file. // // This class is used for Timestamp and Snapshot metadata. @@ -75,10 +75,10 @@ class MetaFile { if (typeof version !== 'number') { throw new TypeError('version must be a number'); } - if ((0, guard_1.isDefined)(length) && typeof length !== 'number') { + if (utils_1.guard.isDefined(length) && typeof length !== 'number') { throw new TypeError('length must be a number'); } - if ((0, guard_1.isDefined)(hashes) && !(0, guard_1.isStringRecord)(hashes)) { + if (utils_1.guard.isDefined(hashes) && !utils_1.guard.isStringRecord(hashes)) { throw new TypeError('hashes must be string keys and values'); } return new MetaFile({ @@ -163,7 +163,7 @@ class TargetFile { if (typeof length !== 'number') { throw new TypeError('length must be a number'); } - if (!(0, guard_1.isStringRecord)(hashes)) { + if (!utils_1.guard.isStringRecord(hashes)) { throw new TypeError('hashes must have string keys and values'); } return new TargetFile({ diff --git a/deps/npm/node_modules/@tufjs/models/dist/index.d.ts b/deps/npm/node_modules/@tufjs/models/dist/index.d.ts new file mode 100644 index 00000000000000..f9768beaea2000 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/index.d.ts @@ -0,0 +1,10 @@ +export { MetadataKind } from './base'; +export { ValueError } from './error'; +export { MetaFile, TargetFile } from './file'; +export { Key } from './key'; +export { Metadata } from './metadata'; +export { Root } from './root'; +export { Signature } from './signature'; +export { Snapshot } from './snapshot'; +export { Targets } from './targets'; +export { Timestamp } from './timestamp'; diff --git a/deps/npm/node_modules/@tufjs/models/dist/index.js b/deps/npm/node_modules/@tufjs/models/dist/index.js new file mode 100644 index 00000000000000..a4dc783659f045 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/index.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Timestamp = exports.Targets = exports.Snapshot = exports.Signature = exports.Root = exports.Metadata = exports.Key = exports.TargetFile = exports.MetaFile = exports.ValueError = exports.MetadataKind = void 0; +var base_1 = require("./base"); +Object.defineProperty(exports, "MetadataKind", { enumerable: true, get: function () { return base_1.MetadataKind; } }); +var error_1 = require("./error"); +Object.defineProperty(exports, "ValueError", { enumerable: true, get: function () { return error_1.ValueError; } }); +var file_1 = require("./file"); +Object.defineProperty(exports, "MetaFile", { enumerable: true, get: function () { return file_1.MetaFile; } }); +Object.defineProperty(exports, "TargetFile", { enumerable: true, get: function () { return file_1.TargetFile; } }); +var key_1 = require("./key"); +Object.defineProperty(exports, "Key", { enumerable: true, get: function () { return key_1.Key; } }); +var metadata_1 = require("./metadata"); +Object.defineProperty(exports, "Metadata", { enumerable: true, get: function () { return metadata_1.Metadata; } }); +var root_1 = require("./root"); +Object.defineProperty(exports, "Root", { enumerable: true, get: function () { return root_1.Root; } }); +var signature_1 = require("./signature"); +Object.defineProperty(exports, "Signature", { enumerable: true, get: function () { return signature_1.Signature; } }); +var snapshot_1 = require("./snapshot"); +Object.defineProperty(exports, "Snapshot", { enumerable: true, get: function () { return snapshot_1.Snapshot; } }); +var targets_1 = require("./targets"); +Object.defineProperty(exports, "Targets", { enumerable: true, get: function () { return targets_1.Targets; } }); +var timestamp_1 = require("./timestamp"); +Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return timestamp_1.Timestamp; } }); diff --git a/deps/npm/node_modules/tuf-js/dist/models/key.d.ts b/deps/npm/node_modules/@tufjs/models/dist/key.d.ts similarity index 91% rename from deps/npm/node_modules/tuf-js/dist/models/key.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/key.d.ts index 160407ae70ee3f..9f90b7ee8969bf 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/key.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/key.d.ts @@ -1,5 +1,5 @@ -import { JSONObject, JSONValue } from '../utils/types'; import { Signable } from './base'; +import { JSONObject, JSONValue } from './utils'; export interface KeyOptions { keyID: string; keyType: string; diff --git a/deps/npm/node_modules/tuf-js/dist/models/key.js b/deps/npm/node_modules/@tufjs/models/dist/key.js similarity index 68% rename from deps/npm/node_modules/tuf-js/dist/models/key.js rename to deps/npm/node_modules/@tufjs/models/dist/key.js index 33ff514fc178fa..5e55b09d7c6ddc 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/key.js +++ b/deps/npm/node_modules/@tufjs/models/dist/key.js @@ -1,37 +1,13 @@ "use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Key = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); -const key_1 = require("../utils/key"); -const signer = __importStar(require("../utils/signer")); +const error_1 = require("./error"); +const utils_1 = require("./utils"); +const key_1 = require("./utils/key"); // A container class representing the public portion of a Key. class Key { constructor(options) { @@ -57,7 +33,7 @@ class Key { }); const signedData = metadata.signed.toJSON(); try { - if (!signer.verifySignature(signedData, publicKey, signature.sig)) { + if (!utils_1.crypto.verifySignature(signedData, publicKey, signature.sig)) { throw new error_1.UnsignedMetadataError(`failed to verify ${this.keyID} signature`); } } @@ -94,7 +70,7 @@ class Key { if (typeof scheme !== 'string') { throw new TypeError('scheme must be a string'); } - if (!(0, guard_1.isStringRecord)(keyval)) { + if (!utils_1.guard.isStringRecord(keyval)) { throw new TypeError('keyval must be a string record'); } return new Key({ diff --git a/deps/npm/node_modules/tuf-js/dist/models/metadata.d.ts b/deps/npm/node_modules/@tufjs/models/dist/metadata.d.ts similarity index 90% rename from deps/npm/node_modules/tuf-js/dist/models/metadata.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/metadata.d.ts index 39abf034064496..55c9294a296eb2 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/metadata.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/metadata.d.ts @@ -1,10 +1,11 @@ -import { JSONObject, JSONValue, MetadataKind } from '../utils/types'; -import { Signable } from './base'; +/// +import { MetadataKind, Signable } from './base'; import { Root } from './root'; import { Signature } from './signature'; import { Snapshot } from './snapshot'; import { Targets } from './targets'; import { Timestamp } from './timestamp'; +import { JSONObject, JSONValue } from './utils'; type MetadataType = Root | Timestamp | Snapshot | Targets; /*** * A container for signed TUF metadata. @@ -35,8 +36,10 @@ export declare class Metadata implements Signable { signatures: Record; unrecognizedFields: Record; constructor(signed: T, signatures?: Record, unrecognizedFields?: Record); + sign(signer: (data: Buffer) => Signature, append?: boolean): void; verifyDelegate(delegatedRole: string, delegatedMetadata: Metadata): void; equals(other: T): boolean; + toJSON(): JSONObject; static fromJSON(type: MetadataKind.Root, data: JSONObject): Metadata; static fromJSON(type: MetadataKind.Timestamp, data: JSONObject): Metadata; static fromJSON(type: MetadataKind.Snapshot, data: JSONObject): Metadata; diff --git a/deps/npm/node_modules/tuf-js/dist/models/metadata.js b/deps/npm/node_modules/@tufjs/models/dist/metadata.js similarity index 82% rename from deps/npm/node_modules/tuf-js/dist/models/metadata.js rename to deps/npm/node_modules/@tufjs/models/dist/metadata.js index 11c3c546822acc..945d3a42a7cfb2 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/metadata.js +++ b/deps/npm/node_modules/@tufjs/models/dist/metadata.js @@ -5,14 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Metadata = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); +const base_1 = require("./base"); +const error_1 = require("./error"); const root_1 = require("./root"); const signature_1 = require("./signature"); const snapshot_1 = require("./snapshot"); const targets_1 = require("./targets"); const timestamp_1 = require("./timestamp"); +const utils_1 = require("./utils"); +const json_1 = require("./utils/json"); /*** * A container for signed TUF metadata. * @@ -43,15 +44,23 @@ class Metadata { this.signatures = signatures || {}; this.unrecognizedFields = unrecognizedFields || {}; } + sign(signer, append = true) { + const bytes = (0, json_1.canonicalize)(this.signed.toJSON()); + const signature = signer(bytes); + if (!append) { + this.signatures = {}; + } + this.signatures[signature.keyID] = signature; + } verifyDelegate(delegatedRole, delegatedMetadata) { let role; let keys = {}; switch (this.signed.type) { - case types_1.MetadataKind.Root: + case base_1.MetadataKind.Root: keys = this.signed.keys; role = this.signed.roles[delegatedRole]; break; - case types_1.MetadataKind.Targets: + case base_1.MetadataKind.Targets: if (!this.signed.delegations) { throw new error_1.ValueError(`No delegations found for ${delegatedRole}`); } @@ -98,9 +107,19 @@ class Metadata { util_1.default.isDeepStrictEqual(this.signatures, other.signatures) && util_1.default.isDeepStrictEqual(this.unrecognizedFields, other.unrecognizedFields)); } + toJSON() { + const signatures = Object.values(this.signatures).map((signature) => { + return signature.toJSON(); + }); + return { + signatures, + signed: this.signed.toJSON(), + ...this.unrecognizedFields, + }; + } static fromJSON(type, data) { const { signed, signatures, ...rest } = data; - if (!(0, guard_1.isDefined)(signed) || !(0, guard_1.isObject)(signed)) { + if (!utils_1.guard.isDefined(signed) || !utils_1.guard.isObject(signed)) { throw new TypeError('signed is not defined'); } if (type !== signed._type) { @@ -108,16 +127,16 @@ class Metadata { } let signedObj; switch (type) { - case types_1.MetadataKind.Root: + case base_1.MetadataKind.Root: signedObj = root_1.Root.fromJSON(signed); break; - case types_1.MetadataKind.Timestamp: + case base_1.MetadataKind.Timestamp: signedObj = timestamp_1.Timestamp.fromJSON(signed); break; - case types_1.MetadataKind.Snapshot: + case base_1.MetadataKind.Snapshot: signedObj = snapshot_1.Snapshot.fromJSON(signed); break; - case types_1.MetadataKind.Targets: + case base_1.MetadataKind.Targets: signedObj = targets_1.Targets.fromJSON(signed); break; default: @@ -129,7 +148,7 @@ class Metadata { } exports.Metadata = Metadata; function signaturesFromJSON(data) { - if (!(0, guard_1.isObjectArray)(data)) { + if (!utils_1.guard.isObjectArray(data)) { throw new TypeError('signatures is not an array'); } return data.reduce((acc, sigData) => { diff --git a/deps/npm/node_modules/tuf-js/dist/models/role.d.ts b/deps/npm/node_modules/@tufjs/models/dist/role.d.ts similarity index 98% rename from deps/npm/node_modules/tuf-js/dist/models/role.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/role.d.ts index 4575300fb972f9..b3a6efae2cac31 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/role.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/role.d.ts @@ -1,4 +1,4 @@ -import { JSONObject, JSONValue } from '../utils/types'; +import { JSONObject, JSONValue } from './utils'; export declare const TOP_LEVEL_ROLE_NAMES: string[]; export interface RoleOptions { keyIDs: string[]; diff --git a/deps/npm/node_modules/tuf-js/dist/models/role.js b/deps/npm/node_modules/@tufjs/models/dist/role.js similarity index 96% rename from deps/npm/node_modules/tuf-js/dist/models/role.js rename to deps/npm/node_modules/@tufjs/models/dist/role.js index da80a09b8b09f6..143c5dc6089665 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/role.js +++ b/deps/npm/node_modules/@tufjs/models/dist/role.js @@ -7,8 +7,8 @@ exports.SuccinctRoles = exports.DelegatedRole = exports.Role = exports.TOP_LEVEL const crypto_1 = __importDefault(require("crypto")); const minimatch_1 = __importDefault(require("minimatch")); const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); +const error_1 = require("./error"); +const utils_1 = require("./utils"); exports.TOP_LEVEL_ROLE_NAMES = [ 'root', 'targets', @@ -51,7 +51,7 @@ class Role { } static fromJSON(data) { const { keyids, threshold, ...rest } = data; - if (!(0, guard_1.isStringArray)(keyids)) { + if (!utils_1.guard.isStringArray(keyids)) { throw new TypeError('keyids must be an array'); } if (typeof threshold !== 'number') { @@ -128,7 +128,7 @@ class DelegatedRole extends Role { } static fromJSON(data) { const { keyids, threshold, name, terminating, paths, path_hash_prefixes, ...rest } = data; - if (!(0, guard_1.isStringArray)(keyids)) { + if (!utils_1.guard.isStringArray(keyids)) { throw new TypeError('keyids must be an array of strings'); } if (typeof threshold !== 'number') { @@ -140,10 +140,11 @@ class DelegatedRole extends Role { if (typeof terminating !== 'boolean') { throw new TypeError('terminating must be a boolean'); } - if ((0, guard_1.isDefined)(paths) && !(0, guard_1.isStringArray)(paths)) { + if (utils_1.guard.isDefined(paths) && !utils_1.guard.isStringArray(paths)) { throw new TypeError('paths must be an array of strings'); } - if ((0, guard_1.isDefined)(path_hash_prefixes) && !(0, guard_1.isStringArray)(path_hash_prefixes)) { + if (utils_1.guard.isDefined(path_hash_prefixes) && + !utils_1.guard.isStringArray(path_hash_prefixes)) { throw new TypeError('path_hash_prefixes must be an array of strings'); } return new DelegatedRole({ @@ -274,7 +275,7 @@ class SuccinctRoles extends Role { } static fromJSON(data) { const { keyids, threshold, bit_length, name_prefix, ...rest } = data; - if (!(0, guard_1.isStringArray)(keyids)) { + if (!utils_1.guard.isStringArray(keyids)) { throw new TypeError('keyids must be an array of strings'); } if (typeof threshold !== 'number') { diff --git a/deps/npm/node_modules/tuf-js/dist/models/root.d.ts b/deps/npm/node_modules/@tufjs/models/dist/root.d.ts similarity index 85% rename from deps/npm/node_modules/tuf-js/dist/models/root.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/root.d.ts index 66356628f4b8a5..eb5eb8dede98b9 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/root.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/root.d.ts @@ -1,7 +1,7 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { Key } from './key'; import { Role } from './role'; +import { JSONObject } from './utils'; type KeyMap = Record; type RoleMap = Record; export interface RootOptions extends SignedOptions { @@ -21,6 +21,7 @@ export declare class Root extends Signed { readonly roles: RoleMap; readonly consistentSnapshot: boolean; constructor(options: RootOptions); + addKey(key: Key, role: string): void; equals(other: Root): boolean; toJSON(): JSONObject; static fromJSON(data: JSONObject): Root; diff --git a/deps/npm/node_modules/tuf-js/dist/models/root.js b/deps/npm/node_modules/@tufjs/models/dist/root.js similarity index 84% rename from deps/npm/node_modules/tuf-js/dist/models/root.js rename to deps/npm/node_modules/@tufjs/models/dist/root.js index 574ec1acdcc39d..36d0ef0f186d15 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/root.js +++ b/deps/npm/node_modules/@tufjs/models/dist/root.js @@ -5,12 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Root = void 0; const util_1 = __importDefault(require("util")); -const error_1 = require("../error"); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); +const error_1 = require("./error"); const key_1 = require("./key"); const role_1 = require("./role"); +const utils_1 = require("./utils"); /** * A container for the signed part of root metadata. * @@ -20,7 +19,7 @@ const role_1 = require("./role"); class Root extends base_1.Signed { constructor(options) { super(options); - this.type = types_1.MetadataKind.Root; + this.type = base_1.MetadataKind.Root; this.keys = options.keys || {}; this.consistentSnapshot = options.consistentSnapshot ?? true; if (!options.roles) { @@ -37,6 +36,15 @@ class Root extends base_1.Signed { this.roles = options.roles; } } + addKey(key, role) { + if (!this.roles[role]) { + throw new error_1.ValueError(`role ${role} does not exist`); + } + if (!this.roles[role].keyIDs.includes(key.keyID)) { + this.roles[role].keyIDs.push(key.keyID); + } + this.keys[key.keyID] = key; + } equals(other) { if (!(other instanceof Root)) { return false; @@ -48,6 +56,7 @@ class Root extends base_1.Signed { } toJSON() { return { + _type: this.type, spec_version: this.specVersion, version: this.version, expires: this.expires, @@ -81,8 +90,8 @@ function rolesToJSON(roles) { } function keysFromJSON(data) { let keys; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('keys must be an object'); } keys = Object.entries(data).reduce((acc, [keyID, keyData]) => ({ @@ -94,8 +103,8 @@ function keysFromJSON(data) { } function rolesFromJSON(data) { let roles; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('roles must be an object'); } roles = Object.entries(data).reduce((acc, [roleName, roleData]) => ({ diff --git a/deps/npm/node_modules/tuf-js/dist/models/signature.d.ts b/deps/npm/node_modules/@tufjs/models/dist/signature.d.ts similarity index 88% rename from deps/npm/node_modules/tuf-js/dist/models/signature.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/signature.d.ts index 1d78e2d8e55d08..dbeabbef877174 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/signature.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/signature.d.ts @@ -1,4 +1,4 @@ -import { JSONObject } from '../utils/types'; +import { JSONObject } from './utils'; export interface SignatureOptions { keyID: string; sig: string; @@ -15,5 +15,6 @@ export declare class Signature { readonly keyID: string; readonly sig: string; constructor(options: SignatureOptions); + toJSON(): JSONObject; static fromJSON(data: JSONObject): Signature; } diff --git a/deps/npm/node_modules/tuf-js/dist/models/signature.js b/deps/npm/node_modules/@tufjs/models/dist/signature.js similarity index 89% rename from deps/npm/node_modules/tuf-js/dist/models/signature.js rename to deps/npm/node_modules/@tufjs/models/dist/signature.js index 9550fa7b551fc9..33eb204eb0835e 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/signature.js +++ b/deps/npm/node_modules/@tufjs/models/dist/signature.js @@ -15,6 +15,12 @@ class Signature { this.keyID = keyID; this.sig = sig; } + toJSON() { + return { + keyid: this.keyID, + sig: this.sig, + }; + } static fromJSON(data) { const { keyid, sig } = data; if (typeof keyid !== 'string') { diff --git a/deps/npm/node_modules/tuf-js/dist/models/snapshot.d.ts b/deps/npm/node_modules/@tufjs/models/dist/snapshot.d.ts similarity index 87% rename from deps/npm/node_modules/tuf-js/dist/models/snapshot.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/snapshot.d.ts index 79bc07359509bd..bcc780aee0977c 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/snapshot.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/snapshot.d.ts @@ -1,6 +1,6 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { MetaFile } from './file'; +import { JSONObject } from './utils'; type MetaFileMap = Record; export interface SnapshotOptions extends SignedOptions { meta?: MetaFileMap; diff --git a/deps/npm/node_modules/tuf-js/dist/models/snapshot.js b/deps/npm/node_modules/@tufjs/models/dist/snapshot.js similarity index 89% rename from deps/npm/node_modules/tuf-js/dist/models/snapshot.js rename to deps/npm/node_modules/@tufjs/models/dist/snapshot.js index 0945a28cd03cc9..e90ea8e729e4e8 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/snapshot.js +++ b/deps/npm/node_modules/@tufjs/models/dist/snapshot.js @@ -5,10 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Snapshot = void 0; const util_1 = __importDefault(require("util")); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); const file_1 = require("./file"); +const utils_1 = require("./utils"); /** * A container for the signed part of snapshot metadata. * @@ -19,7 +18,7 @@ const file_1 = require("./file"); class Snapshot extends base_1.Signed { constructor(opts) { super(opts); - this.type = types_1.MetadataKind.Snapshot; + this.type = base_1.MetadataKind.Snapshot; this.meta = opts.meta || { 'targets.json': new file_1.MetaFile({ version: 1 }) }; } equals(other) { @@ -30,6 +29,7 @@ class Snapshot extends base_1.Signed { } toJSON() { return { + _type: this.type, meta: metaToJSON(this.meta), spec_version: this.specVersion, version: this.version, @@ -56,8 +56,8 @@ function metaToJSON(meta) { } function metaFromJSON(data) { let meta; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('meta field is malformed'); } else { @@ -66,6 +66,6 @@ function metaFromJSON(data) { [path]: file_1.MetaFile.fromJSON(metadata), }), {}); } - return meta; } + return meta; } diff --git a/deps/npm/node_modules/tuf-js/dist/models/targets.d.ts b/deps/npm/node_modules/@tufjs/models/dist/targets.d.ts similarity index 80% rename from deps/npm/node_modules/tuf-js/dist/models/targets.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/targets.d.ts index 24dba9ac715805..442f9e44391b41 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/targets.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/targets.d.ts @@ -1,7 +1,7 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { Delegations } from './delegations'; import { TargetFile } from './file'; +import { JSONObject } from './utils'; type TargetFileMap = Record; interface TargetsOptions extends SignedOptions { targets?: TargetFileMap; @@ -12,6 +12,7 @@ export declare class Targets extends Signed { readonly targets: TargetFileMap; readonly delegations?: Delegations; constructor(options: TargetsOptions); + addTarget(target: TargetFile): void; equals(other: Targets): boolean; toJSON(): JSONObject; static fromJSON(data: JSONObject): Targets; diff --git a/deps/npm/node_modules/tuf-js/dist/models/targets.js b/deps/npm/node_modules/@tufjs/models/dist/targets.js similarity index 88% rename from deps/npm/node_modules/tuf-js/dist/models/targets.js rename to deps/npm/node_modules/@tufjs/models/dist/targets.js index 90a2528764708e..54bd8f8c554af5 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/targets.js +++ b/deps/npm/node_modules/@tufjs/models/dist/targets.js @@ -5,11 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { Object.defineProperty(exports, "__esModule", { value: true }); exports.Targets = void 0; const util_1 = __importDefault(require("util")); -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); const delegations_1 = require("./delegations"); const file_1 = require("./file"); +const utils_1 = require("./utils"); // Container for the signed part of targets metadata. // // Targets contains verifying information about target files and also delegates @@ -17,10 +16,13 @@ const file_1 = require("./file"); class Targets extends base_1.Signed { constructor(options) { super(options); - this.type = types_1.MetadataKind.Targets; + this.type = base_1.MetadataKind.Targets; this.targets = options.targets || {}; this.delegations = options.delegations; } + addTarget(target) { + this.targets[target.path] = target; + } equals(other) { if (!(other instanceof Targets)) { return false; @@ -31,6 +33,7 @@ class Targets extends base_1.Signed { } toJSON() { const json = { + _type: this.type, spec_version: this.specVersion, version: this.version, expires: this.expires, @@ -62,8 +65,8 @@ function targetsToJSON(targets) { } function targetsFromJSON(data) { let targets; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObjectRecord)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObjectRecord(data)) { throw new TypeError('targets must be an object'); } else { @@ -77,8 +80,8 @@ function targetsFromJSON(data) { } function delegationsFromJSON(data) { let delegations; - if ((0, guard_1.isDefined)(data)) { - if (!(0, guard_1.isObject)(data)) { + if (utils_1.guard.isDefined(data)) { + if (!utils_1.guard.isObject(data)) { throw new TypeError('delegations must be an object'); } else { diff --git a/deps/npm/node_modules/tuf-js/dist/models/timestamp.d.ts b/deps/npm/node_modules/@tufjs/models/dist/timestamp.d.ts similarity index 85% rename from deps/npm/node_modules/tuf-js/dist/models/timestamp.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/timestamp.d.ts index 481ada8e238d53..9ab012b8912a32 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/timestamp.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/timestamp.d.ts @@ -1,6 +1,6 @@ -import { JSONObject, MetadataKind } from '../utils/types'; -import { Signed, SignedOptions } from './base'; +import { MetadataKind, Signed, SignedOptions } from './base'; import { MetaFile } from './file'; +import { JSONObject } from './utils'; interface TimestampOptions extends SignedOptions { snapshotMeta?: MetaFile; } diff --git a/deps/npm/node_modules/tuf-js/dist/models/timestamp.js b/deps/npm/node_modules/@tufjs/models/dist/timestamp.js similarity index 86% rename from deps/npm/node_modules/tuf-js/dist/models/timestamp.js rename to deps/npm/node_modules/@tufjs/models/dist/timestamp.js index 84f681b68d16a3..9880c4c9fc2549 100644 --- a/deps/npm/node_modules/tuf-js/dist/models/timestamp.js +++ b/deps/npm/node_modules/@tufjs/models/dist/timestamp.js @@ -1,10 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Timestamp = void 0; -const guard_1 = require("../utils/guard"); -const types_1 = require("../utils/types"); const base_1 = require("./base"); const file_1 = require("./file"); +const utils_1 = require("./utils"); /** * A container for the signed part of timestamp metadata. * @@ -14,7 +13,7 @@ const file_1 = require("./file"); class Timestamp extends base_1.Signed { constructor(options) { super(options); - this.type = types_1.MetadataKind.Timestamp; + this.type = base_1.MetadataKind.Timestamp; this.snapshotMeta = options.snapshotMeta || new file_1.MetaFile({ version: 1 }); } equals(other) { @@ -25,6 +24,7 @@ class Timestamp extends base_1.Signed { } toJSON() { return { + _type: this.type, spec_version: this.specVersion, version: this.version, expires: this.expires, @@ -45,9 +45,9 @@ class Timestamp extends base_1.Signed { exports.Timestamp = Timestamp; function snapshotMetaFromJSON(data) { let snapshotMeta; - if ((0, guard_1.isDefined)(data)) { + if (utils_1.guard.isDefined(data)) { const snapshotData = data['snapshot.json']; - if (!(0, guard_1.isDefined)(snapshotData) || !(0, guard_1.isObject)(snapshotData)) { + if (!utils_1.guard.isDefined(snapshotData) || !utils_1.guard.isObject(snapshotData)) { throw new TypeError('missing snapshot.json in meta'); } else { diff --git a/deps/npm/node_modules/tuf-js/dist/utils/guard.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.d.ts similarity index 78% rename from deps/npm/node_modules/tuf-js/dist/utils/guard.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/guard.d.ts index 17bc4ce3c7ea53..60c80e160752e4 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/guard.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.d.ts @@ -1,8 +1,7 @@ -import { JSONObject, MetadataKind } from './types'; +import { JSONObject } from './types'; export declare function isDefined(val: T | undefined): val is T; export declare function isObject(value: unknown): value is JSONObject; export declare function isStringArray(value: unknown): value is string[]; export declare function isObjectArray(value: unknown): value is JSONObject[]; export declare function isStringRecord(value: unknown): value is Record; export declare function isObjectRecord(value: unknown): value is Record; -export declare function isMetadataKind(value: unknown): value is MetadataKind; diff --git a/deps/npm/node_modules/tuf-js/dist/utils/guard.js b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.js similarity index 74% rename from deps/npm/node_modules/tuf-js/dist/utils/guard.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/guard.js index f2207af18690ac..efe558852303ce 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/guard.js +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/guard.js @@ -1,7 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.isMetadataKind = exports.isObjectRecord = exports.isStringRecord = exports.isObjectArray = exports.isStringArray = exports.isObject = exports.isDefined = void 0; -const types_1 = require("./types"); +exports.isObjectRecord = exports.isStringRecord = exports.isObjectArray = exports.isStringArray = exports.isObject = exports.isDefined = void 0; function isDefined(val) { return val !== undefined; } @@ -32,8 +31,3 @@ function isObjectRecord(value) { Object.values(value).every((v) => typeof v === 'object' && v !== null)); } exports.isObjectRecord = isObjectRecord; -function isMetadataKind(value) { - return (typeof value === 'string' && - Object.values(types_1.MetadataKind).includes(value)); -} -exports.isMetadataKind = isMetadataKind; diff --git a/deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts new file mode 100644 index 00000000000000..7dbbd1eeecfdf6 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/index.d.ts @@ -0,0 +1,3 @@ +export * as guard from './guard'; +export { JSONObject, JSONValue } from './types'; +export * as crypto from './verify'; diff --git a/deps/npm/node_modules/tuf-js/dist/utils/index.js b/deps/npm/node_modules/@tufjs/models/dist/utils/index.js similarity index 79% rename from deps/npm/node_modules/tuf-js/dist/utils/index.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/index.js index 604696a30565b4..872aae28049c9c 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/index.js +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/index.js @@ -23,9 +23,6 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.types = exports.signer = exports.json = exports.guard = exports.config = void 0; -exports.config = __importStar(require("./config")); +exports.crypto = exports.guard = void 0; exports.guard = __importStar(require("./guard")); -exports.json = __importStar(require("./json")); -exports.signer = __importStar(require("./signer")); -exports.types = __importStar(require("./types")); +exports.crypto = __importStar(require("./verify")); diff --git a/deps/npm/node_modules/tuf-js/dist/utils/json.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/json.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/json.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/json.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/json.js b/deps/npm/node_modules/@tufjs/models/dist/utils/json.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/json.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/json.js diff --git a/deps/npm/node_modules/tuf-js/dist/utils/key.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/key.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/key.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/key.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/key.js b/deps/npm/node_modules/@tufjs/models/dist/utils/key.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/key.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/key.js diff --git a/deps/npm/node_modules/tuf-js/dist/utils/oid.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/oid.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/oid.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/oid.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/oid.js b/deps/npm/node_modules/@tufjs/models/dist/utils/oid.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/oid.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/oid.js diff --git a/deps/npm/node_modules/tuf-js/dist/utils/types.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/types.d.ts similarity index 51% rename from deps/npm/node_modules/tuf-js/dist/utils/types.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/types.d.ts index 24319ddf7bb6bc..dd3964ec571e23 100644 --- a/deps/npm/node_modules/tuf-js/dist/utils/types.d.ts +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/types.d.ts @@ -1,9 +1,3 @@ -export declare enum MetadataKind { - Root = "root", - Timestamp = "timestamp", - Snapshot = "snapshot", - Targets = "targets" -} export type JSONObject = { [key: string]: JSONValue; }; diff --git a/deps/npm/node_modules/@tufjs/models/dist/utils/types.js b/deps/npm/node_modules/@tufjs/models/dist/utils/types.js new file mode 100644 index 00000000000000..c8ad2e549bdc68 --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/dist/utils/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/deps/npm/node_modules/tuf-js/dist/utils/signer.d.ts b/deps/npm/node_modules/@tufjs/models/dist/utils/verify.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/signer.d.ts rename to deps/npm/node_modules/@tufjs/models/dist/utils/verify.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/signer.js b/deps/npm/node_modules/@tufjs/models/dist/utils/verify.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/signer.js rename to deps/npm/node_modules/@tufjs/models/dist/utils/verify.js diff --git a/deps/npm/node_modules/@tufjs/models/package.json b/deps/npm/node_modules/@tufjs/models/package.json new file mode 100644 index 00000000000000..f3746c27041fdd --- /dev/null +++ b/deps/npm/node_modules/@tufjs/models/package.json @@ -0,0 +1,41 @@ +{ + "name": "@tufjs/models", + "version": "1.0.0", + "description": "TUF metadata models", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "tsc --build", + "clean": "rm -rf dist && rm tsconfig.tsbuildinfo", + "test": "jest" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/theupdateframework/tuf-js.git" + }, + "keywords": [ + "tuf", + "security", + "update" + ], + "author": "bdehamer@github.com", + "license": "MIT", + "bugs": { + "url": "https://github.com/theupdateframework/tuf-js/issues" + }, + "homepage": "https://github.com/theupdateframework/tuf-js/packages/models#readme", + "devDependencies": { + "@types/minimatch": "^5.1.2", + "@types/node": "^18.14.1", + "typescript": "^4.9.5" + }, + "dependencies": { + "minimatch": "^6.1.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } +} diff --git a/deps/npm/node_modules/agentkeepalive/package.json b/deps/npm/node_modules/agentkeepalive/package.json index efa561d2c6d6c1..3115fee69a0416 100644 --- a/deps/npm/node_modules/agentkeepalive/package.json +++ b/deps/npm/node_modules/agentkeepalive/package.json @@ -1,6 +1,6 @@ { "name": "agentkeepalive", - "version": "4.2.1", + "version": "4.3.0", "description": "Missing keepalive http.Agent", "main": "index.js", "browser": "browser.js", @@ -11,12 +11,12 @@ "lib" ], "scripts": { + "contributor": "git-contributor", "test": "npm run lint && egg-bin test --full-trace", "test-local": "egg-bin test --full-trace", "cov": "cross-env DEBUG=agentkeepalive egg-bin cov --full-trace", "ci": "npm run lint && npm run cov", - "lint": "eslint lib test index.js", - "autod": "autod" + "lint": "eslint lib test index.js" }, "repository": { "type": "git", @@ -36,17 +36,16 @@ ], "dependencies": { "debug": "^4.1.0", - "depd": "^1.1.2", + "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "devDependencies": { - "autod": "^3.0.1", "coffee": "^5.3.0", "cross-env": "^6.0.3", "egg-bin": "^4.9.0", - "egg-ci": "^1.10.0", "eslint": "^5.7.0", "eslint-config-egg": "^7.1.0", + "git-contributor": "^2.0.0", "mm": "^2.4.1", "pedding": "^1.1.0", "typescript": "^3.8.3" @@ -54,13 +53,6 @@ "engines": { "node": ">= 8.0.0" }, - "ci": { - "type": "github", - "os": { - "github": "linux" - }, - "version": "8, 10, 12, 14, 16" - }, - "author": "fengmk2 (https://fengmk2.com)", + "author": "fengmk2 (https://github.com/fengmk2)", "license": "MIT" } diff --git a/deps/npm/node_modules/depd/History.md b/deps/npm/node_modules/depd/History.md index 507ecb8de21d5d..cd9ebaaa9963f7 100644 --- a/deps/npm/node_modules/depd/History.md +++ b/deps/npm/node_modules/depd/History.md @@ -1,3 +1,10 @@ +2.0.0 / 2018-10-26 +================== + + * Drop support for Node.js 0.6 + * Replace internal `eval` usage with `Function` constructor + * Use instance methods on `process` to check for listeners + 1.1.2 / 2018-01-11 ================== diff --git a/deps/npm/node_modules/depd/LICENSE b/deps/npm/node_modules/depd/LICENSE index 84441fbb570926..248de7af2bd16c 100644 --- a/deps/npm/node_modules/depd/LICENSE +++ b/deps/npm/node_modules/depd/LICENSE @@ -1,6 +1,6 @@ (The MIT License) -Copyright (c) 2014-2017 Douglas Christopher Wilson +Copyright (c) 2014-2018 Douglas Christopher Wilson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the diff --git a/deps/npm/node_modules/depd/index.js b/deps/npm/node_modules/depd/index.js index d758d3c8f58a60..1bf2fcfdeffc98 100644 --- a/deps/npm/node_modules/depd/index.js +++ b/deps/npm/node_modules/depd/index.js @@ -1,6 +1,6 @@ /*! * depd - * Copyright(c) 2014-2017 Douglas Christopher Wilson + * Copyright(c) 2014-2018 Douglas Christopher Wilson * MIT Licensed */ @@ -8,8 +8,6 @@ * Module dependencies. */ -var callSiteToString = require('./lib/compat').callSiteToString -var eventListenerCount = require('./lib/compat').eventListenerCount var relative = require('path').relative /** @@ -92,7 +90,7 @@ function createStackString (stack) { } for (var i = 0; i < stack.length; i++) { - str += '\n at ' + callSiteToString(stack[i]) + str += '\n at ' + stack[i].toString() } return str @@ -128,12 +126,31 @@ function depd (namespace) { return deprecate } +/** + * Determine if event emitter has listeners of a given type. + * + * The way to do this check is done three different ways in Node.js >= 0.8 + * so this consolidates them into a minimal set using instance methods. + * + * @param {EventEmitter} emitter + * @param {string} type + * @returns {boolean} + * @private + */ + +function eehaslisteners (emitter, type) { + var count = typeof emitter.listenerCount !== 'function' + ? emitter.listeners(type).length + : emitter.listenerCount(type) + + return count > 0 +} + /** * Determine if namespace is ignored. */ function isignored (namespace) { - /* istanbul ignore next: tested in a child processs */ if (process.noDeprecation) { // --no-deprecation support return true @@ -150,7 +167,6 @@ function isignored (namespace) { */ function istraced (namespace) { - /* istanbul ignore next: tested in a child processs */ if (process.traceDeprecation) { // --trace-deprecation support return true @@ -167,7 +183,7 @@ function istraced (namespace) { */ function log (message, site) { - var haslisteners = eventListenerCount(process, 'deprecation') !== 0 + var haslisteners = eehaslisteners(process, 'deprecation') // abort early if no destination if (!haslisteners && this._ignored) { @@ -310,7 +326,7 @@ function formatPlain (msg, caller, stack) { // add stack trace if (this._traced) { for (var i = 0; i < stack.length; i++) { - formatted += '\n at ' + callSiteToString(stack[i]) + formatted += '\n at ' + stack[i].toString() } return formatted @@ -335,7 +351,7 @@ function formatColor (msg, caller, stack) { // add stack trace if (this._traced) { for (var i = 0; i < stack.length; i++) { - formatted += '\n \x1b[36mat ' + callSiteToString(stack[i]) + '\x1b[39m' // cyan + formatted += '\n \x1b[36mat ' + stack[i].toString() + '\x1b[39m' // cyan } return formatted @@ -400,18 +416,18 @@ function wrapfunction (fn, message) { } var args = createArgumentsString(fn.length) - var deprecate = this // eslint-disable-line no-unused-vars var stack = getStack() var site = callSiteLocation(stack[1]) site.name = fn.name - // eslint-disable-next-line no-eval - var deprecatedfn = eval('(function (' + args + ') {\n' + + // eslint-disable-next-line no-new-func + var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site', '"use strict"\n' + + 'return function (' + args + ') {' + 'log.call(deprecate, message, site)\n' + 'return fn.apply(this, arguments)\n' + - '})') + '}')(fn, log, this, message, site) return deprecatedfn } diff --git a/deps/npm/node_modules/depd/lib/compat/callsite-tostring.js b/deps/npm/node_modules/depd/lib/compat/callsite-tostring.js deleted file mode 100644 index 73186dc644a366..00000000000000 --- a/deps/npm/node_modules/depd/lib/compat/callsite-tostring.js +++ /dev/null @@ -1,103 +0,0 @@ -/*! - * depd - * Copyright(c) 2014 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - */ - -module.exports = callSiteToString - -/** - * Format a CallSite file location to a string. - */ - -function callSiteFileLocation (callSite) { - var fileName - var fileLocation = '' - - if (callSite.isNative()) { - fileLocation = 'native' - } else if (callSite.isEval()) { - fileName = callSite.getScriptNameOrSourceURL() - if (!fileName) { - fileLocation = callSite.getEvalOrigin() - } - } else { - fileName = callSite.getFileName() - } - - if (fileName) { - fileLocation += fileName - - var lineNumber = callSite.getLineNumber() - if (lineNumber != null) { - fileLocation += ':' + lineNumber - - var columnNumber = callSite.getColumnNumber() - if (columnNumber) { - fileLocation += ':' + columnNumber - } - } - } - - return fileLocation || 'unknown source' -} - -/** - * Format a CallSite to a string. - */ - -function callSiteToString (callSite) { - var addSuffix = true - var fileLocation = callSiteFileLocation(callSite) - var functionName = callSite.getFunctionName() - var isConstructor = callSite.isConstructor() - var isMethodCall = !(callSite.isToplevel() || isConstructor) - var line = '' - - if (isMethodCall) { - var methodName = callSite.getMethodName() - var typeName = getConstructorName(callSite) - - if (functionName) { - if (typeName && functionName.indexOf(typeName) !== 0) { - line += typeName + '.' - } - - line += functionName - - if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) { - line += ' [as ' + methodName + ']' - } - } else { - line += typeName + '.' + (methodName || '') - } - } else if (isConstructor) { - line += 'new ' + (functionName || '') - } else if (functionName) { - line += functionName - } else { - addSuffix = false - line += fileLocation - } - - if (addSuffix) { - line += ' (' + fileLocation + ')' - } - - return line -} - -/** - * Get constructor name of reviver. - */ - -function getConstructorName (obj) { - var receiver = obj.receiver - return (receiver.constructor && receiver.constructor.name) || null -} diff --git a/deps/npm/node_modules/depd/lib/compat/event-listener-count.js b/deps/npm/node_modules/depd/lib/compat/event-listener-count.js deleted file mode 100644 index 3a8925d136ae6e..00000000000000 --- a/deps/npm/node_modules/depd/lib/compat/event-listener-count.js +++ /dev/null @@ -1,22 +0,0 @@ -/*! - * depd - * Copyright(c) 2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module exports. - * @public - */ - -module.exports = eventListenerCount - -/** - * Get the count of listeners on an event emitter of a specific type. - */ - -function eventListenerCount (emitter, type) { - return emitter.listeners(type).length -} diff --git a/deps/npm/node_modules/depd/lib/compat/index.js b/deps/npm/node_modules/depd/lib/compat/index.js deleted file mode 100644 index 955b3336b25e79..00000000000000 --- a/deps/npm/node_modules/depd/lib/compat/index.js +++ /dev/null @@ -1,79 +0,0 @@ -/*! - * depd - * Copyright(c) 2014-2015 Douglas Christopher Wilson - * MIT Licensed - */ - -'use strict' - -/** - * Module dependencies. - * @private - */ - -var EventEmitter = require('events').EventEmitter - -/** - * Module exports. - * @public - */ - -lazyProperty(module.exports, 'callSiteToString', function callSiteToString () { - var limit = Error.stackTraceLimit - var obj = {} - var prep = Error.prepareStackTrace - - function prepareObjectStackTrace (obj, stack) { - return stack - } - - Error.prepareStackTrace = prepareObjectStackTrace - Error.stackTraceLimit = 2 - - // capture the stack - Error.captureStackTrace(obj) - - // slice the stack - var stack = obj.stack.slice() - - Error.prepareStackTrace = prep - Error.stackTraceLimit = limit - - return stack[0].toString ? toString : require('./callsite-tostring') -}) - -lazyProperty(module.exports, 'eventListenerCount', function eventListenerCount () { - return EventEmitter.listenerCount || require('./event-listener-count') -}) - -/** - * Define a lazy property. - */ - -function lazyProperty (obj, prop, getter) { - function get () { - var val = getter() - - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - value: val - }) - - return val - } - - Object.defineProperty(obj, prop, { - configurable: true, - enumerable: true, - get: get - }) -} - -/** - * Call toString() on the obj - */ - -function toString (obj) { - return obj.toString() -} diff --git a/deps/npm/node_modules/depd/package.json b/deps/npm/node_modules/depd/package.json index 5e3c863216e40f..3857e199184a0a 100644 --- a/deps/npm/node_modules/depd/package.json +++ b/deps/npm/node_modules/depd/package.json @@ -1,7 +1,7 @@ { "name": "depd", "description": "Deprecate all the things", - "version": "1.1.2", + "version": "2.0.0", "author": "Douglas Christopher Wilson ", "license": "MIT", "keywords": [ @@ -13,13 +13,17 @@ "devDependencies": { "benchmark": "2.1.4", "beautify-benchmark": "0.2.4", - "eslint": "3.19.0", - "eslint-config-standard": "7.1.0", + "eslint": "5.7.0", + "eslint-config-standard": "12.0.0", + "eslint-plugin-import": "2.14.0", "eslint-plugin-markdown": "1.0.0-beta.7", - "eslint-plugin-promise": "3.6.0", - "eslint-plugin-standard": "3.0.1", + "eslint-plugin-node": "7.0.1", + "eslint-plugin-promise": "4.0.1", + "eslint-plugin-standard": "4.0.0", "istanbul": "0.4.5", - "mocha": "~1.21.5" + "mocha": "5.2.0", + "safe-buffer": "5.1.2", + "uid-safe": "2.1.5" }, "files": [ "lib/", @@ -29,13 +33,13 @@ "Readme.md" ], "engines": { - "node": ">= 0.6" + "node": ">= 0.8" }, "scripts": { "bench": "node benchmark/index.js", "lint": "eslint --plugin markdown --ext js,md .", "test": "mocha --reporter spec --bail test/", - "test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --no-exit test/", - "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot test/" + "test-ci": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter spec test/ && istanbul report lcovonly text-summary", + "test-cov": "istanbul cover --print=none node_modules/mocha/bin/_mocha -- --reporter dot test/ && istanbul report lcov text-summary" } } diff --git a/deps/npm/node_modules/libnpmaccess/package.json b/deps/npm/node_modules/libnpmaccess/package.json index ae4cb8b21eb4bb..30f83a49e5f2b9 100644 --- a/deps/npm/node_modules/libnpmaccess/package.json +++ b/deps/npm/node_modules/libnpmaccess/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -41,7 +41,7 @@ ], "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json index cdd01c25c3ae54..32f845e483b320 100644 --- a/deps/npm/node_modules/libnpmdiff/package.json +++ b/deps/npm/node_modules/libnpmdiff/package.json @@ -1,6 +1,6 @@ { "name": "libnpmdiff", - "version": "5.0.11", + "version": "5.0.13", "description": "The registry diff", "repository": { "type": "git", @@ -42,13 +42,13 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.3", + "@npmcli/arborist": "^6.2.5", "@npmcli/disparity-colors": "^3.0.0", - "@npmcli/installed-package-contents": "^2.0.0", + "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", "diff": "^5.1.0", "minimatch": "^6.1.6", @@ -58,7 +58,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json index f13b16ed17e529..5e1d5643cd303c 100644 --- a/deps/npm/node_modules/libnpmexec/package.json +++ b/deps/npm/node_modules/libnpmexec/package.json @@ -1,6 +1,6 @@ { "name": "libnpmexec", - "version": "5.0.11", + "version": "5.0.13", "files": [ "bin/", "lib/" @@ -52,7 +52,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "bin-links": "^4.0.1", "just-extend": "^6.2.0", "just-safe-set": "^4.2.1", @@ -60,7 +60,7 @@ "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.3", + "@npmcli/arborist": "^6.2.5", "@npmcli/run-script": "^6.0.0", "chalk": "^4.1.0", "ci-info": "^3.7.1", @@ -75,7 +75,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json index 36ec66de751031..dbb9d1f9038c85 100644 --- a/deps/npm/node_modules/libnpmfund/package.json +++ b/deps/npm/node_modules/libnpmfund/package.json @@ -1,6 +1,6 @@ { "name": "libnpmfund", - "version": "4.0.11", + "version": "4.0.13", "main": "lib/index.js", "files": [ "bin/", @@ -41,18 +41,18 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.3" + "@npmcli/arborist": "^6.2.5" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmhook/package.json b/deps/npm/node_modules/libnpmhook/package.json index 493b64359cc220..cd3fb93a3401ed 100644 --- a/deps/npm/node_modules/libnpmhook/package.json +++ b/deps/npm/node_modules/libnpmhook/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -44,7 +44,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmorg/package.json b/deps/npm/node_modules/libnpmorg/package.json index 97d957492eae91..28ed6b7a3cf417 100644 --- a/deps/npm/node_modules/libnpmorg/package.json +++ b/deps/npm/node_modules/libnpmorg/package.json @@ -28,7 +28,7 @@ ], "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "minipass": "^4.0.2", "nock": "^13.3.0", "tap": "^16.3.4" @@ -49,7 +49,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json index ef256ad38df7af..23cd712a7ab3aa 100644 --- a/deps/npm/node_modules/libnpmpack/package.json +++ b/deps/npm/node_modules/libnpmpack/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpack", - "version": "5.0.11", + "version": "5.0.13", "description": "Programmatic API for the bits behind npm pack", "author": "GitHub Inc.", "main": "lib/index.js", @@ -23,7 +23,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "spawk": "^1.7.1", "tap": "^16.3.4" @@ -36,7 +36,7 @@ "bugs": "https://github.com/npm/libnpmpack/issues", "homepage": "https://npmjs.com/package/libnpmpack", "dependencies": { - "@npmcli/arborist": "^6.2.3", + "@npmcli/arborist": "^6.2.5", "@npmcli/run-script": "^6.0.0", "npm-package-arg": "^10.1.0", "pacote": "^15.0.8" @@ -46,7 +46,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmpublish/lib/provenance.js b/deps/npm/node_modules/libnpmpublish/lib/provenance.js index d11d210478b651..1eb870da5f24f7 100644 --- a/deps/npm/node_modules/libnpmpublish/lib/provenance.js +++ b/deps/npm/node_modules/libnpmpublish/lib/provenance.js @@ -4,39 +4,40 @@ const INTOTO_PAYLOAD_TYPE = 'application/vnd.in-toto+json' const INTOTO_STATEMENT_TYPE = 'https://in-toto.io/Statement/v0.1' const SLSA_PREDICATE_TYPE = 'https://slsa.dev/provenance/v0.2' -const BUILDER_ID_PREFIX = 'https://github.com/npm/cli' +const BUILDER_ID = 'https://github.com/actions/runner' const BUILD_TYPE_PREFIX = 'https://github.com/npm/cli/gha' -const BUILD_TYPE_VERSION = 'v1' +const BUILD_TYPE_VERSION = 'v2' const generateProvenance = async (subject, opts) => { const { env } = process + /* istanbul ignore next - not covering missing env var case */ + const [workflowPath] = (env.GITHUB_WORKFLOW_REF || '') + .replace(env.GITHUB_REPOSITORY + '/', '') + .split('@') const payload = { _type: INTOTO_STATEMENT_TYPE, subject, predicateType: SLSA_PREDICATE_TYPE, predicate: { - buildType: `${BUILD_TYPE_PREFIX}@${BUILD_TYPE_VERSION}`, - builder: { id: `${BUILDER_ID_PREFIX}@${opts.npmVersion}` }, + buildType: `${BUILD_TYPE_PREFIX}/${BUILD_TYPE_VERSION}`, + builder: { id: BUILDER_ID }, invocation: { configSource: { uri: `git+${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}@${env.GITHUB_REF}`, digest: { sha1: env.GITHUB_SHA, }, - entryPoint: env.GITHUB_WORKFLOW_REF, + entryPoint: workflowPath, }, parameters: {}, environment: { - GITHUB_ACTOR_ID: env.GITHUB_ACTOR_ID, GITHUB_EVENT_NAME: env.GITHUB_EVENT_NAME, GITHUB_REF: env.GITHUB_REF, - GITHUB_REF_TYPE: env.GITHUB_REF_TYPE, GITHUB_REPOSITORY: env.GITHUB_REPOSITORY, GITHUB_REPOSITORY_ID: env.GITHUB_REPOSITORY_ID, GITHUB_REPOSITORY_OWNER_ID: env.GITHUB_REPOSITORY_OWNER_ID, GITHUB_RUN_ATTEMPT: env.GITHUB_RUN_ATTEMPT, GITHUB_RUN_ID: env.GITHUB_RUN_ID, - GITHUB_RUN_NUMBER: env.GITHUB_RUN_NUMBER, GITHUB_SHA: env.GITHUB_SHA, GITHUB_WORKFLOW_REF: env.GITHUB_WORKFLOW_REF, GITHUB_WORKFLOW_SHA: env.GITHUB_WORKFLOW_SHA, @@ -53,7 +54,7 @@ const generateProvenance = async (subject, opts) => { }, materials: [ { - uri: `git+${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}`, + uri: `git+${env.GITHUB_SERVER_URL}/${env.GITHUB_REPOSITORY}@${env.GITHUB_REF}`, digest: { sha1: env.GITHUB_SHA, }, diff --git a/deps/npm/node_modules/libnpmpublish/lib/publish.js b/deps/npm/node_modules/libnpmpublish/lib/publish.js index 353688a10eac19..25dedb23633d79 100644 --- a/deps/npm/node_modules/libnpmpublish/lib/publish.js +++ b/deps/npm/node_modules/libnpmpublish/lib/publish.js @@ -1,6 +1,7 @@ const { fixer } = require('normalize-package-data') const npmFetch = require('npm-registry-fetch') const npa = require('npm-package-arg') +const log = require('proc-log') const semver = require('semver') const { URL } = require('url') const ssri = require('ssri') @@ -8,6 +9,8 @@ const ciInfo = require('ci-info') const { generateProvenance } = require('./provenance') +const TLOG_BASE_URL = 'https://rekor.sigstore.dev/api/v1/log/entries' + const publish = async (manifest, tarballData, opts) => { if (manifest.private) { throw Object.assign( @@ -141,15 +144,23 @@ const buildMetadata = async (registry, manifest, tarballData, spec, opts) => { digest: { sha512: integrity.sha512[0].hexDigest() }, } - // Ensure that we're running in GHA and an OIDC token is available, - // currently the only supported build environment - if (ciInfo.name !== 'GitHub Actions' || !process.env.ACTIONS_ID_TOKEN_REQUEST_URL) { + // Ensure that we're running in GHA, currently the only supported build environment + if (ciInfo.name !== 'GitHub Actions') { throw Object.assign( new Error('Automatic provenance generation not supported outside of GitHub Actions'), { code: 'EUSAGE' } ) } + // Ensure that the GHA OIDC token is available + if (!process.env.ACTIONS_ID_TOKEN_REQUEST_URL) { + throw Object.assign( + /* eslint-disable-next-line max-len */ + new Error('Provenance generation in GitHub Actions requires "write" access to the "id-token" permission'), + { code: 'EUSAGE' } + ) + } + const visibility = await npmFetch.json(`${registry}/-/package/${spec.escapedName}/visibility`, opts) if (!visibility.public && opts.provenance === true && opts.access !== 'public') { @@ -161,6 +172,16 @@ const buildMetadata = async (registry, manifest, tarballData, spec, opts) => { } const provenanceBundle = await generateProvenance([subject], opts) + /* eslint-disable-next-line max-len */ + log.notice('publish', 'Signed provenance statement with source and build information from GitHub Actions') + + const tlogEntry = provenanceBundle?.verificationMaterial?.tlogEntries[0] + /* istanbul ignore else */ + if (tlogEntry) { + const logUrl = `${TLOG_BASE_URL}?logIndex=${tlogEntry.logIndex}` + log.notice('publish', `Provenance statement published to transparency log: ${logUrl}`) + } + const serializedBundle = JSON.stringify(provenanceBundle) root._attachments[provenanceBundleName] = { content_type: provenanceBundle.mediaType, diff --git a/deps/npm/node_modules/libnpmpublish/package.json b/deps/npm/node_modules/libnpmpublish/package.json index 1b6a53eae61561..7c04d2adb9f206 100644 --- a/deps/npm/node_modules/libnpmpublish/package.json +++ b/deps/npm/node_modules/libnpmpublish/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpublish", - "version": "7.1.0", + "version": "7.1.2", "description": "Programmatic API for the bits behind npm publish and unpublish", "author": "GitHub Inc.", "main": "lib/index.js", @@ -25,7 +25,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "lodash.clonedeep": "^4.5.0", "nock": "^13.3.0", "tap": "^16.3.4" @@ -42,6 +42,7 @@ "normalize-package-data": "^5.0.0", "npm-package-arg": "^10.1.0", "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", "semver": "^7.3.7", "sigstore": "^1.0.0", "ssri": "^10.0.1" @@ -51,7 +52,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmsearch/package.json b/deps/npm/node_modules/libnpmsearch/package.json index 51e1d0adf9348f..8ccd77541e71c7 100644 --- a/deps/npm/node_modules/libnpmsearch/package.json +++ b/deps/npm/node_modules/libnpmsearch/package.json @@ -26,7 +26,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -45,7 +45,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmteam/package.json b/deps/npm/node_modules/libnpmteam/package.json index 4d98dc9dc52f32..333647b127e594 100644 --- a/deps/npm/node_modules/libnpmteam/package.json +++ b/deps/npm/node_modules/libnpmteam/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -39,7 +39,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmversion/package.json b/deps/npm/node_modules/libnpmversion/package.json index 8fce14cebff382..2e80f8c3c1a010 100644 --- a/deps/npm/node_modules/libnpmversion/package.json +++ b/deps/npm/node_modules/libnpmversion/package.json @@ -32,7 +32,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "require-inject": "^1.4.4", "tap": "^16.3.4" }, @@ -48,7 +48,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/lru-cache/index.d.ts b/deps/npm/node_modules/lru-cache/index.d.ts index e8af7c4de82f99..b58395e04a9d16 100644 --- a/deps/npm/node_modules/lru-cache/index.d.ts +++ b/deps/npm/node_modules/lru-cache/index.d.ts @@ -112,7 +112,7 @@ declare class LRUCache implements Iterable<[K, V]> { * `cache.set(key, undefined)`. Use {@link has} to determine whether a key is * present in the cache at all. */ - public get(key: K, options?: LRUCache.GetOptions): V | undefined + public get(key: K, options?: LRUCache.GetOptions): V | undefined /** * Like {@link get} but doesn't update recency or delete stale items. @@ -129,7 +129,7 @@ declare class LRUCache implements Iterable<[K, V]> { * Will not update item age unless {@link updateAgeOnHas} is set in the * options or constructor. */ - public has(key: K, options?: LRUCache.HasOptions): boolean + public has(key: K, options?: LRUCache.HasOptions): boolean /** * Deletes a key out of the cache. @@ -158,7 +158,7 @@ declare class LRUCache implements Iterable<[K, V]> { key: K, cache: this ) => boolean | undefined | void, - options?: LRUCache.GetOptions + options?: LRUCache.GetOptions ): V | undefined /** @@ -271,6 +271,20 @@ declare class LRUCache implements Iterable<[K, V]> { public prune(): boolean /** + * Make an asynchronous cached fetch using the {@link fetchMethod} function. + * + * If multiple fetches for the same key are issued, then they will all be + * coalesced into a single call to fetchMethod. + * + * Note that this means that handling options such as + * {@link allowStaleOnFetchAbort}, {@link signal}, and + * {@link allowStaleOnFetchRejection} will be determined by the FIRST fetch() + * call for a given key. + * + * This is a known (fixable) shortcoming which will be addresed on when + * someone complains about it, as the fix would involve added complexity and + * may not be worth the costs for this edge case. + * * since: 7.6.0 */ public fetch( @@ -521,6 +535,8 @@ declare namespace LRUCache { * Set to true to suppress the deletion of stale data when a * {@link fetchMethod} throws an error or returns a rejected promise * + * This may be overridden in the {@link fetchMethod}. + * * @default false * @since 7.10.0 */ @@ -533,11 +549,59 @@ declare namespace LRUCache { * ONLY be returned in the case that the fetch fails, not any other * times. * + * This may be overridden in the {@link fetchMethod}. + * * @default false * @since 7.16.0 */ allowStaleOnFetchRejection?: boolean + /** + * + * Set to true to ignore the `abort` event emitted by the `AbortSignal` + * object passed to {@link fetchMethod}, and still cache the + * resulting resolution value, as long as it is not `undefined`. + * + * When used on its own, this means aborted {@link fetch} calls are not + * immediately resolved or rejected when they are aborted, and instead take + * the full time to await. + * + * When used with {@link allowStaleOnFetchAbort}, aborted {@link fetch} + * calls will resolve immediately to their stale cached value or + * `undefined`, and will continue to process and eventually update the + * cache when they resolve, as long as the resulting value is not + * `undefined`, thus supporting a "return stale on timeout while + * refreshing" mechanism by passing `AbortSignal.timeout(n)` as the signal. + * + * **Note**: regardless of this setting, an `abort` event _is still emitted + * on the `AbortSignal` object_, so may result in invalid results when + * passed to other underlying APIs that use AbortSignals. + * + * This may be overridden in the {@link fetchMethod} or the call to + * {@link fetch}. + * + * @default false + * @since 7.17.0 + */ + ignoreFetchAbort?: boolean + + /** + * Set to true to return a stale value from the cache when the + * `AbortSignal` passed to the {@link fetchMethod} dispatches an `'abort'` + * event, whether user-triggered, or due to internal cache behavior. + * + * Unless {@link ignoreFetchAbort} is also set, the underlying + * {@link fetchMethod} will still be considered canceled, and its return + * value will be ignored and not cached. + * + * This may be overridden in the {@link fetchMethod} or the call to + * {@link fetch}. + * + * @default false + * @since 7.17.0 + */ + allowStaleOnFetchAbort?: boolean + /** * Set to any value in the constructor or {@link fetch} options to * pass arbitrary data to the {@link fetchMethod} in the {@link context} @@ -585,24 +649,27 @@ declare namespace LRUCache { start?: LRUMilliseconds noDisposeOnSet?: boolean noUpdateTTL?: boolean + status?: Status } /** * options which override the options set in the LRUCAche constructor * when calling {@link has}. */ - interface HasOptions { + interface HasOptions { updateAgeOnHas?: boolean + status: Status } /** * options which override the options set in the LRUCache constructor * when calling {@link get}. */ - interface GetOptions { + interface GetOptions { allowStale?: boolean updateAgeOnGet?: boolean noDeleteOnStaleGet?: boolean + status?: Status } /** @@ -618,8 +685,8 @@ declare namespace LRUCache { * * May be mutated by the {@link fetchMethod} to affect the behavior of the * resulting {@link set} operation on resolution, or in the case of - * {@link noDeleteOnFetchRejection} and {@link allowStaleOnFetchRejection}, - * the handling of failure. + * {@link noDeleteOnFetchRejection}, {@link ignoreFetchAbort}, and + * {@link allowStaleOnFetchRejection}, the handling of failure. */ interface FetcherFetchOptions { allowStale?: boolean @@ -632,6 +699,139 @@ declare namespace LRUCache { noUpdateTTL?: boolean noDeleteOnFetchRejection?: boolean allowStaleOnFetchRejection?: boolean + ignoreFetchAbort?: boolean + allowStaleOnFetchAbort?: boolean + status?: Status + } + + /** + * Status object that may be passed to {@link fetch}, {@link get}, + * {@link set}, and {@link has}. + */ + interface Status { + /** + * The status of a set() operation. + * + * - add: the item was not found in the cache, and was added + * - update: the item was in the cache, with the same value provided + * - replace: the item was in the cache, and replaced + * - miss: the item was not added to the cache for some reason + */ + set?: 'add' | 'update' | 'replace' | 'miss' + + /** + * the ttl stored for the item, or undefined if ttls are not used. + */ + ttl?: LRUMilliseconds + + /** + * the start time for the item, or undefined if ttls are not used. + */ + start?: LRUMilliseconds + + /** + * The timestamp used for TTL calculation + */ + now?: LRUMilliseconds + + /** + * the remaining ttl for the item, or undefined if ttls are not used. + */ + remainingTTL?: LRUMilliseconds + + /** + * The calculated size for the item, if sizes are used. + */ + size?: LRUSize + + /** + * A flag indicating that the item was not stored, due to exceeding the + * {@link maxEntrySize} + */ + maxEntrySizeExceeded?: true + + /** + * The old value, specified in the case of `set:'update'` or + * `set:'replace'` + */ + oldValue?: V + + /** + * The results of a {@link has} operation + * + * - hit: the item was found in the cache + * - stale: the item was found in the cache, but is stale + * - miss: the item was not found in the cache + */ + has?: 'hit' | 'stale' | 'miss' + + /** + * The status of a {@link fetch} operation. + * Note that this can change as the underlying fetch() moves through + * various states. + * + * - inflight: there is another fetch() for this key which is in process + * - get: there is no fetchMethod, so {@link get} was called. + * - miss: the item is not in cache, and will be fetched. + * - hit: the item is in the cache, and was resolved immediately. + * - stale: the item is in the cache, but stale. + * - refresh: the item is in the cache, and not stale, but + * {@link forceRefresh} was specified. + */ + fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh' + + /** + * The {@link fetchMethod} was called + */ + fetchDispatched?: true + + /** + * The cached value was updated after a successful call to fetchMethod + */ + fetchUpdated?: true + + /** + * The reason for a fetch() rejection. Either the error raised by the + * {@link fetchMethod}, or the reason for an AbortSignal. + */ + fetchError?: Error + + /** + * The fetch received an abort signal + */ + fetchAborted?: true + + /** + * The abort signal received was ignored, and the fetch was allowed to + * continue. + */ + fetchAbortIgnored?: true + + /** + * The fetchMethod promise resolved successfully + */ + fetchResolved?: true + + /** + * The fetchMethod promise was rejected + */ + fetchRejected?: true + + /** + * The status of a {@link get} operation. + * + * - fetching: The item is currently being fetched. If a previous value is + * present and allowed, that will be returned. + * - stale: The item is in the cache, and is stale. + * - hit: the item is in the cache + * - miss: the item is not in the cache + */ + get?: 'stale' | 'hit' | 'miss' + + /** + * A fetch or get operation returned a stale value. + */ + returnedStale?: true } /** @@ -645,6 +845,8 @@ declare namespace LRUCache { interface FetchOptions extends FetcherFetchOptions { forceRefresh?: boolean fetchContext?: any + signal?: AbortSignal + status?: Status } interface FetcherOptions { diff --git a/deps/npm/node_modules/lru-cache/index.js b/deps/npm/node_modules/lru-cache/index.js index f4be3476d4dbc1..48e99fe5e5a70c 100644 --- a/deps/npm/node_modules/lru-cache/index.js +++ b/deps/npm/node_modules/lru-cache/index.js @@ -18,7 +18,8 @@ const AC = hasAbortController this.signal = new AS() } abort(reason = new Error('This operation was aborted')) { - this.signal.reason = reason + this.signal.reason = this.signal.reason || reason + this.signal.aborted = true this.signal.dispatchEvent({ type: 'abort', target: this.signal, @@ -168,6 +169,8 @@ class LRUCache { noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, } = options // deprecated options, don't trigger a warning for getting them if @@ -238,6 +241,8 @@ class LRUCache { this.noUpdateTTL = !!noUpdateTTL this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort + this.ignoreFetchAbort = !!ignoreFetchAbort // NB: maxEntrySize is set to maxSize if it's set if (this.maxEntrySize !== 0) { @@ -331,6 +336,15 @@ class LRUCache { this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0 } + this.statusTTL = (status, index) => { + if (status) { + status.ttl = this.ttls[index] + status.start = this.starts[index] + status.now = cachedNow || getNow() + status.remainingTTL = status.now + status.ttl - status.start + } + } + // debounce calls to perf.now() to 1s so we're not hitting // that costly call repeatedly. let cachedNow = 0 @@ -372,6 +386,7 @@ class LRUCache { } } updateItemAge(_index) {} + statusTTL(_status, _index) {} setItemTTL(_index, _ttl, _start) {} isStale(_index) { return false @@ -411,7 +426,7 @@ class LRUCache { } return size } - this.addItemSize = (index, size) => { + this.addItemSize = (index, size, status) => { this.sizes[index] = size if (this.maxSize) { const maxSize = this.maxSize - this.sizes[index] @@ -420,6 +435,10 @@ class LRUCache { } } this.calculatedSize += this.sizes[index] + if (status) { + status.entrySize = size + status.totalCalculatedSize = this.calculatedSize + } } } removeItemSize(_index) {} @@ -469,19 +488,30 @@ class LRUCache { } isValidIndex(index) { - return this.keyMap.get(this.keyList[index]) === index + return ( + index !== undefined && + this.keyMap.get(this.keyList[index]) === index + ) } *entries() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } } *rentries() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } @@ -489,14 +519,20 @@ class LRUCache { *keys() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } } *rkeys() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } @@ -504,14 +540,20 @@ class LRUCache { *values() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } } *rvalues() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } @@ -521,9 +563,14 @@ class LRUCache { return this.entries() } - find(fn, getOptions = {}) { + find(fn, getOptions) { for (const i of this.indexes()) { - if (fn(this.valList[i], this.keyList[i], this)) { + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + if (fn(value, this.keyList[i], this)) { return this.get(this.keyList[i], getOptions) } } @@ -531,13 +578,23 @@ class LRUCache { forEach(fn, thisp = this) { for (const i of this.indexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } rforEach(fn, thisp = this) { for (const i of this.rindexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } @@ -608,12 +665,17 @@ class LRUCache { size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, + status, } = {} ) { size = this.requireSize(k, v, size, sizeCalculation) // if the item doesn't fit, don't do anything // NB: maxEntrySize set to maxSize by default if (this.maxEntrySize && size > this.maxEntrySize) { + if (status) { + status.set = 'miss' + status.maxEntrySizeExceeded = true + } // have to delete, in case a background fetch is there already. // in non-async cases, this is a no-op this.delete(k) @@ -630,7 +692,10 @@ class LRUCache { this.prev[index] = this.tail this.tail = index this.size++ - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'add' + } noUpdateTTL = false } else { // update @@ -649,7 +714,17 @@ class LRUCache { } this.removeItemSize(index) this.valList[index] = v - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'replace' + const oldValue = + oldVal && this.isBackgroundFetch(oldVal) + ? oldVal.__staleWhileFetching + : oldVal + if (oldValue !== undefined) status.oldValue = oldValue + } + } else if (status) { + status.set = 'update' } } if (ttl !== 0 && this.ttl === 0 && !this.ttls) { @@ -658,6 +733,7 @@ class LRUCache { if (!noUpdateTTL) { this.setItemTTL(index, ttl, start) } + this.statusTTL(status, index) if (this.disposeAfter) { while (this.disposed.length) { this.disposeAfter(...this.disposed.shift()) @@ -713,15 +789,22 @@ class LRUCache { return head } - has(k, { updateAgeOnHas = this.updateAgeOnHas } = {}) { + has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) { const index = this.keyMap.get(k) if (index !== undefined) { if (!this.isStale(index)) { if (updateAgeOnHas) { this.updateItemAge(index) } + if (status) status.has = 'hit' + this.statusTTL(status, index) return true + } else if (status) { + status.has = 'stale' + this.statusTTL(status, index) } + } else if (status) { + status.has = 'miss' } return false } @@ -742,51 +825,109 @@ class LRUCache { return v } const ac = new AC() + if (options.signal) { + options.signal.addEventListener('abort', () => + ac.abort(options.signal.reason) + ) + } const fetchOpts = { signal: ac.signal, options, context, } - const cb = v => { - if (!ac.signal.aborted) { - this.set(k, v, fetchOpts.options) - return v - } else { - return eb(ac.signal.reason) + const cb = (v, updateCache = false) => { + const { aborted } = ac.signal + const ignoreAbort = options.ignoreFetchAbort && v !== undefined + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true + options.status.fetchError = ac.signal.reason + if (ignoreAbort) options.status.fetchAbortIgnored = true + } else { + options.status.fetchResolved = true + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason) + } + // either we didn't abort, and are still here, or we did, and ignored + if (this.valList[index] === p) { + if (v === undefined) { + if (p.__staleWhileFetching) { + this.valList[index] = p.__staleWhileFetching + } else { + this.delete(k) + } + } else { + if (options.status) options.status.fetchUpdated = true + this.set(k, v, fetchOpts.options) + } } + return v } const eb = er => { + if (options.status) { + options.status.fetchRejected = true + options.status.fetchError = er + } + return fetchFail(er) + } + const fetchFail = er => { + const { aborted } = ac.signal + const allowStaleAborted = + aborted && options.allowStaleOnFetchAbort + const allowStale = + allowStaleAborted || options.allowStaleOnFetchRejection + const noDelete = allowStale || options.noDeleteOnFetchRejection if (this.valList[index] === p) { // if we allow stale on fetch rejections, then we need to ensure that // the stale value is not removed from the cache when the fetch fails. - const noDelete = - options.noDeleteOnFetchRejection || - options.allowStaleOnFetchRejection const del = !noDelete || p.__staleWhileFetching === undefined if (del) { this.delete(k) - } else { + } else if (!allowStaleAborted) { // still replace the *promise* with the stale value, // since we are done with the promise at this point. + // leave it untouched if we're still waiting for an + // aborted background fetch that hasn't yet returned. this.valList[index] = p.__staleWhileFetching } } - if (options.allowStaleOnFetchRejection) { + if (allowStale) { + if (options.status && p.__staleWhileFetching !== undefined) { + options.status.returnedStale = true + } return p.__staleWhileFetching } else if (p.__returned === p) { throw er } } const pcall = (res, rej) => { - ac.signal.addEventListener('abort', () => res()) - this.fetchMethod(k, v, fetchOpts).then(res, rej) + this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej) + // ignored, we go until we finish, regardless. + // defer check until we are actually aborting, + // so fetchMethod can override. + ac.signal.addEventListener('abort', () => { + if ( + !options.ignoreFetchAbort || + options.allowStaleOnFetchAbort + ) { + res() + // when it eventually resolves, update the cache. + if (options.allowStaleOnFetchAbort) { + res = v => cb(v, true) + } + } + }) } + if (options.status) options.status.fetchDispatched = true const p = new Promise(pcall).then(cb, eb) p.__abortController = ac p.__staleWhileFetching = v p.__returned = null if (index === undefined) { - this.set(k, p, fetchOpts.options) + // internal, don't expose status. + this.set(k, p, { ...fetchOpts.options, status: undefined }) index = this.keyMap.get(k) } else { this.valList[index] = p @@ -825,16 +966,21 @@ class LRUCache { // fetch exclusive options noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, + ignoreFetchAbort = this.ignoreFetchAbort, + allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, fetchContext = this.fetchContext, forceRefresh = false, + status, signal, } = {} ) { if (!this.fetchMethod) { + if (status) status.fetch = 'get' return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet, + status, }) } @@ -849,38 +995,53 @@ class LRUCache { noUpdateTTL, noDeleteOnFetchRejection, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, signal, } let index = this.keyMap.get(k) if (index === undefined) { + if (status) status.fetch = 'miss' const p = this.backgroundFetch(k, index, options, fetchContext) return (p.__returned = p) } else { // in cache, maybe already fetching const v = this.valList[index] if (this.isBackgroundFetch(v)) { - return allowStale && v.__staleWhileFetching !== undefined - ? v.__staleWhileFetching - : (v.__returned = v) + const stale = + allowStale && v.__staleWhileFetching !== undefined + if (status) { + status.fetch = 'inflight' + if (stale) status.returnedStale = true + } + return stale ? v.__staleWhileFetching : (v.__returned = v) } // if we force a refresh, that means do NOT serve the cached value, // unless we are already in the process of refreshing the cache. - if (!forceRefresh && !this.isStale(index)) { + const isStale = this.isStale(index) + if (!forceRefresh && !isStale) { + if (status) status.fetch = 'hit' this.moveToTail(index) if (updateAgeOnGet) { this.updateItemAge(index) } + this.statusTTL(status, index) return v } // ok, it is stale or a forced refresh, and not already fetching. // refresh the cache. const p = this.backgroundFetch(k, index, options, fetchContext) - return allowStale && p.__staleWhileFetching !== undefined - ? p.__staleWhileFetching - : (p.__returned = p) + const hasStale = p.__staleWhileFetching !== undefined + const staleVal = hasStale && allowStale + if (status) { + status.fetch = hasStale && isStale ? 'stale' : 'refresh' + if (staleVal && isStale) status.returnedStale = true + } + return staleVal ? p.__staleWhileFetching : (p.__returned = p) } } @@ -890,28 +1051,39 @@ class LRUCache { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, + status, } = {} ) { const index = this.keyMap.get(k) if (index !== undefined) { const value = this.valList[index] const fetching = this.isBackgroundFetch(value) + this.statusTTL(status, index) if (this.isStale(index)) { + if (status) status.get = 'stale' // delete only if not an in-flight background fetch if (!fetching) { if (!noDeleteOnStaleGet) { this.delete(k) } + if (status) status.returnedStale = allowStale return allowStale ? value : undefined } else { + if (status) { + status.returnedStale = + allowStale && value.__staleWhileFetching !== undefined + } return allowStale ? value.__staleWhileFetching : undefined } } else { + if (status) status.get = 'hit' // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching, - // so we just return undefined + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. if (fetching) { - return undefined + return value.__staleWhileFetching } this.moveToTail(index) if (updateAgeOnGet) { @@ -919,6 +1091,8 @@ class LRUCache { } return value } + } else if (status) { + status.get = 'miss' } } diff --git a/deps/npm/node_modules/lru-cache/index.mjs b/deps/npm/node_modules/lru-cache/index.mjs index e69e77fbb34566..4a0b4813ec5157 100644 --- a/deps/npm/node_modules/lru-cache/index.mjs +++ b/deps/npm/node_modules/lru-cache/index.mjs @@ -18,7 +18,8 @@ const AC = hasAbortController this.signal = new AS() } abort(reason = new Error('This operation was aborted')) { - this.signal.reason = reason + this.signal.reason = this.signal.reason || reason + this.signal.aborted = true this.signal.dispatchEvent({ type: 'abort', target: this.signal, @@ -168,6 +169,8 @@ class LRUCache { noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, } = options // deprecated options, don't trigger a warning for getting them if @@ -238,6 +241,8 @@ class LRUCache { this.noUpdateTTL = !!noUpdateTTL this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection + this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort + this.ignoreFetchAbort = !!ignoreFetchAbort // NB: maxEntrySize is set to maxSize if it's set if (this.maxEntrySize !== 0) { @@ -331,6 +336,15 @@ class LRUCache { this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0 } + this.statusTTL = (status, index) => { + if (status) { + status.ttl = this.ttls[index] + status.start = this.starts[index] + status.now = cachedNow || getNow() + status.remainingTTL = status.now + status.ttl - status.start + } + } + // debounce calls to perf.now() to 1s so we're not hitting // that costly call repeatedly. let cachedNow = 0 @@ -372,6 +386,7 @@ class LRUCache { } } updateItemAge(_index) {} + statusTTL(_status, _index) {} setItemTTL(_index, _ttl, _start) {} isStale(_index) { return false @@ -411,7 +426,7 @@ class LRUCache { } return size } - this.addItemSize = (index, size) => { + this.addItemSize = (index, size, status) => { this.sizes[index] = size if (this.maxSize) { const maxSize = this.maxSize - this.sizes[index] @@ -420,6 +435,10 @@ class LRUCache { } } this.calculatedSize += this.sizes[index] + if (status) { + status.entrySize = size + status.totalCalculatedSize = this.calculatedSize + } } } removeItemSize(_index) {} @@ -469,19 +488,30 @@ class LRUCache { } isValidIndex(index) { - return this.keyMap.get(this.keyList[index]) === index + return ( + index !== undefined && + this.keyMap.get(this.keyList[index]) === index + ) } *entries() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } } *rentries() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield [this.keyList[i], this.valList[i]] } } @@ -489,14 +519,20 @@ class LRUCache { *keys() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } } *rkeys() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.keyList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.keyList[i] } } @@ -504,14 +540,20 @@ class LRUCache { *values() { for (const i of this.indexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } } *rvalues() { for (const i of this.rindexes()) { - if (!this.isBackgroundFetch(this.valList[i])) { + if ( + this.valList[i] !== undefined && + !this.isBackgroundFetch(this.valList[i]) + ) { yield this.valList[i] } } @@ -521,9 +563,14 @@ class LRUCache { return this.entries() } - find(fn, getOptions = {}) { + find(fn, getOptions) { for (const i of this.indexes()) { - if (fn(this.valList[i], this.keyList[i], this)) { + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + if (fn(value, this.keyList[i], this)) { return this.get(this.keyList[i], getOptions) } } @@ -531,13 +578,23 @@ class LRUCache { forEach(fn, thisp = this) { for (const i of this.indexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } rforEach(fn, thisp = this) { for (const i of this.rindexes()) { - fn.call(thisp, this.valList[i], this.keyList[i], this) + const v = this.valList[i] + const value = this.isBackgroundFetch(v) + ? v.__staleWhileFetching + : v + if (value === undefined) continue + fn.call(thisp, value, this.keyList[i], this) } } @@ -608,12 +665,17 @@ class LRUCache { size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, + status, } = {} ) { size = this.requireSize(k, v, size, sizeCalculation) // if the item doesn't fit, don't do anything // NB: maxEntrySize set to maxSize by default if (this.maxEntrySize && size > this.maxEntrySize) { + if (status) { + status.set = 'miss' + status.maxEntrySizeExceeded = true + } // have to delete, in case a background fetch is there already. // in non-async cases, this is a no-op this.delete(k) @@ -630,7 +692,10 @@ class LRUCache { this.prev[index] = this.tail this.tail = index this.size++ - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'add' + } noUpdateTTL = false } else { // update @@ -649,7 +714,17 @@ class LRUCache { } this.removeItemSize(index) this.valList[index] = v - this.addItemSize(index, size) + this.addItemSize(index, size, status) + if (status) { + status.set = 'replace' + const oldValue = + oldVal && this.isBackgroundFetch(oldVal) + ? oldVal.__staleWhileFetching + : oldVal + if (oldValue !== undefined) status.oldValue = oldValue + } + } else if (status) { + status.set = 'update' } } if (ttl !== 0 && this.ttl === 0 && !this.ttls) { @@ -658,6 +733,7 @@ class LRUCache { if (!noUpdateTTL) { this.setItemTTL(index, ttl, start) } + this.statusTTL(status, index) if (this.disposeAfter) { while (this.disposed.length) { this.disposeAfter(...this.disposed.shift()) @@ -713,15 +789,22 @@ class LRUCache { return head } - has(k, { updateAgeOnHas = this.updateAgeOnHas } = {}) { + has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) { const index = this.keyMap.get(k) if (index !== undefined) { if (!this.isStale(index)) { if (updateAgeOnHas) { this.updateItemAge(index) } + if (status) status.has = 'hit' + this.statusTTL(status, index) return true + } else if (status) { + status.has = 'stale' + this.statusTTL(status, index) } + } else if (status) { + status.has = 'miss' } return false } @@ -742,51 +825,109 @@ class LRUCache { return v } const ac = new AC() + if (options.signal) { + options.signal.addEventListener('abort', () => + ac.abort(options.signal.reason) + ) + } const fetchOpts = { signal: ac.signal, options, context, } - const cb = v => { - if (!ac.signal.aborted) { - this.set(k, v, fetchOpts.options) - return v - } else { - return eb(ac.signal.reason) + const cb = (v, updateCache = false) => { + const { aborted } = ac.signal + const ignoreAbort = options.ignoreFetchAbort && v !== undefined + if (options.status) { + if (aborted && !updateCache) { + options.status.fetchAborted = true + options.status.fetchError = ac.signal.reason + if (ignoreAbort) options.status.fetchAbortIgnored = true + } else { + options.status.fetchResolved = true + } + } + if (aborted && !ignoreAbort && !updateCache) { + return fetchFail(ac.signal.reason) + } + // either we didn't abort, and are still here, or we did, and ignored + if (this.valList[index] === p) { + if (v === undefined) { + if (p.__staleWhileFetching) { + this.valList[index] = p.__staleWhileFetching + } else { + this.delete(k) + } + } else { + if (options.status) options.status.fetchUpdated = true + this.set(k, v, fetchOpts.options) + } } + return v } const eb = er => { + if (options.status) { + options.status.fetchRejected = true + options.status.fetchError = er + } + return fetchFail(er) + } + const fetchFail = er => { + const { aborted } = ac.signal + const allowStaleAborted = + aborted && options.allowStaleOnFetchAbort + const allowStale = + allowStaleAborted || options.allowStaleOnFetchRejection + const noDelete = allowStale || options.noDeleteOnFetchRejection if (this.valList[index] === p) { // if we allow stale on fetch rejections, then we need to ensure that // the stale value is not removed from the cache when the fetch fails. - const noDelete = - options.noDeleteOnFetchRejection || - options.allowStaleOnFetchRejection const del = !noDelete || p.__staleWhileFetching === undefined if (del) { this.delete(k) - } else { + } else if (!allowStaleAborted) { // still replace the *promise* with the stale value, // since we are done with the promise at this point. + // leave it untouched if we're still waiting for an + // aborted background fetch that hasn't yet returned. this.valList[index] = p.__staleWhileFetching } } - if (options.allowStaleOnFetchRejection) { + if (allowStale) { + if (options.status && p.__staleWhileFetching !== undefined) { + options.status.returnedStale = true + } return p.__staleWhileFetching } else if (p.__returned === p) { throw er } } const pcall = (res, rej) => { - ac.signal.addEventListener('abort', () => res()) - this.fetchMethod(k, v, fetchOpts).then(res, rej) + this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej) + // ignored, we go until we finish, regardless. + // defer check until we are actually aborting, + // so fetchMethod can override. + ac.signal.addEventListener('abort', () => { + if ( + !options.ignoreFetchAbort || + options.allowStaleOnFetchAbort + ) { + res() + // when it eventually resolves, update the cache. + if (options.allowStaleOnFetchAbort) { + res = v => cb(v, true) + } + } + }) } + if (options.status) options.status.fetchDispatched = true const p = new Promise(pcall).then(cb, eb) p.__abortController = ac p.__staleWhileFetching = v p.__returned = null if (index === undefined) { - this.set(k, p, fetchOpts.options) + // internal, don't expose status. + this.set(k, p, { ...fetchOpts.options, status: undefined }) index = this.keyMap.get(k) } else { this.valList[index] = p @@ -825,16 +966,21 @@ class LRUCache { // fetch exclusive options noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, + ignoreFetchAbort = this.ignoreFetchAbort, + allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, fetchContext = this.fetchContext, forceRefresh = false, + status, signal, } = {} ) { if (!this.fetchMethod) { + if (status) status.fetch = 'get' return this.get(k, { allowStale, updateAgeOnGet, noDeleteOnStaleGet, + status, }) } @@ -849,38 +995,53 @@ class LRUCache { noUpdateTTL, noDeleteOnFetchRejection, allowStaleOnFetchRejection, + allowStaleOnFetchAbort, + ignoreFetchAbort, + status, signal, } let index = this.keyMap.get(k) if (index === undefined) { + if (status) status.fetch = 'miss' const p = this.backgroundFetch(k, index, options, fetchContext) return (p.__returned = p) } else { // in cache, maybe already fetching const v = this.valList[index] if (this.isBackgroundFetch(v)) { - return allowStale && v.__staleWhileFetching !== undefined - ? v.__staleWhileFetching - : (v.__returned = v) + const stale = + allowStale && v.__staleWhileFetching !== undefined + if (status) { + status.fetch = 'inflight' + if (stale) status.returnedStale = true + } + return stale ? v.__staleWhileFetching : (v.__returned = v) } // if we force a refresh, that means do NOT serve the cached value, // unless we are already in the process of refreshing the cache. - if (!forceRefresh && !this.isStale(index)) { + const isStale = this.isStale(index) + if (!forceRefresh && !isStale) { + if (status) status.fetch = 'hit' this.moveToTail(index) if (updateAgeOnGet) { this.updateItemAge(index) } + this.statusTTL(status, index) return v } // ok, it is stale or a forced refresh, and not already fetching. // refresh the cache. const p = this.backgroundFetch(k, index, options, fetchContext) - return allowStale && p.__staleWhileFetching !== undefined - ? p.__staleWhileFetching - : (p.__returned = p) + const hasStale = p.__staleWhileFetching !== undefined + const staleVal = hasStale && allowStale + if (status) { + status.fetch = hasStale && isStale ? 'stale' : 'refresh' + if (staleVal && isStale) status.returnedStale = true + } + return staleVal ? p.__staleWhileFetching : (p.__returned = p) } } @@ -890,28 +1051,39 @@ class LRUCache { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, + status, } = {} ) { const index = this.keyMap.get(k) if (index !== undefined) { const value = this.valList[index] const fetching = this.isBackgroundFetch(value) + this.statusTTL(status, index) if (this.isStale(index)) { + if (status) status.get = 'stale' // delete only if not an in-flight background fetch if (!fetching) { if (!noDeleteOnStaleGet) { this.delete(k) } + if (status) status.returnedStale = allowStale return allowStale ? value : undefined } else { + if (status) { + status.returnedStale = + allowStale && value.__staleWhileFetching !== undefined + } return allowStale ? value.__staleWhileFetching : undefined } } else { + if (status) status.get = 'hit' // if we're currently fetching it, we don't actually have it yet - // it's not stale, which means this isn't a staleWhileRefetching, - // so we just return undefined + // it's not stale, which means this isn't a staleWhileRefetching. + // If it's not stale, and fetching, AND has a __staleWhileFetching + // value, then that means the user fetched with {forceRefresh:true}, + // so it's safe to return that value. if (fetching) { - return undefined + return value.__staleWhileFetching } this.moveToTail(index) if (updateAgeOnGet) { @@ -919,6 +1091,8 @@ class LRUCache { } return value } + } else if (status) { + status.get = 'miss' } } diff --git a/deps/npm/node_modules/lru-cache/package.json b/deps/npm/node_modules/lru-cache/package.json index fb90c93901b093..9684991727e7a2 100644 --- a/deps/npm/node_modules/lru-cache/package.json +++ b/deps/npm/node_modules/lru-cache/package.json @@ -1,7 +1,7 @@ { "name": "lru-cache", "description": "A cache object that deletes the least-recently-used items.", - "version": "7.16.2", + "version": "7.18.3", "author": "Isaac Z. Schlueter ", "keywords": [ "mru", @@ -13,7 +13,7 @@ "build": "npm run prepare", "pretest": "npm run prepare", "presnap": "npm run prepare", - "prepare": "node ./scripts/transpile-to-esm.mjs", + "prepare": "node ./scripts/transpile-to-esm.js", "size": "size-limit", "test": "tap", "snap": "tap", diff --git a/deps/npm/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass/index.d.ts index 93a06eb357109b..539fbca5706aed 100644 --- a/deps/npm/node_modules/minipass/index.d.ts +++ b/deps/npm/node_modules/minipass/index.d.ts @@ -26,21 +26,23 @@ declare namespace Minipass { type BufferOrString = Buffer | string - interface StringOptions { + interface SharedOptions { + async?: boolean + signal?: AbortSignal + } + + interface StringOptions extends SharedOptions { encoding: BufferEncoding objectMode?: boolean - async?: boolean } - interface BufferOptions { + interface BufferOptions extends SharedOptions { encoding?: null | 'buffer' objectMode?: boolean - async?: boolean } - interface ObjectModeOptions { + interface ObjectModeOptions extends SharedOptions { objectMode: true - async?: boolean } interface PipeOptions { @@ -70,6 +72,7 @@ declare class Minipass< readonly flowing: boolean readonly writable: boolean readonly readable: boolean + readonly aborted: boolean readonly paused: boolean readonly emittedEnd: boolean readonly destroyed: boolean diff --git a/deps/npm/node_modules/minipass/index.js b/deps/npm/node_modules/minipass/index.js index 5d45de8d39f76e..97b23068c95276 100644 --- a/deps/npm/node_modules/minipass/index.js +++ b/deps/npm/node_modules/minipass/index.js @@ -8,7 +8,8 @@ const proc = } const EE = require('events') const Stream = require('stream') -const SD = require('string_decoder').StringDecoder +const stringdecoder = require('string_decoder') +const SD = stringdecoder.StringDecoder const EOF = Symbol('EOF') const MAYBE_EMIT_END = Symbol('maybeEmitEnd') @@ -38,6 +39,9 @@ const EMITDATA = Symbol('emitData') const EMITEND = Symbol('emitEnd') const EMITEND2 = Symbol('emitEnd2') const ASYNC = Symbol('async') +const ABORT = Symbol('abort') +const ABORTED = Symbol('aborted') +const SIGNAL = Symbol('signal') const defer = fn => Promise.resolve().then(fn) @@ -93,7 +97,7 @@ class PipeProxyErrors extends Pipe { } } -module.exports = class Minipass extends Stream { +class Minipass extends Stream { constructor(options) { super() this[FLOWING] = false @@ -122,6 +126,14 @@ module.exports = class Minipass extends Stream { if (options && options.debugExposePipes === true) { Object.defineProperty(this, 'pipes', { get: () => this[PIPES] }) } + this[SIGNAL] = options && options.signal + this[ABORTED] = false + if (this[SIGNAL]) { + this[SIGNAL].addEventListener('abort', () => this[ABORT]()) + if (this[SIGNAL].aborted) { + this[ABORT]() + } + } } get bufferLength() { @@ -168,7 +180,20 @@ module.exports = class Minipass extends Stream { this[ASYNC] = this[ASYNC] || !!a } + // drop everything and get out of the flow completely + [ABORT]() { + this[ABORTED] = true + this.emit('abort', this[SIGNAL].reason) + this.destroy(this[SIGNAL].reason) + } + + get aborted() { + return this[ABORTED] + } + set aborted(_) {} + write(chunk, encoding, cb) { + if (this[ABORTED]) return false if (this[EOF]) throw new Error('write after end') if (this[DESTROYED]) { @@ -342,21 +367,20 @@ module.exports = class Minipass extends Stream { } [BUFFERSHIFT]() { - if (this[BUFFER].length) { - if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 - else this[BUFFERLENGTH] -= this[BUFFER][0].length - } + if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 + else this[BUFFERLENGTH] -= this[BUFFER][0].length return this[BUFFER].shift() } [FLUSH](noDrain) { - do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]())) + do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length) if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain') } [FLUSHCHUNK](chunk) { - return chunk ? (this.emit('data', chunk), this.flowing) : false + this.emit('data', chunk) + return this.flowing } pipe(dest, opts) { @@ -437,7 +461,7 @@ module.exports = class Minipass extends Stream { if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) return else if (ev === 'data') { - return !data + return !this[OBJECTMODE] && !data ? false : this[ASYNC] ? defer(() => this[EMITDATA](data)) @@ -454,7 +478,10 @@ module.exports = class Minipass extends Stream { } else if (ev === 'error') { this[EMITTED_ERROR] = data super.emit(ERROR, data) - const ret = super.emit('error', data) + const ret = + !this[SIGNAL] || this.listeners('error').length + ? super.emit('error', data) + : false this[MAYBE_EMIT_END]() return ret } else if (ev === 'resume') { @@ -659,8 +686,12 @@ module.exports = class Minipass extends Stream { (s instanceof Minipass || s instanceof Stream || (s instanceof EE && - (typeof s.pipe === 'function' || // readable - (typeof s.write === 'function' && typeof s.end === 'function')))) // writable + // readable + (typeof s.pipe === 'function' || + // writable + (typeof s.write === 'function' && typeof s.end === 'function')))) ) } } + +module.exports = Minipass diff --git a/deps/npm/node_modules/minipass/index.mjs b/deps/npm/node_modules/minipass/index.mjs new file mode 100644 index 00000000000000..a6694036642b56 --- /dev/null +++ b/deps/npm/node_modules/minipass/index.mjs @@ -0,0 +1,697 @@ +'use strict' +const proc = + typeof process === 'object' && process + ? process + : { + stdout: null, + stderr: null, + } +import EE from 'events' +import Stream from 'stream' +import stringdecoder from 'string_decoder' +const SD = stringdecoder.StringDecoder + +const EOF = Symbol('EOF') +const MAYBE_EMIT_END = Symbol('maybeEmitEnd') +const EMITTED_END = Symbol('emittedEnd') +const EMITTING_END = Symbol('emittingEnd') +const EMITTED_ERROR = Symbol('emittedError') +const CLOSED = Symbol('closed') +const READ = Symbol('read') +const FLUSH = Symbol('flush') +const FLUSHCHUNK = Symbol('flushChunk') +const ENCODING = Symbol('encoding') +const DECODER = Symbol('decoder') +const FLOWING = Symbol('flowing') +const PAUSED = Symbol('paused') +const RESUME = Symbol('resume') +const BUFFER = Symbol('buffer') +const PIPES = Symbol('pipes') +const BUFFERLENGTH = Symbol('bufferLength') +const BUFFERPUSH = Symbol('bufferPush') +const BUFFERSHIFT = Symbol('bufferShift') +const OBJECTMODE = Symbol('objectMode') +// internal event when stream is destroyed +const DESTROYED = Symbol('destroyed') +// internal event when stream has an error +const ERROR = Symbol('error') +const EMITDATA = Symbol('emitData') +const EMITEND = Symbol('emitEnd') +const EMITEND2 = Symbol('emitEnd2') +const ASYNC = Symbol('async') +const ABORT = Symbol('abort') +const ABORTED = Symbol('aborted') +const SIGNAL = Symbol('signal') + +const defer = fn => Promise.resolve().then(fn) + +// TODO remove when Node v8 support drops +const doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1' +const ASYNCITERATOR = + (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented') +const ITERATOR = + (doIter && Symbol.iterator) || Symbol('iterator not implemented') + +// events that mean 'the stream is over' +// these are treated specially, and re-emitted +// if they are listened for after emitting. +const isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish' + +const isArrayBuffer = b => + b instanceof ArrayBuffer || + (typeof b === 'object' && + b.constructor && + b.constructor.name === 'ArrayBuffer' && + b.byteLength >= 0) + +const isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b) + +class Pipe { + constructor(src, dest, opts) { + this.src = src + this.dest = dest + this.opts = opts + this.ondrain = () => src[RESUME]() + dest.on('drain', this.ondrain) + } + unpipe() { + this.dest.removeListener('drain', this.ondrain) + } + // istanbul ignore next - only here for the prototype + proxyErrors() {} + end() { + this.unpipe() + if (this.opts.end) this.dest.end() + } +} + +class PipeProxyErrors extends Pipe { + unpipe() { + this.src.removeListener('error', this.proxyErrors) + super.unpipe() + } + constructor(src, dest, opts) { + super(src, dest, opts) + this.proxyErrors = er => dest.emit('error', er) + src.on('error', this.proxyErrors) + } +} + +class Minipass extends Stream { + constructor(options) { + super() + this[FLOWING] = false + // whether we're explicitly paused + this[PAUSED] = false + this[PIPES] = [] + this[BUFFER] = [] + this[OBJECTMODE] = (options && options.objectMode) || false + if (this[OBJECTMODE]) this[ENCODING] = null + else this[ENCODING] = (options && options.encoding) || null + if (this[ENCODING] === 'buffer') this[ENCODING] = null + this[ASYNC] = (options && !!options.async) || false + this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null + this[EOF] = false + this[EMITTED_END] = false + this[EMITTING_END] = false + this[CLOSED] = false + this[EMITTED_ERROR] = null + this.writable = true + this.readable = true + this[BUFFERLENGTH] = 0 + this[DESTROYED] = false + if (options && options.debugExposeBuffer === true) { + Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] }) + } + if (options && options.debugExposePipes === true) { + Object.defineProperty(this, 'pipes', { get: () => this[PIPES] }) + } + this[SIGNAL] = options && options.signal + this[ABORTED] = false + if (this[SIGNAL]) { + this[SIGNAL].addEventListener('abort', () => this[ABORT]()) + if (this[SIGNAL].aborted) { + this[ABORT]() + } + } + } + + get bufferLength() { + return this[BUFFERLENGTH] + } + + get encoding() { + return this[ENCODING] + } + set encoding(enc) { + if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode') + + if ( + this[ENCODING] && + enc !== this[ENCODING] && + ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH]) + ) + throw new Error('cannot change encoding') + + if (this[ENCODING] !== enc) { + this[DECODER] = enc ? new SD(enc) : null + if (this[BUFFER].length) + this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk)) + } + + this[ENCODING] = enc + } + + setEncoding(enc) { + this.encoding = enc + } + + get objectMode() { + return this[OBJECTMODE] + } + set objectMode(om) { + this[OBJECTMODE] = this[OBJECTMODE] || !!om + } + + get ['async']() { + return this[ASYNC] + } + set ['async'](a) { + this[ASYNC] = this[ASYNC] || !!a + } + + // drop everything and get out of the flow completely + [ABORT]() { + this[ABORTED] = true + this.emit('abort', this[SIGNAL].reason) + this.destroy(this[SIGNAL].reason) + } + + get aborted() { + return this[ABORTED] + } + set aborted(_) {} + + write(chunk, encoding, cb) { + if (this[ABORTED]) return false + if (this[EOF]) throw new Error('write after end') + + if (this[DESTROYED]) { + this.emit( + 'error', + Object.assign( + new Error('Cannot call write after a stream was destroyed'), + { code: 'ERR_STREAM_DESTROYED' } + ) + ) + return true + } + + if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8') + + if (!encoding) encoding = 'utf8' + + const fn = this[ASYNC] ? defer : f => f() + + // convert array buffers and typed array views into buffers + // at some point in the future, we may want to do the opposite! + // leave strings and buffers as-is + // anything else switches us into object mode + if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) { + if (isArrayBufferView(chunk)) + chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength) + else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk) + else if (typeof chunk !== 'string') + // use the setter so we throw if we have encoding set + this.objectMode = true + } + + // handle object mode up front, since it's simpler + // this yields better performance, fewer checks later. + if (this[OBJECTMODE]) { + /* istanbul ignore if - maybe impossible? */ + if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true) + + if (this.flowing) this.emit('data', chunk) + else this[BUFFERPUSH](chunk) + + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + + if (cb) fn(cb) + + return this.flowing + } + + // at this point the chunk is a buffer or string + // don't buffer it up or send it to the decoder + if (!chunk.length) { + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + if (cb) fn(cb) + return this.flowing + } + + // fast-path writing strings of same encoding to a stream with + // an empty buffer, skipping the buffer/decoder dance + if ( + typeof chunk === 'string' && + // unless it is a string already ready for us to use + !(encoding === this[ENCODING] && !this[DECODER].lastNeed) + ) { + chunk = Buffer.from(chunk, encoding) + } + + if (Buffer.isBuffer(chunk) && this[ENCODING]) + chunk = this[DECODER].write(chunk) + + // Note: flushing CAN potentially switch us into not-flowing mode + if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true) + + if (this.flowing) this.emit('data', chunk) + else this[BUFFERPUSH](chunk) + + if (this[BUFFERLENGTH] !== 0) this.emit('readable') + + if (cb) fn(cb) + + return this.flowing + } + + read(n) { + if (this[DESTROYED]) return null + + if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) { + this[MAYBE_EMIT_END]() + return null + } + + if (this[OBJECTMODE]) n = null + + if (this[BUFFER].length > 1 && !this[OBJECTMODE]) { + if (this.encoding) this[BUFFER] = [this[BUFFER].join('')] + else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])] + } + + const ret = this[READ](n || null, this[BUFFER][0]) + this[MAYBE_EMIT_END]() + return ret + } + + [READ](n, chunk) { + if (n === chunk.length || n === null) this[BUFFERSHIFT]() + else { + this[BUFFER][0] = chunk.slice(n) + chunk = chunk.slice(0, n) + this[BUFFERLENGTH] -= n + } + + this.emit('data', chunk) + + if (!this[BUFFER].length && !this[EOF]) this.emit('drain') + + return chunk + } + + end(chunk, encoding, cb) { + if (typeof chunk === 'function') (cb = chunk), (chunk = null) + if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8') + if (chunk) this.write(chunk, encoding) + if (cb) this.once('end', cb) + this[EOF] = true + this.writable = false + + // if we haven't written anything, then go ahead and emit, + // even if we're not reading. + // we'll re-emit if a new 'end' listener is added anyway. + // This makes MP more suitable to write-only use cases. + if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]() + return this + } + + // don't let the internal resume be overwritten + [RESUME]() { + if (this[DESTROYED]) return + + this[PAUSED] = false + this[FLOWING] = true + this.emit('resume') + if (this[BUFFER].length) this[FLUSH]() + else if (this[EOF]) this[MAYBE_EMIT_END]() + else this.emit('drain') + } + + resume() { + return this[RESUME]() + } + + pause() { + this[FLOWING] = false + this[PAUSED] = true + } + + get destroyed() { + return this[DESTROYED] + } + + get flowing() { + return this[FLOWING] + } + + get paused() { + return this[PAUSED] + } + + [BUFFERPUSH](chunk) { + if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1 + else this[BUFFERLENGTH] += chunk.length + this[BUFFER].push(chunk) + } + + [BUFFERSHIFT]() { + if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1 + else this[BUFFERLENGTH] -= this[BUFFER][0].length + return this[BUFFER].shift() + } + + [FLUSH](noDrain) { + do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length) + + if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain') + } + + [FLUSHCHUNK](chunk) { + this.emit('data', chunk) + return this.flowing + } + + pipe(dest, opts) { + if (this[DESTROYED]) return + + const ended = this[EMITTED_END] + opts = opts || {} + if (dest === proc.stdout || dest === proc.stderr) opts.end = false + else opts.end = opts.end !== false + opts.proxyErrors = !!opts.proxyErrors + + // piping an ended stream ends immediately + if (ended) { + if (opts.end) dest.end() + } else { + this[PIPES].push( + !opts.proxyErrors + ? new Pipe(this, dest, opts) + : new PipeProxyErrors(this, dest, opts) + ) + if (this[ASYNC]) defer(() => this[RESUME]()) + else this[RESUME]() + } + + return dest + } + + unpipe(dest) { + const p = this[PIPES].find(p => p.dest === dest) + if (p) { + this[PIPES].splice(this[PIPES].indexOf(p), 1) + p.unpipe() + } + } + + addListener(ev, fn) { + return this.on(ev, fn) + } + + on(ev, fn) { + const ret = super.on(ev, fn) + if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]() + else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) + super.emit('readable') + else if (isEndish(ev) && this[EMITTED_END]) { + super.emit(ev) + this.removeAllListeners(ev) + } else if (ev === 'error' && this[EMITTED_ERROR]) { + if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR])) + else fn.call(this, this[EMITTED_ERROR]) + } + return ret + } + + get emittedEnd() { + return this[EMITTED_END] + } + + [MAYBE_EMIT_END]() { + if ( + !this[EMITTING_END] && + !this[EMITTED_END] && + !this[DESTROYED] && + this[BUFFER].length === 0 && + this[EOF] + ) { + this[EMITTING_END] = true + this.emit('end') + this.emit('prefinish') + this.emit('finish') + if (this[CLOSED]) this.emit('close') + this[EMITTING_END] = false + } + } + + emit(ev, data, ...extra) { + // error and close are only events allowed after calling destroy() + if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED]) + return + else if (ev === 'data') { + return !this[OBJECTMODE] && !data + ? false + : this[ASYNC] + ? defer(() => this[EMITDATA](data)) + : this[EMITDATA](data) + } else if (ev === 'end') { + return this[EMITEND]() + } else if (ev === 'close') { + this[CLOSED] = true + // don't emit close before 'end' and 'finish' + if (!this[EMITTED_END] && !this[DESTROYED]) return + const ret = super.emit('close') + this.removeAllListeners('close') + return ret + } else if (ev === 'error') { + this[EMITTED_ERROR] = data + super.emit(ERROR, data) + const ret = + !this[SIGNAL] || this.listeners('error').length + ? super.emit('error', data) + : false + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'resume') { + const ret = super.emit('resume') + this[MAYBE_EMIT_END]() + return ret + } else if (ev === 'finish' || ev === 'prefinish') { + const ret = super.emit(ev) + this.removeAllListeners(ev) + return ret + } + + // Some other unknown event + const ret = super.emit(ev, data, ...extra) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITDATA](data) { + for (const p of this[PIPES]) { + if (p.dest.write(data) === false) this.pause() + } + const ret = super.emit('data', data) + this[MAYBE_EMIT_END]() + return ret + } + + [EMITEND]() { + if (this[EMITTED_END]) return + + this[EMITTED_END] = true + this.readable = false + if (this[ASYNC]) defer(() => this[EMITEND2]()) + else this[EMITEND2]() + } + + [EMITEND2]() { + if (this[DECODER]) { + const data = this[DECODER].end() + if (data) { + for (const p of this[PIPES]) { + p.dest.write(data) + } + super.emit('data', data) + } + } + + for (const p of this[PIPES]) { + p.end() + } + const ret = super.emit('end') + this.removeAllListeners('end') + return ret + } + + // const all = await stream.collect() + collect() { + const buf = [] + if (!this[OBJECTMODE]) buf.dataLength = 0 + // set the promise first, in case an error is raised + // by triggering the flow here. + const p = this.promise() + this.on('data', c => { + buf.push(c) + if (!this[OBJECTMODE]) buf.dataLength += c.length + }) + return p.then(() => buf) + } + + // const data = await stream.concat() + concat() { + return this[OBJECTMODE] + ? Promise.reject(new Error('cannot concat in objectMode')) + : this.collect().then(buf => + this[OBJECTMODE] + ? Promise.reject(new Error('cannot concat in objectMode')) + : this[ENCODING] + ? buf.join('') + : Buffer.concat(buf, buf.dataLength) + ) + } + + // stream.promise().then(() => done, er => emitted error) + promise() { + return new Promise((resolve, reject) => { + this.on(DESTROYED, () => reject(new Error('stream destroyed'))) + this.on('error', er => reject(er)) + this.on('end', () => resolve()) + }) + } + + // for await (let chunk of stream) + [ASYNCITERATOR]() { + let stopped = false + const stop = () => { + this.pause() + stopped = true + return Promise.resolve({ done: true }) + } + const next = () => { + if (stopped) return stop() + const res = this.read() + if (res !== null) return Promise.resolve({ done: false, value: res }) + + if (this[EOF]) return stop() + + let resolve = null + let reject = null + const onerr = er => { + this.removeListener('data', ondata) + this.removeListener('end', onend) + stop() + reject(er) + } + const ondata = value => { + this.removeListener('error', onerr) + this.removeListener('end', onend) + this.pause() + resolve({ value: value, done: !!this[EOF] }) + } + const onend = () => { + this.removeListener('error', onerr) + this.removeListener('data', ondata) + stop() + resolve({ done: true }) + } + const ondestroy = () => onerr(new Error('stream destroyed')) + return new Promise((res, rej) => { + reject = rej + resolve = res + this.once(DESTROYED, ondestroy) + this.once('error', onerr) + this.once('end', onend) + this.once('data', ondata) + }) + } + + return { + next, + throw: stop, + return: stop, + [ASYNCITERATOR]() { + return this + }, + } + } + + // for (let chunk of stream) + [ITERATOR]() { + let stopped = false + const stop = () => { + this.pause() + this.removeListener(ERROR, stop) + this.removeListener('end', stop) + stopped = true + return { done: true } + } + + const next = () => { + if (stopped) return stop() + const value = this.read() + return value === null ? stop() : { value } + } + this.once('end', stop) + this.once(ERROR, stop) + + return { + next, + throw: stop, + return: stop, + [ITERATOR]() { + return this + }, + } + } + + destroy(er) { + if (this[DESTROYED]) { + if (er) this.emit('error', er) + else this.emit(DESTROYED) + return this + } + + this[DESTROYED] = true + + // throw away all buffered data, it's never coming out + this[BUFFER].length = 0 + this[BUFFERLENGTH] = 0 + + if (typeof this.close === 'function' && !this[CLOSED]) this.close() + + if (er) this.emit('error', er) + // if no error to emit, still reject pending promises + else this.emit(DESTROYED) + + return this + } + + static isStream(s) { + return ( + !!s && + (s instanceof Minipass || + s instanceof Stream || + (s instanceof EE && + // readable + (typeof s.pipe === 'function' || + // writable + (typeof s.write === 'function' && typeof s.end === 'function')))) + ) + } +} + +export default Minipass diff --git a/deps/npm/node_modules/minipass/package.json b/deps/npm/node_modules/minipass/package.json index 43051ad5b6c831..4a6246df54aa4f 100644 --- a/deps/npm/node_modules/minipass/package.json +++ b/deps/npm/node_modules/minipass/package.json @@ -1,12 +1,27 @@ { "name": "minipass", - "version": "4.0.3", + "version": "4.2.4", "description": "minimal implementation of a PassThrough stream", - "main": "index.js", - "types": "index.d.ts", + "main": "./index.js", + "module": "./index.mjs", + "types": "./index.d.ts", + "exports": { + ".": { + "import": { + "types": "./index.d.ts", + "default": "./index.mjs" + }, + "require": { + "types": "./index.d.ts", + "default": "./index.js" + } + }, + "./package.json": "./package.json" + }, "devDependencies": { "@types/node": "^17.0.41", "end-of-stream": "^1.4.0", + "node-abort-controller": "^3.1.1", "prettier": "^2.6.2", "tap": "^16.2.0", "through2": "^2.0.3", @@ -15,6 +30,10 @@ "typescript": "^4.7.3" }, "scripts": { + "pretest": "npm run prepare", + "presnap": "npm run prepare", + "prepare": "node ./scripts/transpile-to-esm.js", + "snap": "tap", "test": "tap", "preversion": "npm test", "postversion": "npm publish", @@ -34,7 +53,8 @@ "license": "ISC", "files": [ "index.d.ts", - "index.js" + "index.js", + "index.mjs" ], "tap": { "check-coverage": true diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js index 67525192250f6d..c51c67d4144564 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js @@ -18,66 +18,54 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // a duplex stream is just a stream that is both readable and writable. // Since JS doesn't have multiple prototypal inheritance, this class // prototypally inherits from Readable, and then parasitically from // Writable. + 'use strict'; -/**/ +/**/ var objectKeys = Object.keys || function (obj) { var keys = []; - - for (var key in obj) { - keys.push(key); - } - + for (var key in obj) keys.push(key); return keys; }; /**/ - module.exports = Duplex; - -var Readable = require('./_stream_readable'); - -var Writable = require('./_stream_writable'); - +const Readable = require('./_stream_readable'); +const Writable = require('./_stream_writable'); require('inherits')(Duplex, Readable); - { // Allow the keys array to be GC'ed. - var keys = objectKeys(Writable.prototype); - + const keys = objectKeys(Writable.prototype); for (var v = 0; v < keys.length; v++) { - var method = keys[v]; + const method = keys[v]; if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; } } - function Duplex(options) { if (!(this instanceof Duplex)) return new Duplex(options); Readable.call(this, options); Writable.call(this, options); this.allowHalfOpen = true; - if (options) { if (options.readable === false) this.readable = false; if (options.writable === false) this.writable = false; - if (options.allowHalfOpen === false) { this.allowHalfOpen = false; this.once('end', onend); } } } - Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._writableState.highWaterMark; } }); @@ -95,44 +83,43 @@ Object.defineProperty(Duplex.prototype, 'writableLength', { // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._writableState.length; } -}); // the no-half-open enforcer +}); +// the no-half-open enforcer function onend() { // If the writable side ended, then we're ok. - if (this._writableState.ended) return; // no more data can be written. - // But allow more writes to happen in this tick. + if (this._writableState.ended) return; + // no more data can be written. + // But allow more writes to happen in this tick. process.nextTick(onEndNT, this); } - function onEndNT(self) { self.end(); } - Object.defineProperty(Duplex.prototype, 'destroyed', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { if (this._readableState === undefined || this._writableState === undefined) { return false; } - return this._readableState.destroyed && this._writableState.destroyed; }, - set: function set(value) { + set(value) { // we ignore the value if the stream // has not been initialized yet if (this._readableState === undefined || this._writableState === undefined) { return; - } // backward compatibility, the user is explicitly - // managing destroyed - + } + // backward compatibility, the user is explicitly + // managing destroyed this._readableState.destroyed = value; this._writableState.destroyed = value; } diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js index 32e7414c5a8271..38a1eaac807947 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js @@ -18,22 +18,20 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. + 'use strict'; module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - +const Transform = require('./_stream_transform'); require('inherits')(PassThrough, Transform); - function PassThrough(options) { if (!(this instanceof PassThrough)) return new PassThrough(options); Transform.call(this, options); } - PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js index 192d451488f208..8e3af6c9edeced 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js @@ -18,49 +18,40 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + 'use strict'; module.exports = Readable; -/**/ +/**/ var Duplex; /**/ Readable.ReadableState = ReadableState; -/**/ - -var EE = require('events').EventEmitter; +/**/ +const EE = require('events').EventEmitter; var EElistenerCount = function EElistenerCount(emitter, type) { return emitter.listeners(type).length; }; /**/ /**/ - - var Stream = require('./internal/streams/stream'); /**/ - -var Buffer = require('buffer').Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - +const Buffer = require('buffer').Buffer; +const OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; function _uint8ArrayToBuffer(chunk) { return Buffer.from(chunk); } - function _isUint8Array(obj) { return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; } -/**/ - - -var debugUtil = require('util'); - -var debug; +/**/ +const debugUtil = require('util'); +let debug; if (debugUtil && debugUtil.debuglog) { debug = debugUtil.debuglog('stream'); } else { @@ -68,60 +59,57 @@ if (debugUtil && debugUtil.debuglog) { } /**/ - -var BufferList = require('./internal/streams/buffer_list'); - -var destroyImpl = require('./internal/streams/destroy'); - -var _require = require('./internal/streams/state'), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = require('../errors').codes, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; // Lazy loaded to improve the startup performance. - - -var StringDecoder; -var createReadableStreamAsyncIterator; -var from; - +const BufferList = require('./internal/streams/buffer_list'); +const destroyImpl = require('./internal/streams/destroy'); +const _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; +const _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT; + +// Lazy loaded to improve the startup performance. +let StringDecoder; +let createReadableStreamAsyncIterator; +let from; require('inherits')(Readable, Stream); - -var errorOrDestroy = destroyImpl.errorOrDestroy; -var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; - +const errorOrDestroy = destroyImpl.errorOrDestroy; +const kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; function prependListener(emitter, event, fn) { // Sadly this is not cacheable as some libraries bundle their own // event emitter implementation with them. - if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); // This is a hack to make sure that our error handler is attached before any + if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn); + + // This is a hack to make sure that our error handler is attached before any // userland ones. NEVER DO THIS. This is here only because this code needs // to continue to work with older versions of Node.js that do not include // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; } - function ReadableState(options, stream, isDuplex) { Duplex = Duplex || require('./_stream_duplex'); - options = options || {}; // Duplex streams are both readable and writable, but share + options = options || {}; + + // Duplex streams are both readable and writable, but share // the same options object. // However, some cases require setting options to different // values for the readable and the writable sides of the duplex stream. // These options can be provided separately as readableXXX and writableXXX. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag. Used to make read(n) ignore n and to + // object stream flag. Used to make read(n) ignore n and to // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; // the point at which it stops calling _read() to fill the buffer + if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode; + + // the point at which it stops calling _read() to fill the buffer // Note: 0 is a valid value, means "don't call _read preemptively ever" + this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); - this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex); // A linked list is used to store data chunks instead of an array because the + // A linked list is used to store data chunks instead of an array because the // linked list can remove elements from the beginning faster than // array.shift() - this.buffer = new BufferList(); this.length = 0; this.pipes = null; @@ -129,141 +117,136 @@ function ReadableState(options, stream, isDuplex) { this.flowing = null; this.ended = false; this.endEmitted = false; - this.reading = false; // a flag to be able to tell if the event 'readable'/'data' is emitted + this.reading = false; + + // a flag to be able to tell if the event 'readable'/'data' is emitted // immediately, or on a later tick. We set this to true at first, because // any actions that shouldn't happen until "later" should generally also // not happen before the first read call. + this.sync = true; - this.sync = true; // whenever we return null, then we set a flag to say + // whenever we return null, then we set a flag to say // that we're awaiting a 'readable' event emission. - this.needReadable = false; this.emittedReadable = false; this.readableListening = false; this.resumeScheduled = false; - this.paused = true; // Should close be emitted on destroy. Defaults to true. + this.paused = true; + + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'end' (and potentially 'finish') + // Should .destroy() be called after 'end' (and potentially 'finish') + this.autoDestroy = !!options.autoDestroy; - this.autoDestroy = !!options.autoDestroy; // has it been destroyed + // has it been destroyed + this.destroyed = false; - this.destroyed = false; // Crypto is kind of old and crusty. Historically, its default string + // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - this.defaultEncoding = options.defaultEncoding || 'utf8'; // the number of writers that are awaiting a drain event in .pipe()s - - this.awaitDrain = 0; // if true, a maybeReadMore has been scheduled + // the number of writers that are awaiting a drain event in .pipe()s + this.awaitDrain = 0; + // if true, a maybeReadMore has been scheduled this.readingMore = false; this.decoder = null; this.encoding = null; - if (options.encoding) { if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; this.decoder = new StringDecoder(options.encoding); this.encoding = options.encoding; } } - function Readable(options) { Duplex = Duplex || require('./_stream_duplex'); - if (!(this instanceof Readable)) return new Readable(options); // Checking for a Stream.Duplex instance is faster here instead of inside - // the ReadableState constructor, at least with V8 6.5 + if (!(this instanceof Readable)) return new Readable(options); - var isDuplex = this instanceof Duplex; - this._readableState = new ReadableState(options, this, isDuplex); // legacy + // Checking for a Stream.Duplex instance is faster here instead of inside + // the ReadableState constructor, at least with V8 6.5 + const isDuplex = this instanceof Duplex; + this._readableState = new ReadableState(options, this, isDuplex); + // legacy this.readable = true; - if (options) { if (typeof options.read === 'function') this._read = options.read; if (typeof options.destroy === 'function') this._destroy = options.destroy; } - Stream.call(this); } - Object.defineProperty(Readable.prototype, 'destroyed', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { if (this._readableState === undefined) { return false; } - return this._readableState.destroyed; }, - set: function set(value) { + set(value) { // we ignore the value if the stream // has not been initialized yet if (!this._readableState) { return; - } // backward compatibility, the user is explicitly - // managing destroyed - + } + // backward compatibility, the user is explicitly + // managing destroyed this._readableState.destroyed = value; } }); Readable.prototype.destroy = destroyImpl.destroy; Readable.prototype._undestroy = destroyImpl.undestroy; - Readable.prototype._destroy = function (err, cb) { cb(err); -}; // Manually shove something into the read() buffer. +}; + +// Manually shove something into the read() buffer. // This returns true if the highWaterMark has not been hit yet, // similar to how Writable.write() returns true if you should // write() some more. - - Readable.prototype.push = function (chunk, encoding) { var state = this._readableState; var skipChunkCheck; - if (!state.objectMode) { if (typeof chunk === 'string') { encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { chunk = Buffer.from(chunk, encoding); encoding = ''; } - skipChunkCheck = true; } } else { skipChunkCheck = true; } - return readableAddChunk(this, chunk, encoding, false, skipChunkCheck); -}; // Unshift should *always* be something directly out of read() - +}; +// Unshift should *always* be something directly out of read() Readable.prototype.unshift = function (chunk) { return readableAddChunk(this, chunk, null, true, false); }; - function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { debug('readableAddChunk', chunk); var state = stream._readableState; - if (chunk === null) { state.reading = false; onEofChunk(stream, state); } else { var er; if (!skipChunkCheck) er = chunkInvalid(state, chunk); - if (er) { errorOrDestroy(stream, er); } else if (state.objectMode || chunk && chunk.length > 0) { if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) { chunk = _uint8ArrayToBuffer(chunk); } - if (addToFront) { if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true); } else if (state.ended) { @@ -272,7 +255,6 @@ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { return false; } else { state.reading = false; - if (state.decoder && !encoding) { chunk = state.decoder.write(chunk); if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state); @@ -284,14 +266,13 @@ function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) { state.reading = false; maybeReadMore(stream, state); } - } // We can push more data if we are below the highWaterMark. + } + + // We can push more data if we are below the highWaterMark. // Also, if we have no data yet, we can stand some more bytes. // This is to work around cases where hwm=0, such as the repl. - - return !state.ended && (state.length < state.highWaterMark || state.length === 0); } - function addChunk(stream, state, chunk, addToFront) { if (state.flowing && state.length === 0 && !state.sync) { state.awaitDrain = 0; @@ -302,50 +283,42 @@ function addChunk(stream, state, chunk, addToFront) { if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); if (state.needReadable) emitReadable(stream); } - maybeReadMore(stream, state); } - function chunkInvalid(state, chunk) { var er; - if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk); } - return er; } - Readable.prototype.isPaused = function () { return this._readableState.flowing === false; -}; // backwards compatibility. - +}; +// backwards compatibility. Readable.prototype.setEncoding = function (enc) { if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - var decoder = new StringDecoder(enc); - this._readableState.decoder = decoder; // If setEncoding(null), decoder.encoding equals utf8 - - this._readableState.encoding = this._readableState.decoder.encoding; // Iterate over current buffer to convert already stored Buffers: - - var p = this._readableState.buffer.head; - var content = ''; - + const decoder = new StringDecoder(enc); + this._readableState.decoder = decoder; + // If setEncoding(null), decoder.encoding equals utf8 + this._readableState.encoding = this._readableState.decoder.encoding; + + // Iterate over current buffer to convert already stored Buffers: + let p = this._readableState.buffer.head; + let content = ''; while (p !== null) { content += decoder.write(p.data); p = p.next; } - this._readableState.buffer.clear(); - if (content !== '') this._readableState.buffer.push(content); this._readableState.length = content.length; return this; -}; // Don't raise the hwm > 1GB - - -var MAX_HWM = 0x40000000; +}; +// Don't raise the hwm > 1GB +const MAX_HWM = 0x40000000; function computeNewHighWaterMark(n) { if (n >= MAX_HWM) { // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE. @@ -361,55 +334,54 @@ function computeNewHighWaterMark(n) { n |= n >>> 16; n++; } - return n; -} // This function is designed to be inlinable, so please take care when making -// changes to the function body. - +} +// This function is designed to be inlinable, so please take care when making +// changes to the function body. function howMuchToRead(n, state) { if (n <= 0 || state.length === 0 && state.ended) return 0; if (state.objectMode) return 1; - if (n !== n) { // Only flow one buffer at a time if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } // If we're asking for more than the current hwm, then raise the hwm. - - + } + // If we're asking for more than the current hwm, then raise the hwm. if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; // Don't have enough - + if (n <= state.length) return n; + // Don't have enough if (!state.ended) { state.needReadable = true; return 0; } - return state.length; -} // you can override either this method, or the async _read(n) below. - +} +// you can override either this method, or the async _read(n) below. Readable.prototype.read = function (n) { debug('read', n); n = parseInt(n, 10); var state = this._readableState; var nOrig = n; - if (n !== 0) state.emittedReadable = false; // if we're doing read(0) to trigger a readable event, but we + if (n !== 0) state.emittedReadable = false; + + // if we're doing read(0) to trigger a readable event, but we // already have a bunch of data in the buffer, then just trigger // the 'readable' event and move on. - if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) { debug('read: emitReadable', state.length, state.ended); if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); return null; } + n = howMuchToRead(n, state); - n = howMuchToRead(n, state); // if we've ended, and we're now clear, then finish it up. - + // if we've ended, and we're now clear, then finish it up. if (n === 0 && state.ended) { if (state.length === 0) endReadable(this); return null; - } // All the actual chunk generation logic needs to be + } + + // All the actual chunk generation logic needs to be // *below* the call to _read. The reason is that in certain // synthetic stream cases, such as passthrough streams, _read // may be a completely synchronous operation which may change @@ -430,40 +402,37 @@ Readable.prototype.read = function (n) { // 'readable' etc. // // 3. Actually pull the requested chunks out of the buffer and return. - // if we need a readable event, then we need to do some reading. - + // if we need a readable event, then we need to do some reading. var doRead = state.needReadable; - debug('need readable', doRead); // if we currently have less than the highWaterMark, then also read some + debug('need readable', doRead); + // if we currently have less than the highWaterMark, then also read some if (state.length === 0 || state.length - n < state.highWaterMark) { doRead = true; debug('length less than watermark', doRead); - } // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - + } + // however, if we've ended, then there's no point, and if we're already + // reading, then it's unnecessary. if (state.ended || state.reading) { doRead = false; debug('reading or ended', doRead); } else if (doRead) { debug('do read'); state.reading = true; - state.sync = true; // if the length is currently zero, then we *need* a readable event. - - if (state.length === 0) state.needReadable = true; // call internal read method - + state.sync = true; + // if the length is currently zero, then we *need* a readable event. + if (state.length === 0) state.needReadable = true; + // call internal read method this._read(state.highWaterMark); - - state.sync = false; // If _read pushed data synchronously, then `reading` will be false, + state.sync = false; + // If _read pushed data synchronously, then `reading` will be false, // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); } - var ret; if (n > 0) ret = fromList(n, state);else ret = null; - if (ret === null) { state.needReadable = state.length <= state.highWaterMark; n = 0; @@ -471,34 +440,28 @@ Readable.prototype.read = function (n) { state.length -= n; state.awaitDrain = 0; } - if (state.length === 0) { // If we have nothing in the buffer, then we want to know // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; // If we tried to read() past the EOF, then emit end on the next tick. + if (!state.ended) state.needReadable = true; + // If we tried to read() past the EOF, then emit end on the next tick. if (nOrig !== n && state.ended) endReadable(this); } - if (ret !== null) this.emit('data', ret); return ret; }; - function onEofChunk(stream, state) { debug('onEofChunk'); if (state.ended) return; - if (state.decoder) { var chunk = state.decoder.end(); - if (chunk && chunk.length) { state.buffer.push(chunk); state.length += state.objectMode ? 1 : chunk.length; } } - state.ended = true; - if (state.sync) { // if we are sync, wait until next tick to emit the data. // Otherwise we risk emitting data in the flow() @@ -507,61 +470,56 @@ function onEofChunk(stream, state) { } else { // emit 'readable' now to make sure it gets picked up. state.needReadable = false; - if (!state.emittedReadable) { state.emittedReadable = true; emitReadable_(stream); } } -} // Don't emit readable right away in sync mode, because this can trigger +} + +// Don't emit readable right away in sync mode, because this can trigger // another read() call => stack overflow. This way, it might trigger // a nextTick recursion warning, but that's not so bad. - - function emitReadable(stream) { var state = stream._readableState; debug('emitReadable', state.needReadable, state.emittedReadable); state.needReadable = false; - if (!state.emittedReadable) { debug('emitReadable', state.flowing); state.emittedReadable = true; process.nextTick(emitReadable_, stream); } } - function emitReadable_(stream) { var state = stream._readableState; debug('emitReadable_', state.destroyed, state.length, state.ended); - if (!state.destroyed && (state.length || state.ended)) { stream.emit('readable'); state.emittedReadable = false; - } // The stream needs another readable event if + } + + // The stream needs another readable event if // 1. It is not flowing, as the flow mechanism will take // care of it. // 2. It is not ended. // 3. It is below the highWaterMark, so we can schedule // another readable later. - - state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark; flow(stream); -} // at this point, the user has presumably seen the 'readable' event, +} + +// at this point, the user has presumably seen the 'readable' event, // and called read() to consume some data. that may have triggered // in turn another _read(n) call, in which case reading = true if // it's in progress. // However, if we're not ended, or reading, and the length < hwm, // then go ahead and try to read some more preemptively. - - function maybeReadMore(stream, state) { if (!state.readingMore) { state.readingMore = true; process.nextTick(maybeReadMore_, stream, state); } } - function maybeReadMore_(stream, state) { // Attempt to read more data if we should. // @@ -587,52 +545,45 @@ function maybeReadMore_(stream, state) { // read()s. The execution ends in this method again after the _read() ends // up calling push() with more data. while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) { - var len = state.length; + const len = state.length; debug('maybeReadMore read 0'); stream.read(0); - if (len === state.length) // didn't get any data, stop spinning. + if (len === state.length) + // didn't get any data, stop spinning. break; } - state.readingMore = false; -} // abstract method. to be overridden in specific implementation classes. +} + +// abstract method. to be overridden in specific implementation classes. // call cb(er, data) where data is <= n in length. // for virtual (non-string, non-buffer) streams, "length" is somewhat // arbitrary, and perhaps not very meaningful. - - Readable.prototype._read = function (n) { errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()')); }; - Readable.prototype.pipe = function (dest, pipeOpts) { var src = this; var state = this._readableState; - switch (state.pipesCount) { case 0: state.pipes = dest; break; - case 1: state.pipes = [state.pipes, dest]; break; - default: state.pipes.push(dest); break; } - state.pipesCount += 1; debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; var endFn = doEnd ? onend : unpipe; if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn); dest.on('unpipe', onunpipe); - function onunpipe(readable, unpipeInfo) { debug('onunpipe'); - if (readable === src) { if (unpipeInfo && unpipeInfo.hasUnpiped === false) { unpipeInfo.hasUnpiped = true; @@ -640,23 +591,21 @@ Readable.prototype.pipe = function (dest, pipeOpts) { } } } - function onend() { debug('onend'); dest.end(); - } // when the dest drains, it reduces the awaitDrain counter + } + + // when the dest drains, it reduces the awaitDrain counter // on the source. This would be more elegant with a .once() // handler in flow(), but adding and removing repeatedly is // too slow. - - var ondrain = pipeOnDrain(src); dest.on('drain', ondrain); var cleanedUp = false; - function cleanup() { - debug('cleanup'); // cleanup event handlers once the pipe is broken - + debug('cleanup'); + // cleanup event handlers once the pipe is broken dest.removeListener('close', onclose); dest.removeListener('finish', onfinish); dest.removeListener('drain', ondrain); @@ -665,22 +614,20 @@ Readable.prototype.pipe = function (dest, pipeOpts) { src.removeListener('end', onend); src.removeListener('end', unpipe); src.removeListener('data', ondata); - cleanedUp = true; // if the reader is waiting for a drain event from this + cleanedUp = true; + + // if the reader is waiting for a drain event from this // specific writer, then it would cause it to never start // flowing again. // So, if this is awaiting a drain, then we just call it now. // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); } - src.on('data', ondata); - function ondata(chunk) { debug('ondata'); var ret = dest.write(chunk); debug('dest.write', ret); - if (ret === false) { // If the user unpiped during `dest.write()`, it is possible // to get stuck in a permanently paused state if that write @@ -690,87 +637,84 @@ Readable.prototype.pipe = function (dest, pipeOpts) { debug('false write response, pause', state.awaitDrain); state.awaitDrain++; } - src.pause(); } - } // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - + } + // if the dest has an error, then stop piping into it. + // however, don't suppress the throwing behavior for this. function onerror(er) { debug('onerror', er); unpipe(); dest.removeListener('error', onerror); if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er); - } // Make sure our error handler is attached before userland ones. - + } - prependListener(dest, 'error', onerror); // Both close and finish should trigger unpipe, but only once. + // Make sure our error handler is attached before userland ones. + prependListener(dest, 'error', onerror); + // Both close and finish should trigger unpipe, but only once. function onclose() { dest.removeListener('finish', onfinish); unpipe(); } - dest.once('close', onclose); - function onfinish() { debug('onfinish'); dest.removeListener('close', onclose); unpipe(); } - dest.once('finish', onfinish); - function unpipe() { debug('unpipe'); src.unpipe(dest); - } // tell the dest that it's being piped to - + } - dest.emit('pipe', src); // start the flow if it hasn't been started already. + // tell the dest that it's being piped to + dest.emit('pipe', src); + // start the flow if it hasn't been started already. if (!state.flowing) { debug('pipe resume'); src.resume(); } - return dest; }; - function pipeOnDrain(src) { return function pipeOnDrainFunctionResult() { var state = src._readableState; debug('pipeOnDrain', state.awaitDrain); if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { state.flowing = true; flow(src); } }; } - Readable.prototype.unpipe = function (dest) { var state = this._readableState; var unpipeInfo = { hasUnpiped: false - }; // if we're not piping anywhere, then do nothing. + }; - if (state.pipesCount === 0) return this; // just one destination. most common case. + // if we're not piping anywhere, then do nothing. + if (state.pipesCount === 0) return this; + // just one destination. most common case. if (state.pipesCount === 1) { // passed in one, but it's not the right one. if (dest && dest !== state.pipes) return this; - if (!dest) dest = state.pipes; // got a match. + if (!dest) dest = state.pipes; + // got a match. state.pipes = null; state.pipesCount = 0; state.flowing = false; if (dest) dest.emit('unpipe', this, unpipeInfo); return this; - } // slow case. multiple pipe destinations. + } + // slow case. multiple pipe destinations. if (!dest) { // remove all. @@ -779,17 +723,13 @@ Readable.prototype.unpipe = function (dest) { state.pipes = null; state.pipesCount = 0; state.flowing = false; - - for (var i = 0; i < len; i++) { - dests[i].emit('unpipe', this, { - hasUnpiped: false - }); - } - + for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, { + hasUnpiped: false + }); return this; - } // try to find the right one. - + } + // try to find the right one. var index = indexOf(state.pipes, dest); if (index === -1) return this; state.pipes.splice(index, 1); @@ -797,19 +737,19 @@ Readable.prototype.unpipe = function (dest) { if (state.pipesCount === 1) state.pipes = state.pipes[0]; dest.emit('unpipe', this, unpipeInfo); return this; -}; // set up data events if they are asked for -// Ensure readable listeners eventually get something - +}; +// set up data events if they are asked for +// Ensure readable listeners eventually get something Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - var state = this._readableState; - + const res = Stream.prototype.on.call(this, ev, fn); + const state = this._readableState; if (ev === 'data') { // update readableListening so that resume() may be a no-op // a few lines down. This is needed to support once('readable'). - state.readableListening = this.listenerCount('readable') > 0; // Try start flowing on next tick if stream isn't explicitly paused + state.readableListening = this.listenerCount('readable') > 0; + // Try start flowing on next tick if stream isn't explicitly paused if (state.flowing !== false) this.resume(); } else if (ev === 'readable') { if (!state.endEmitted && !state.readableListening) { @@ -817,7 +757,6 @@ Readable.prototype.on = function (ev, fn) { state.flowing = false; state.emittedReadable = false; debug('on readable', state.length, state.reading); - if (state.length) { emitReadable(this); } else if (!state.reading) { @@ -825,15 +764,11 @@ Readable.prototype.on = function (ev, fn) { } } } - return res; }; - Readable.prototype.addListener = Readable.prototype.on; - Readable.prototype.removeListener = function (ev, fn) { - var res = Stream.prototype.removeListener.call(this, ev, fn); - + const res = Stream.prototype.removeListener.call(this, ev, fn); if (ev === 'readable') { // We need to check if there is someone still listening to // readable and reset the state. However this needs to happen @@ -843,13 +778,10 @@ Readable.prototype.removeListener = function (ev, fn) { // effect. process.nextTick(updateReadableListening, this); } - return res; }; - Readable.prototype.removeAllListeners = function (ev) { - var res = Stream.prototype.removeAllListeners.apply(this, arguments); - + const res = Stream.prototype.removeAllListeners.apply(this, arguments); if (ev === 'readable' || ev === undefined) { // We need to check if there is someone still listening to // readable and reset the state. However this needs to happen @@ -859,121 +791,102 @@ Readable.prototype.removeAllListeners = function (ev) { // effect. process.nextTick(updateReadableListening, this); } - return res; }; - function updateReadableListening(self) { - var state = self._readableState; + const state = self._readableState; state.readableListening = self.listenerCount('readable') > 0; - if (state.resumeScheduled && !state.paused) { // flowing needs to be set to true now, otherwise // the upcoming resume will not flow. - state.flowing = true; // crude way to check if we should resume + state.flowing = true; + + // crude way to check if we should resume } else if (self.listenerCount('data') > 0) { self.resume(); } } - function nReadingNextTick(self) { debug('readable nexttick read 0'); self.read(0); -} // pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. - +} +// pause() and resume() are remnants of the legacy readable stream API +// If the user uses them, then switch into old mode. Readable.prototype.resume = function () { var state = this._readableState; - if (!state.flowing) { - debug('resume'); // we flow only if there is no one listening + debug('resume'); + // we flow only if there is no one listening // for readable, but we still have to call // resume() - state.flowing = !state.readableListening; resume(this, state); } - state.paused = false; return this; }; - function resume(stream, state) { if (!state.resumeScheduled) { state.resumeScheduled = true; process.nextTick(resume_, stream, state); } } - function resume_(stream, state) { debug('resume', state.reading); - if (!state.reading) { stream.read(0); } - state.resumeScheduled = false; stream.emit('resume'); flow(stream); if (state.flowing && !state.reading) stream.read(0); } - Readable.prototype.pause = function () { debug('call pause flowing=%j', this._readableState.flowing); - if (this._readableState.flowing !== false) { debug('pause'); this._readableState.flowing = false; this.emit('pause'); } - this._readableState.paused = true; return this; }; - function flow(stream) { - var state = stream._readableState; + const state = stream._readableState; debug('flow', state.flowing); + while (state.flowing && stream.read() !== null); +} - while (state.flowing && stream.read() !== null) { - ; - } -} // wrap an old-style stream as the async data source. +// wrap an old-style stream as the async data source. // This is *not* part of the readable stream interface. // It is an ugly unfortunate mess of history. - - Readable.prototype.wrap = function (stream) { - var _this = this; - var state = this._readableState; var paused = false; - stream.on('end', function () { + stream.on('end', () => { debug('wrapped end'); - if (state.decoder && !state.ended) { var chunk = state.decoder.end(); - if (chunk && chunk.length) _this.push(chunk); + if (chunk && chunk.length) this.push(chunk); } - - _this.push(null); + this.push(null); }); - stream.on('data', function (chunk) { + stream.on('data', chunk => { debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); // don't skip over falsy values in objectMode + if (state.decoder) chunk = state.decoder.write(chunk); + // don't skip over falsy values in objectMode if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = _this.push(chunk); - + var ret = this.push(chunk); if (!ret) { paused = true; stream.pause(); } - }); // proxy all the other methods. - // important when wrapping filters and duplexes. + }); + // proxy all the other methods. + // important when wrapping filters and duplexes. for (var i in stream) { if (this[i] === undefined && typeof stream[i] === 'function') { this[i] = function methodWrap(method) { @@ -982,37 +895,32 @@ Readable.prototype.wrap = function (stream) { }; }(i); } - } // proxy certain important events. - + } + // proxy certain important events. for (var n = 0; n < kProxyEvents.length; n++) { stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n])); - } // when we try to consume some more bytes, simply unpause the - // underlying stream. - + } - this._read = function (n) { + // when we try to consume some more bytes, simply unpause the + // underlying stream. + this._read = n => { debug('wrapped _read', n); - if (paused) { paused = false; stream.resume(); } }; - return this; }; - if (typeof Symbol === 'function') { Readable.prototype[Symbol.asyncIterator] = function () { if (createReadableStreamAsyncIterator === undefined) { createReadableStreamAsyncIterator = require('./internal/streams/async_iterator'); } - return createReadableStreamAsyncIterator(this); }; } - Object.defineProperty(Readable.prototype, 'readableHighWaterMark', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in @@ -1044,22 +952,24 @@ Object.defineProperty(Readable.prototype, 'readableFlowing', { this._readableState.flowing = state; } } -}); // exposed for testing purposes only. +}); +// exposed for testing purposes only. Readable._fromList = fromList; Object.defineProperty(Readable.prototype, 'readableLength', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._readableState.length; } -}); // Pluck off n bytes from an array of buffers. +}); + +// Pluck off n bytes from an array of buffers. // Length is the combined lengths of all the buffers in the list. // This function is designed to be inlinable, so please take care when making // changes to the function body. - function fromList(n, state) { // nothing buffered if (state.length === 0) return null; @@ -1074,51 +984,43 @@ function fromList(n, state) { } return ret; } - function endReadable(stream) { var state = stream._readableState; debug('endReadable', state.endEmitted); - if (!state.endEmitted) { state.ended = true; process.nextTick(endReadableNT, state, stream); } } - function endReadableNT(state, stream) { - debug('endReadableNT', state.endEmitted, state.length); // Check that we didn't get one last unshift. + debug('endReadableNT', state.endEmitted, state.length); + // Check that we didn't get one last unshift. if (!state.endEmitted && state.length === 0) { state.endEmitted = true; stream.readable = false; stream.emit('end'); - if (state.autoDestroy) { // In case of duplex streams we need a way to detect // if the writable side is ready for autoDestroy as well - var wState = stream._writableState; - + const wState = stream._writableState; if (!wState || wState.autoDestroy && wState.finished) { stream.destroy(); } } } } - if (typeof Symbol === 'function') { Readable.from = function (iterable, opts) { if (from === undefined) { from = require('./internal/streams/from'); } - return from(Readable, iterable, opts); }; } - function indexOf(xs, x) { for (var i = 0, l = xs.length; i < l; i++) { if (xs[i] === x) return i; } - return -1; } \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js index 41a738c4e93599..a2fcca2193cf10 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js @@ -18,6 +18,7 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -59,42 +60,36 @@ // However, even in such a pathological case, only a single written chunk // would be consumed, and then the rest would wait (un-transformed) until // the results of the previous transformed chunk were consumed. + 'use strict'; module.exports = Transform; - -var _require$codes = require('../errors').codes, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, - ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; - -var Duplex = require('./_stream_duplex'); - +const _require$codes = require('../errors').codes, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING, + ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0; +const Duplex = require('./_stream_duplex'); require('inherits')(Transform, Duplex); - function afterTransform(er, data) { var ts = this._transformState; ts.transforming = false; var cb = ts.writecb; - if (cb === null) { return this.emit('error', new ERR_MULTIPLE_CALLBACK()); } - ts.writechunk = null; ts.writecb = null; - if (data != null) // single equals check for both `null` and `undefined` + if (data != null) + // single equals check for both `null` and `undefined` this.push(data); cb(er); var rs = this._readableState; rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { this._read(rs.highWaterMark); } } - function Transform(options) { if (!(this instanceof Transform)) return new Transform(options); Duplex.call(this, options); @@ -105,39 +100,38 @@ function Transform(options) { writecb: null, writechunk: null, writeencoding: null - }; // start out asking for a readable event once data is transformed. + }; + + // start out asking for a readable event once data is transformed. + this._readableState.needReadable = true; - this._readableState.needReadable = true; // we have implemented the _read method, and done the other things + // we have implemented the _read method, and done the other things // that Readable wants before the first _read call, so unset the // sync guard flag. - this._readableState.sync = false; - if (options) { if (typeof options.transform === 'function') this._transform = options.transform; if (typeof options.flush === 'function') this._flush = options.flush; - } // When the writable side finishes, then flush out anything remaining. - + } + // When the writable side finishes, then flush out anything remaining. this.on('prefinish', prefinish); } - function prefinish() { - var _this = this; - if (typeof this._flush === 'function' && !this._readableState.destroyed) { - this._flush(function (er, data) { - done(_this, er, data); + this._flush((er, data) => { + done(this, er, data); }); } else { done(this, null, null); } } - Transform.prototype.push = function (chunk, encoding) { this._transformState.needTransform = false; return Duplex.prototype.push.call(this, chunk, encoding); -}; // This is the part where you do stuff! +}; + +// This is the part where you do stuff! // override this function in implementation classes. // 'chunk' is an input chunk. // @@ -147,33 +141,27 @@ Transform.prototype.push = function (chunk, encoding) { // Call `cb(err)` when you are done with this chunk. If you pass // an error, then that'll put the hurt on the whole operation. If you // never call cb(), then you'll never get another chunk. - - Transform.prototype._transform = function (chunk, encoding, cb) { cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()')); }; - Transform.prototype._write = function (chunk, encoding, cb) { var ts = this._transformState; ts.writecb = cb; ts.writechunk = chunk; ts.writeencoding = encoding; - if (!ts.transforming) { var rs = this._readableState; if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); } -}; // Doesn't matter what the args are here. +}; + +// Doesn't matter what the args are here. // _transform does all the work. // That we got here means that the readable side wants more data. - - Transform.prototype._read = function (n) { var ts = this._transformState; - if (ts.writechunk !== null && !ts.transforming) { ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); } else { // mark that we need a transform, so that any data that comes in @@ -181,20 +169,20 @@ Transform.prototype._read = function (n) { ts.needTransform = true; } }; - Transform.prototype._destroy = function (err, cb) { - Duplex.prototype._destroy.call(this, err, function (err2) { + Duplex.prototype._destroy.call(this, err, err2 => { cb(err2); }); }; - function done(stream, er, data) { if (er) return stream.emit('error', er); - if (data != null) // single equals check for both `null` and `undefined` - stream.push(data); // TODO(BridgeAR): Write a test for these two error cases + if (data != null) + // single equals check for both `null` and `undefined` + stream.push(data); + + // TODO(BridgeAR): Write a test for these two error cases // if there's nothing in the write buffer, then that means // that nothing more will ever be provided - if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0(); if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING(); return stream.push(null); diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js index a2634d7c24fd5e..feece02279db67 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js @@ -18,185 +18,188 @@ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. + // A bit simpler than readable streams. // Implement an async ._write(chunk, encoding, cb), and it'll handle all // the drain event emission and buffering. + 'use strict'; module.exports = Writable; -/* */ +/* */ function WriteReq(chunk, encoding, cb) { this.chunk = chunk; this.encoding = encoding; this.callback = cb; this.next = null; -} // It seems a linked list but it is not -// there will be only 2 of these for each stream - +} +// It seems a linked list but it is not +// there will be only 2 of these for each stream function CorkedRequest(state) { - var _this = this; - this.next = null; this.entry = null; - - this.finish = function () { - onCorkedFinish(_this, state); + this.finish = () => { + onCorkedFinish(this, state); }; } /* */ /**/ - - var Duplex; /**/ Writable.WritableState = WritableState; -/**/ -var internalUtil = { +/**/ +const internalUtil = { deprecate: require('util-deprecate') }; /**/ /**/ - var Stream = require('./internal/streams/stream'); /**/ - -var Buffer = require('buffer').Buffer; - -var OurUint8Array = global.Uint8Array || function () {}; - +const Buffer = require('buffer').Buffer; +const OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {}; function _uint8ArrayToBuffer(chunk) { return Buffer.from(chunk); } - function _isUint8Array(obj) { return Buffer.isBuffer(obj) || obj instanceof OurUint8Array; } - -var destroyImpl = require('./internal/streams/destroy'); - -var _require = require('./internal/streams/state'), - getHighWaterMark = _require.getHighWaterMark; - -var _require$codes = require('../errors').codes, - ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, - ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, - ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, - ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, - ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, - ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, - ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; - -var errorOrDestroy = destroyImpl.errorOrDestroy; - +const destroyImpl = require('./internal/streams/destroy'); +const _require = require('./internal/streams/state'), + getHighWaterMark = _require.getHighWaterMark; +const _require$codes = require('../errors').codes, + ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE, + ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED, + ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK, + ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED, + ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES, + ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END, + ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING; +const errorOrDestroy = destroyImpl.errorOrDestroy; require('inherits')(Writable, Stream); - function nop() {} - function WritableState(options, stream, isDuplex) { Duplex = Duplex || require('./_stream_duplex'); - options = options || {}; // Duplex streams are both readable and writable, but share + options = options || {}; + + // Duplex streams are both readable and writable, but share // the same options object. // However, some cases require setting options to different // values for the readable and the writable sides of the duplex stream, // e.g. options.readableObjectMode vs. options.writableObjectMode, etc. + if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; - if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex; // object stream flag to indicate whether or not this stream + // object stream flag to indicate whether or not this stream // contains buffers or objects. - this.objectMode = !!options.objectMode; - if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; // the point at which write() starts returning false + if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode; + + // the point at which write() starts returning false // Note: 0 is a valid value, means that we always return false if // the entire buffer is not flushed immediately on write() + this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); - this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex); // if _final has been called + // if _final has been called + this.finalCalled = false; - this.finalCalled = false; // drain event flag. + // drain event flag. + this.needDrain = false; + // at the start of calling end() + this.ending = false; + // when end() has been called, and returned + this.ended = false; + // when 'finish' is emitted + this.finished = false; - this.needDrain = false; // at the start of calling end() + // has it been destroyed + this.destroyed = false; - this.ending = false; // when end() has been called, and returned - - this.ended = false; // when 'finish' is emitted - - this.finished = false; // has it been destroyed - - this.destroyed = false; // should we decode strings into buffers before passing to _write? + // should we decode strings into buffers before passing to _write? // this is here so that some node-core streams can optimize string // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; // Crypto is kind of old and crusty. Historically, its default string + this.decodeStrings = !noDecode; + + // Crypto is kind of old and crusty. Historically, its default string // encoding is 'binary' so we have to make this configurable. // Everything else in the universe uses 'utf8', though. + this.defaultEncoding = options.defaultEncoding || 'utf8'; - this.defaultEncoding = options.defaultEncoding || 'utf8'; // not an actual buffer we keep track of, but a measurement + // not an actual buffer we keep track of, but a measurement // of how much we're waiting to get pushed to some underlying // socket or file. + this.length = 0; - this.length = 0; // a flag to see when we're in the middle of a write. + // a flag to see when we're in the middle of a write. + this.writing = false; - this.writing = false; // when true all writes will be buffered until .uncork() call + // when true all writes will be buffered until .uncork() call + this.corked = 0; - this.corked = 0; // a flag to be able to tell if the onwrite cb is called immediately, + // a flag to be able to tell if the onwrite cb is called immediately, // or on a later tick. We set this to true at first, because any // actions that shouldn't happen until "later" should generally also // not happen before the first write call. + this.sync = true; - this.sync = true; // a flag to know if we're processing previously buffered items, which + // a flag to know if we're processing previously buffered items, which // may call the _write() callback in the same tick, so that we don't // end up in an overlapped onwrite situation. + this.bufferProcessing = false; - this.bufferProcessing = false; // the callback that's passed to _write(chunk,cb) - + // the callback that's passed to _write(chunk,cb) this.onwrite = function (er) { onwrite(stream, er); - }; // the callback that the user supplies to write(chunk,encoding,cb) - + }; - this.writecb = null; // the amount that is being written when _write is called. + // the callback that the user supplies to write(chunk,encoding,cb) + this.writecb = null; + // the amount that is being written when _write is called. this.writelen = 0; this.bufferedRequest = null; - this.lastBufferedRequest = null; // number of pending user-supplied write callbacks + this.lastBufferedRequest = null; + + // number of pending user-supplied write callbacks // this must be 0 before 'finish' can be emitted + this.pendingcb = 0; - this.pendingcb = 0; // emit prefinish if the only thing we're waiting for is _write cbs + // emit prefinish if the only thing we're waiting for is _write cbs // This is relevant for synchronous Transform streams + this.prefinished = false; - this.prefinished = false; // True if the error was already emitted and should not be thrown again + // True if the error was already emitted and should not be thrown again + this.errorEmitted = false; - this.errorEmitted = false; // Should close be emitted on destroy. Defaults to true. + // Should close be emitted on destroy. Defaults to true. + this.emitClose = options.emitClose !== false; - this.emitClose = options.emitClose !== false; // Should .destroy() be called after 'finish' (and potentially 'end') + // Should .destroy() be called after 'finish' (and potentially 'end') + this.autoDestroy = !!options.autoDestroy; - this.autoDestroy = !!options.autoDestroy; // count buffered requests + // count buffered requests + this.bufferedRequestCount = 0; - this.bufferedRequestCount = 0; // allocate the first CorkedRequest, there is always + // allocate the first CorkedRequest, there is always // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); } - WritableState.prototype.getBuffer = function getBuffer() { var current = this.bufferedRequest; var out = []; - while (current) { out.push(current); current = current.next; } - return out; }; - (function () { try { Object.defineProperty(WritableState.prototype, 'buffer', { @@ -205,12 +208,11 @@ WritableState.prototype.getBuffer = function getBuffer() { }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003') }); } catch (_) {} -})(); // Test _writableState for inheritance to account for Duplex streams, -// whose prototype chain only points to Readable. - +})(); +// Test _writableState for inheritance to account for Duplex streams, +// whose prototype chain only points to Readable. var realHasInstance; - if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') { realHasInstance = Function.prototype[Symbol.hasInstance]; Object.defineProperty(Writable, Symbol.hasInstance, { @@ -225,81 +227,73 @@ if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.protot return object instanceof this; }; } - function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); // Writable ctor is applied to Duplexes, too. + Duplex = Duplex || require('./_stream_duplex'); + + // Writable ctor is applied to Duplexes, too. // `realHasInstance` is necessary because using plain `instanceof` // would return false, as no `_writableState` property is attached. + // Trying to use the custom `instanceof` for Writable here will also break the // Node.js LazyTransform implementation, which has a non-trivial getter for // `_writableState` that would lead to infinite recursion. + // Checking for a Stream.Duplex instance is faster here instead of inside // the WritableState constructor, at least with V8 6.5 - - var isDuplex = this instanceof Duplex; + const isDuplex = this instanceof Duplex; if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options); - this._writableState = new WritableState(options, this, isDuplex); // legacy. + this._writableState = new WritableState(options, this, isDuplex); + // legacy. this.writable = true; - if (options) { if (typeof options.write === 'function') this._write = options.write; if (typeof options.writev === 'function') this._writev = options.writev; if (typeof options.destroy === 'function') this._destroy = options.destroy; if (typeof options.final === 'function') this._final = options.final; } - Stream.call(this); -} // Otherwise people can pipe Writable streams, which is just wrong. - +} +// Otherwise people can pipe Writable streams, which is just wrong. Writable.prototype.pipe = function () { errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE()); }; - function writeAfterEnd(stream, cb) { - var er = new ERR_STREAM_WRITE_AFTER_END(); // TODO: defer error events consistently everywhere, not just the cb - + var er = new ERR_STREAM_WRITE_AFTER_END(); + // TODO: defer error events consistently everywhere, not just the cb errorOrDestroy(stream, er); process.nextTick(cb, er); -} // Checks that a user-supplied chunk is valid, especially for the particular +} + +// Checks that a user-supplied chunk is valid, especially for the particular // mode the stream is in. Currently this means that `null` is never accepted // and undefined/non-string values are only allowed in object mode. - - function validChunk(stream, state, chunk, cb) { var er; - if (chunk === null) { er = new ERR_STREAM_NULL_VALUES(); } else if (typeof chunk !== 'string' && !state.objectMode) { er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk); } - if (er) { errorOrDestroy(stream, er); process.nextTick(cb, er); return false; } - return true; } - Writable.prototype.write = function (chunk, encoding, cb) { var state = this._writableState; var ret = false; - var isBuf = !state.objectMode && _isUint8Array(chunk); - if (isBuf && !Buffer.isBuffer(chunk)) { chunk = _uint8ArrayToBuffer(chunk); } - if (typeof encoding === 'function') { cb = encoding; encoding = null; } - if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; if (typeof cb !== 'function') cb = nop; if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { @@ -308,20 +302,16 @@ Writable.prototype.write = function (chunk, encoding, cb) { } return ret; }; - Writable.prototype.cork = function () { this._writableState.corked++; }; - Writable.prototype.uncork = function () { var state = this._writableState; - if (state.corked) { state.corked--; if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); } }; - Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { // node::ParseEncoding() requires lower case. if (typeof encoding === 'string') encoding = encoding.toLowerCase(); @@ -329,7 +319,6 @@ Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { this._writableState.defaultEncoding = encoding; return this; }; - Object.defineProperty(Writable.prototype, 'writableBuffer', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in @@ -339,15 +328,12 @@ Object.defineProperty(Writable.prototype, 'writableBuffer', { return this._writableState && this._writableState.getBuffer(); } }); - function decodeChunk(state, chunk, encoding) { if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { chunk = Buffer.from(chunk, encoding); } - return chunk; } - Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in @@ -356,51 +342,45 @@ Object.defineProperty(Writable.prototype, 'writableHighWaterMark', { get: function get() { return this._writableState.highWaterMark; } -}); // if we're already writing something, then just put this +}); + +// if we're already writing something, then just put this // in the queue, and wait our turn. Otherwise, call _write // If we return false, then we need a drain event, so set that flag. - function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { if (!isBuf) { var newChunk = decodeChunk(state, chunk, encoding); - if (chunk !== newChunk) { isBuf = true; encoding = 'buffer'; chunk = newChunk; } } - var len = state.objectMode ? 1 : chunk.length; state.length += len; - var ret = state.length < state.highWaterMark; // we must ensure that previous needDrain will not be reset to false. - + var ret = state.length < state.highWaterMark; + // we must ensure that previous needDrain will not be reset to false. if (!ret) state.needDrain = true; - if (state.writing || state.corked) { var last = state.lastBufferedRequest; state.lastBufferedRequest = { - chunk: chunk, - encoding: encoding, - isBuf: isBuf, + chunk, + encoding, + isBuf, callback: cb, next: null }; - if (last) { last.next = state.lastBufferedRequest; } else { state.bufferedRequest = state.lastBufferedRequest; } - state.bufferedRequestCount += 1; } else { doWrite(stream, state, false, len, chunk, encoding, cb); } - return ret; } - function doWrite(stream, state, writev, len, chunk, encoding, cb) { state.writelen = len; state.writecb = cb; @@ -409,16 +389,14 @@ function doWrite(stream, state, writev, len, chunk, encoding, cb) { if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); state.sync = false; } - function onwriteError(stream, state, sync, er, cb) { --state.pendingcb; - if (sync) { // defer the callback if we are being called synchronously // to avoid piling up things on the stack - process.nextTick(cb, er); // this can emit finish, and it will always happen + process.nextTick(cb, er); + // this can emit finish, and it will always happen // after error - process.nextTick(finishMaybe, stream, state); stream._writableState.errorEmitted = true; errorOrDestroy(stream, er); @@ -427,20 +405,18 @@ function onwriteError(stream, state, sync, er, cb) { // it is async cb(er); stream._writableState.errorEmitted = true; - errorOrDestroy(stream, er); // this can emit finish, but finish must + errorOrDestroy(stream, er); + // this can emit finish, but finish must // always follow error - finishMaybe(stream, state); } } - function onwriteStateUpdate(state) { state.writing = false; state.writecb = null; state.length -= state.writelen; state.writelen = 0; } - function onwrite(stream, er) { var state = stream._writableState; var sync = state.sync; @@ -450,11 +426,9 @@ function onwrite(stream, er) { if (er) onwriteError(stream, state, sync, er, cb);else { // Check if we're actually ready to finish, but don't emit yet var finished = needFinish(state) || stream.destroyed; - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { clearBuffer(stream, state); } - if (sync) { process.nextTick(afterWrite, stream, state, finished, cb); } else { @@ -462,29 +436,27 @@ function onwrite(stream, er) { } } } - function afterWrite(stream, state, finished, cb) { if (!finished) onwriteDrain(stream, state); state.pendingcb--; cb(); finishMaybe(stream, state); -} // Must force callback to be called on nextTick, so that we don't +} + +// Must force callback to be called on nextTick, so that we don't // emit 'drain' before the write() consumer gets the 'false' return // value, and has a chance to attach a 'drain' listener. - - function onwriteDrain(stream, state) { if (state.length === 0 && state.needDrain) { state.needDrain = false; stream.emit('drain'); } -} // if there's something in the buffer waiting, then process it - +} +// if there's something in the buffer waiting, then process it function clearBuffer(stream, state) { state.bufferProcessing = true; var entry = state.bufferedRequest; - if (stream._writev && entry && entry.next) { // Fast case, write everything using _writev() var l = state.bufferedRequestCount; @@ -493,28 +465,25 @@ function clearBuffer(stream, state) { holder.entry = entry; var count = 0; var allBuffers = true; - while (entry) { buffer[count] = entry; if (!entry.isBuf) allBuffers = false; entry = entry.next; count += 1; } - buffer.allBuffers = allBuffers; - doWrite(stream, state, true, state.length, buffer, '', holder.finish); // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite + doWrite(stream, state, true, state.length, buffer, '', holder.finish); + // doWrite is almost always async, defer these to save a bit of time + // as the hot path ends with doWrite state.pendingcb++; state.lastBufferedRequest = null; - if (holder.next) { state.corkedRequestsFree = holder.next; holder.next = null; } else { state.corkedRequestsFree = new CorkedRequest(state); } - state.bufferedRequestCount = 0; } else { // Slow case, write chunks one-by-one @@ -525,32 +494,26 @@ function clearBuffer(stream, state) { var len = state.objectMode ? 1 : chunk.length; doWrite(stream, state, false, len, chunk, encoding, cb); entry = entry.next; - state.bufferedRequestCount--; // if we didn't call the onwrite immediately, then + state.bufferedRequestCount--; + // if we didn't call the onwrite immediately, then // it means that we need to wait until it does. // also, that means that the chunk and cb are currently // being processed, so move the buffer counter past them. - if (state.writing) { break; } } - if (entry === null) state.lastBufferedRequest = null; } - state.bufferedRequest = entry; state.bufferProcessing = false; } - Writable.prototype._write = function (chunk, encoding, cb) { cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()')); }; - Writable.prototype._writev = null; - Writable.prototype.end = function (chunk, encoding, cb) { var state = this._writableState; - if (typeof chunk === 'function') { cb = chunk; chunk = null; @@ -559,47 +522,41 @@ Writable.prototype.end = function (chunk, encoding, cb) { cb = encoding; encoding = null; } + if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); // .end() fully uncorks - + // .end() fully uncorks if (state.corked) { state.corked = 1; this.uncork(); - } // ignore unnecessary end() calls. - + } + // ignore unnecessary end() calls. if (!state.ending) endWritable(this, state, cb); return this; }; - Object.defineProperty(Writable.prototype, 'writableLength', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { return this._writableState.length; } }); - function needFinish(state) { return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; } - function callFinal(stream, state) { - stream._final(function (err) { + stream._final(err => { state.pendingcb--; - if (err) { errorOrDestroy(stream, err); } - state.prefinished = true; stream.emit('prefinish'); finishMaybe(stream, state); }); } - function prefinish(stream, state) { if (!state.prefinished && !state.finalCalled) { if (typeof stream._final === 'function' && !state.destroyed) { @@ -612,86 +569,72 @@ function prefinish(stream, state) { } } } - function finishMaybe(stream, state) { var need = needFinish(state); - if (need) { prefinish(stream, state); - if (state.pendingcb === 0) { state.finished = true; stream.emit('finish'); - if (state.autoDestroy) { // In case of duplex streams we need a way to detect // if the readable side is ready for autoDestroy as well - var rState = stream._readableState; - + const rState = stream._readableState; if (!rState || rState.autoDestroy && rState.endEmitted) { stream.destroy(); } } } } - return need; } - function endWritable(stream, state, cb) { state.ending = true; finishMaybe(stream, state); - if (cb) { if (state.finished) process.nextTick(cb);else stream.once('finish', cb); } - state.ended = true; stream.writable = false; } - function onCorkedFinish(corkReq, state, err) { var entry = corkReq.entry; corkReq.entry = null; - while (entry) { var cb = entry.callback; state.pendingcb--; cb(err); entry = entry.next; - } // reuse the free corkReq. - + } + // reuse the free corkReq. state.corkedRequestsFree.next = corkReq; } - Object.defineProperty(Writable.prototype, 'destroyed', { // making it explicit this property is not enumerable // because otherwise some prototype manipulation in // userland will fail enumerable: false, - get: function get() { + get() { if (this._writableState === undefined) { return false; } - return this._writableState.destroyed; }, - set: function set(value) { + set(value) { // we ignore the value if the stream // has not been initialized yet if (!this._writableState) { return; - } // backward compatibility, the user is explicitly - // managing destroyed - + } + // backward compatibility, the user is explicitly + // managing destroyed this._writableState.destroyed = value; } }); Writable.prototype.destroy = destroyImpl.destroy; Writable.prototype._undestroy = destroyImpl.undestroy; - Writable.prototype._destroy = function (err, cb) { cb(err); }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js index 9fb615a2f3bc44..bcae6108c0d81d 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js @@ -1,34 +1,26 @@ 'use strict'; -var _Object$setPrototypeO; - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var finished = require('./end-of-stream'); - -var kLastResolve = Symbol('lastResolve'); -var kLastReject = Symbol('lastReject'); -var kError = Symbol('error'); -var kEnded = Symbol('ended'); -var kLastPromise = Symbol('lastPromise'); -var kHandlePromise = Symbol('handlePromise'); -var kStream = Symbol('stream'); - +const finished = require('./end-of-stream'); +const kLastResolve = Symbol('lastResolve'); +const kLastReject = Symbol('lastReject'); +const kError = Symbol('error'); +const kEnded = Symbol('ended'); +const kLastPromise = Symbol('lastPromise'); +const kHandlePromise = Symbol('handlePromise'); +const kStream = Symbol('stream'); function createIterResult(value, done) { return { - value: value, - done: done + value, + done }; } - function readAndResolve(iter) { - var resolve = iter[kLastResolve]; - + const resolve = iter[kLastResolve]; if (resolve !== null) { - var data = iter[kStream].read(); // we defer if data is null + const data = iter[kStream].read(); + // we defer if data is null // we can be expecting either 'end' or // 'error' - if (data !== null) { iter[kLastPromise] = null; iter[kLastResolve] = null; @@ -37,171 +29,157 @@ function readAndResolve(iter) { } } } - function onReadable(iter) { // we wait for the next tick, because it might // emit an error with process.nextTick process.nextTick(readAndResolve, iter); } - function wrapForNext(lastPromise, iter) { - return function (resolve, reject) { - lastPromise.then(function () { + return (resolve, reject) => { + lastPromise.then(() => { if (iter[kEnded]) { resolve(createIterResult(undefined, true)); return; } - iter[kHandlePromise](resolve, reject); }, reject); }; } - -var AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); -var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = { +const AsyncIteratorPrototype = Object.getPrototypeOf(function () {}); +const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({ get stream() { return this[kStream]; }, - - next: function next() { - var _this = this; - + next() { // if we have detected an error in the meanwhile // reject straight away - var error = this[kError]; - + const error = this[kError]; if (error !== null) { return Promise.reject(error); } - if (this[kEnded]) { return Promise.resolve(createIterResult(undefined, true)); } - if (this[kStream].destroyed) { // We need to defer via nextTick because if .destroy(err) is // called, the error will be emitted via nextTick, and // we cannot guarantee that there is no error lingering around // waiting to be emitted. - return new Promise(function (resolve, reject) { - process.nextTick(function () { - if (_this[kError]) { - reject(_this[kError]); + return new Promise((resolve, reject) => { + process.nextTick(() => { + if (this[kError]) { + reject(this[kError]); } else { resolve(createIterResult(undefined, true)); } }); }); - } // if we have multiple next() calls + } + + // if we have multiple next() calls // we will wait for the previous Promise to finish // this logic is optimized to support for await loops, // where next() is only called once at a time - - - var lastPromise = this[kLastPromise]; - var promise; - + const lastPromise = this[kLastPromise]; + let promise; if (lastPromise) { promise = new Promise(wrapForNext(lastPromise, this)); } else { // fast path needed to support multiple this.push() // without triggering the next() queue - var data = this[kStream].read(); - + const data = this[kStream].read(); if (data !== null) { return Promise.resolve(createIterResult(data, false)); } - promise = new Promise(this[kHandlePromise]); } - this[kLastPromise] = promise; return promise; - } -}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () { - return this; -}), _defineProperty(_Object$setPrototypeO, "return", function _return() { - var _this2 = this; - - // destroy(err, cb) is a private API - // we can guarantee we have that here, because we control the - // Readable class this is attached to - return new Promise(function (resolve, reject) { - _this2[kStream].destroy(null, function (err) { - if (err) { - reject(err); - return; - } - - resolve(createIterResult(undefined, true)); + }, + [Symbol.asyncIterator]() { + return this; + }, + return() { + // destroy(err, cb) is a private API + // we can guarantee we have that here, because we control the + // Readable class this is attached to + return new Promise((resolve, reject) => { + this[kStream].destroy(null, err => { + if (err) { + reject(err); + return; + } + resolve(createIterResult(undefined, true)); + }); }); - }); -}), _Object$setPrototypeO), AsyncIteratorPrototype); - -var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) { - var _Object$create; - - var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, { - value: stream, - writable: true - }), _defineProperty(_Object$create, kLastResolve, { - value: null, - writable: true - }), _defineProperty(_Object$create, kLastReject, { - value: null, - writable: true - }), _defineProperty(_Object$create, kError, { - value: null, - writable: true - }), _defineProperty(_Object$create, kEnded, { - value: stream._readableState.endEmitted, - writable: true - }), _defineProperty(_Object$create, kHandlePromise, { - value: function value(resolve, reject) { - var data = iterator[kStream].read(); - - if (data) { - iterator[kLastPromise] = null; - iterator[kLastResolve] = null; - iterator[kLastReject] = null; - resolve(createIterResult(data, false)); - } else { - iterator[kLastResolve] = resolve; - iterator[kLastReject] = reject; - } + } +}, AsyncIteratorPrototype); +const createReadableStreamAsyncIterator = stream => { + const iterator = Object.create(ReadableStreamAsyncIteratorPrototype, { + [kStream]: { + value: stream, + writable: true + }, + [kLastResolve]: { + value: null, + writable: true + }, + [kLastReject]: { + value: null, + writable: true }, - writable: true - }), _Object$create)); + [kError]: { + value: null, + writable: true + }, + [kEnded]: { + value: stream._readableState.endEmitted, + writable: true + }, + // the function passed to new Promise + // is cached so we avoid allocating a new + // closure at every run + [kHandlePromise]: { + value: (resolve, reject) => { + const data = iterator[kStream].read(); + if (data) { + iterator[kLastPromise] = null; + iterator[kLastResolve] = null; + iterator[kLastReject] = null; + resolve(createIterResult(data, false)); + } else { + iterator[kLastResolve] = resolve; + iterator[kLastReject] = reject; + } + }, + writable: true + } + }); iterator[kLastPromise] = null; - finished(stream, function (err) { + finished(stream, err => { if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') { - var reject = iterator[kLastReject]; // reject if we are waiting for data in the Promise + const reject = iterator[kLastReject]; + // reject if we are waiting for data in the Promise // returned by next() and store the error - if (reject !== null) { iterator[kLastPromise] = null; iterator[kLastResolve] = null; iterator[kLastReject] = null; reject(err); } - iterator[kError] = err; return; } - - var resolve = iterator[kLastResolve]; - + const resolve = iterator[kLastResolve]; if (resolve !== null) { iterator[kLastPromise] = null; iterator[kLastResolve] = null; iterator[kLastReject] = null; resolve(createIterResult(undefined, true)); } - iterator[kEnded] = true; }); stream.on('readable', onReadable.bind(null, iterator)); return iterator; }; - module.exports = createReadableStreamAsyncIterator; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js index cdea425f19dd96..352ac3438ef2ac 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js @@ -1,210 +1,155 @@ 'use strict'; -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -var _require = require('buffer'), - Buffer = _require.Buffer; - -var _require2 = require('util'), - inspect = _require2.inspect; - -var custom = inspect && inspect.custom || 'inspect'; - +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +const _require = require('buffer'), + Buffer = _require.Buffer; +const _require2 = require('util'), + inspect = _require2.inspect; +const custom = inspect && inspect.custom || 'inspect'; function copyBuffer(src, target, offset) { Buffer.prototype.copy.call(src, target, offset); } - -module.exports = -/*#__PURE__*/ -function () { - function BufferList() { - _classCallCheck(this, BufferList); - +module.exports = class BufferList { + constructor() { this.head = null; this.tail = null; this.length = 0; } - - _createClass(BufferList, [{ - key: "push", - value: function push(v) { - var entry = { - data: v, - next: null - }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; - } - }, { - key: "unshift", - value: function unshift(v) { - var entry = { - data: v, - next: this.head - }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; - } - }, { - key: "shift", - value: function shift() { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; - } - }, { - key: "clear", - value: function clear() { - this.head = this.tail = null; - this.length = 0; - } - }, { - key: "join", - value: function join(s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - - while (p = p.next) { - ret += s + p.data; - } - - return ret; + push(v) { + const entry = { + data: v, + next: null + }; + if (this.length > 0) this.tail.next = entry;else this.head = entry; + this.tail = entry; + ++this.length; + } + unshift(v) { + const entry = { + data: v, + next: this.head + }; + if (this.length === 0) this.tail = entry; + this.head = entry; + ++this.length; + } + shift() { + if (this.length === 0) return; + const ret = this.head.data; + if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; + --this.length; + return ret; + } + clear() { + this.head = this.tail = null; + this.length = 0; + } + join(s) { + if (this.length === 0) return ''; + var p = this.head; + var ret = '' + p.data; + while (p = p.next) ret += s + p.data; + return ret; + } + concat(n) { + if (this.length === 0) return Buffer.alloc(0); + const ret = Buffer.allocUnsafe(n >>> 0); + var p = this.head; + var i = 0; + while (p) { + copyBuffer(p.data, ret, i); + i += p.data.length; + p = p.next; } - }, { - key: "concat", - value: function concat(n) { - if (this.length === 0) return Buffer.alloc(0); - var ret = Buffer.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - - while (p) { - copyBuffer(p.data, ret, i); - i += p.data.length; - p = p.next; - } - - return ret; - } // Consumes a specified amount of bytes or characters from the buffered data. - - }, { - key: "consume", - value: function consume(n, hasStrings) { - var ret; - - if (n < this.head.data.length) { - // `slice` is the same for buffers and strings. - ret = this.head.data.slice(0, n); - this.head.data = this.head.data.slice(n); - } else if (n === this.head.data.length) { - // First chunk is a perfect match. - ret = this.shift(); - } else { - // Result spans more than one buffer. - ret = hasStrings ? this._getString(n) : this._getBuffer(n); - } + return ret; + } - return ret; + // Consumes a specified amount of bytes or characters from the buffered data. + consume(n, hasStrings) { + var ret; + if (n < this.head.data.length) { + // `slice` is the same for buffers and strings. + ret = this.head.data.slice(0, n); + this.head.data = this.head.data.slice(n); + } else if (n === this.head.data.length) { + // First chunk is a perfect match. + ret = this.shift(); + } else { + // Result spans more than one buffer. + ret = hasStrings ? this._getString(n) : this._getBuffer(n); } - }, { - key: "first", - value: function first() { - return this.head.data; - } // Consumes a specified amount of characters from the buffered data. - - }, { - key: "_getString", - value: function _getString(n) { - var p = this.head; - var c = 1; - var ret = p.data; - n -= ret.length; - - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = str.slice(nb); - } + return ret; + } + first() { + return this.head.data; + } - break; + // Consumes a specified amount of characters from the buffered data. + _getString(n) { + var p = this.head; + var c = 1; + var ret = p.data; + n -= ret.length; + while (p = p.next) { + const str = p.data; + const nb = n > str.length ? str.length : n; + if (nb === str.length) ret += str;else ret += str.slice(0, n); + n -= nb; + if (n === 0) { + if (nb === str.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = str.slice(nb); } - - ++c; + break; } + ++c; + } + this.length -= c; + return ret; + } - this.length -= c; - return ret; - } // Consumes a specified amount of bytes from the buffered data. - - }, { - key: "_getBuffer", - value: function _getBuffer(n) { - var ret = Buffer.allocUnsafe(n); - var p = this.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) this.head = p.next;else this.head = this.tail = null; - } else { - this.head = p; - p.data = buf.slice(nb); - } - - break; + // Consumes a specified amount of bytes from the buffered data. + _getBuffer(n) { + const ret = Buffer.allocUnsafe(n); + var p = this.head; + var c = 1; + p.data.copy(ret); + n -= p.data.length; + while (p = p.next) { + const buf = p.data; + const nb = n > buf.length ? buf.length : n; + buf.copy(ret, ret.length - n, 0, nb); + n -= nb; + if (n === 0) { + if (nb === buf.length) { + ++c; + if (p.next) this.head = p.next;else this.head = this.tail = null; + } else { + this.head = p; + p.data = buf.slice(nb); } - - ++c; + break; } - - this.length -= c; - return ret; - } // Make sure the linked list only shows the minimal necessary information. - - }, { - key: custom, - value: function value(_, options) { - return inspect(this, _objectSpread({}, options, { - // Only inspect one level. - depth: 0, - // It should not recurse. - customInspect: false - })); + ++c; } - }]); + this.length -= c; + return ret; + } - return BufferList; -}(); \ No newline at end of file + // Make sure the linked list only shows the minimal necessary information. + [custom](_, options) { + return inspect(this, _objectSpread(_objectSpread({}, options), {}, { + // Only inspect one level. + depth: 0, + // It should not recurse. + customInspect: false + })); + } +}; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js index 3268a16f3b6f23..7e8275567dc354 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js @@ -1,11 +1,9 @@ -'use strict'; // undocumented cb() API, needed for core, not for public API +'use strict'; +// undocumented cb() API, needed for core, not for public API function destroy(err, cb) { - var _this = this; - - var readableDestroyed = this._readableState && this._readableState.destroyed; - var writableDestroyed = this._writableState && this._writableState.destroyed; - + const readableDestroyed = this._readableState && this._readableState.destroyed; + const writableDestroyed = this._writableState && this._writableState.destroyed; if (readableDestroyed || writableDestroyed) { if (cb) { cb(err); @@ -17,53 +15,48 @@ function destroy(err, cb) { process.nextTick(emitErrorNT, this, err); } } - return this; - } // we set destroyed to true before firing error callbacks in order - // to make it re-entrance safe in case destroy() is called within callbacks + } + // we set destroyed to true before firing error callbacks in order + // to make it re-entrance safe in case destroy() is called within callbacks if (this._readableState) { this._readableState.destroyed = true; - } // if this is a duplex stream mark the writable part as destroyed as well - + } + // if this is a duplex stream mark the writable part as destroyed as well if (this._writableState) { this._writableState.destroyed = true; } - - this._destroy(err || null, function (err) { + this._destroy(err || null, err => { if (!cb && err) { - if (!_this._writableState) { - process.nextTick(emitErrorAndCloseNT, _this, err); - } else if (!_this._writableState.errorEmitted) { - _this._writableState.errorEmitted = true; - process.nextTick(emitErrorAndCloseNT, _this, err); + if (!this._writableState) { + process.nextTick(emitErrorAndCloseNT, this, err); + } else if (!this._writableState.errorEmitted) { + this._writableState.errorEmitted = true; + process.nextTick(emitErrorAndCloseNT, this, err); } else { - process.nextTick(emitCloseNT, _this); + process.nextTick(emitCloseNT, this); } } else if (cb) { - process.nextTick(emitCloseNT, _this); + process.nextTick(emitCloseNT, this); cb(err); } else { - process.nextTick(emitCloseNT, _this); + process.nextTick(emitCloseNT, this); } }); - return this; } - function emitErrorAndCloseNT(self, err) { emitErrorNT(self, err); emitCloseNT(self); } - function emitCloseNT(self) { if (self._writableState && !self._writableState.emitClose) return; if (self._readableState && !self._readableState.emitClose) return; self.emit('close'); } - function undestroy() { if (this._readableState) { this._readableState.destroyed = false; @@ -71,7 +64,6 @@ function undestroy() { this._readableState.ended = false; this._readableState.endEmitted = false; } - if (this._writableState) { this._writableState.destroyed = false; this._writableState.ended = false; @@ -82,24 +74,22 @@ function undestroy() { this._writableState.errorEmitted = false; } } - function emitErrorNT(self, err) { self.emit('error', err); } - function errorOrDestroy(stream, err) { // We have tests that rely on errors being emitted // in the same tick, so changing this is semver major. // For now when you opt-in to autoDestroy we allow // the error to be emitted nextTick. In a future // semver major update we should change the default to this. - var rState = stream._readableState; - var wState = stream._writableState; + + const rState = stream._readableState; + const wState = stream._writableState; if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err); } - module.exports = { - destroy: destroy, - undestroy: undestroy, - errorOrDestroy: errorOrDestroy + destroy, + undestroy, + errorOrDestroy }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js index 831f286d98fa95..b6d101691f187c 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js @@ -1,78 +1,62 @@ // Ported from https://github.com/mafintosh/end-of-stream with // permission from the author, Mathias Buus (@mafintosh). -'use strict'; -var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; +'use strict'; +const ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE; function once(callback) { - var called = false; + let called = false; return function () { if (called) return; called = true; - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } - callback.apply(this, args); }; } - function noop() {} - function isRequest(stream) { return stream.setHeader && typeof stream.abort === 'function'; } - function eos(stream, opts, callback) { if (typeof opts === 'function') return eos(stream, null, opts); if (!opts) opts = {}; callback = once(callback || noop); - var readable = opts.readable || opts.readable !== false && stream.readable; - var writable = opts.writable || opts.writable !== false && stream.writable; - - var onlegacyfinish = function onlegacyfinish() { + let readable = opts.readable || opts.readable !== false && stream.readable; + let writable = opts.writable || opts.writable !== false && stream.writable; + const onlegacyfinish = () => { if (!stream.writable) onfinish(); }; - var writableEnded = stream._writableState && stream._writableState.finished; - - var onfinish = function onfinish() { + const onfinish = () => { writable = false; writableEnded = true; if (!readable) callback.call(stream); }; - var readableEnded = stream._readableState && stream._readableState.endEmitted; - - var onend = function onend() { + const onend = () => { readable = false; readableEnded = true; if (!writable) callback.call(stream); }; - - var onerror = function onerror(err) { + const onerror = err => { callback.call(stream, err); }; - - var onclose = function onclose() { - var err; - + const onclose = () => { + let err; if (readable && !readableEnded) { if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); return callback.call(stream, err); } - if (writable && !writableEnded) { if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE(); return callback.call(stream, err); } }; - - var onrequest = function onrequest() { + const onrequest = () => { stream.req.on('finish', onfinish); }; - if (isRequest(stream)) { stream.on('complete', onfinish); stream.on('abort', onclose); @@ -82,7 +66,6 @@ function eos(stream, opts, callback) { stream.on('end', onlegacyfinish); stream.on('close', onlegacyfinish); } - stream.on('end', onend); stream.on('finish', onfinish); if (opts.error !== false) stream.on('error', onerror); @@ -100,5 +83,4 @@ function eos(stream, opts, callback) { stream.removeListener('close', onclose); }; } - module.exports = eos; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js index 6c41284416799c..4ca2cd1996d28f 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js @@ -1,52 +1,42 @@ 'use strict'; function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } - function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - -function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } - -function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } - -function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } - -var ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE; - +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +const ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE; function from(Readable, iterable, opts) { - var iterator; - + let iterator; if (iterable && typeof iterable.next === 'function') { iterator = iterable; } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable); - - var readable = new Readable(_objectSpread({ + const readable = new Readable(_objectSpread({ objectMode: true - }, opts)); // Reading boolean to protect against _read + }, opts)); + // Reading boolean to protect against _read // being called before last iteration completion. - - var reading = false; - + let reading = false; readable._read = function () { if (!reading) { reading = true; next(); } }; - function next() { return _next2.apply(this, arguments); } - function _next2() { _next2 = _asyncToGenerator(function* () { try { - var _ref = yield iterator.next(), - value = _ref.value, - done = _ref.done; - + const _yield$iterator$next = yield iterator.next(), + value = _yield$iterator$next.value, + done = _yield$iterator$next.done; if (done) { readable.push(null); - } else if (readable.push((yield value))) { + } else if (readable.push(yield value)) { next(); } else { reading = false; @@ -57,8 +47,6 @@ function from(Readable, iterable, opts) { }); return _next2.apply(this, arguments); } - return readable; } - module.exports = from; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js index 6589909889c585..272546db82513d 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js @@ -1,88 +1,78 @@ // Ported from https://github.com/mafintosh/pump with // permission from the author, Mathias Buus (@mafintosh). -'use strict'; -var eos; +'use strict'; +let eos; function once(callback) { - var called = false; + let called = false; return function () { if (called) return; called = true; - callback.apply(void 0, arguments); + callback(...arguments); }; } - -var _require$codes = require('../../../errors').codes, - ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, - ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; - +const _require$codes = require('../../../errors').codes, + ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS, + ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED; function noop(err) { // Rethrow the error if it exists to avoid swallowing it if (err) throw err; } - function isRequest(stream) { return stream.setHeader && typeof stream.abort === 'function'; } - function destroyer(stream, reading, writing, callback) { callback = once(callback); - var closed = false; - stream.on('close', function () { + let closed = false; + stream.on('close', () => { closed = true; }); if (eos === undefined) eos = require('./end-of-stream'); eos(stream, { readable: reading, writable: writing - }, function (err) { + }, err => { if (err) return callback(err); closed = true; callback(); }); - var destroyed = false; - return function (err) { + let destroyed = false; + return err => { if (closed) return; if (destroyed) return; - destroyed = true; // request.destroy just do .end - .abort is what we want + destroyed = true; + // request.destroy just do .end - .abort is what we want if (isRequest(stream)) return stream.abort(); if (typeof stream.destroy === 'function') return stream.destroy(); callback(err || new ERR_STREAM_DESTROYED('pipe')); }; } - function call(fn) { fn(); } - function pipe(from, to) { return from.pipe(to); } - function popCallback(streams) { if (!streams.length) return noop; if (typeof streams[streams.length - 1] !== 'function') return noop; return streams.pop(); } - function pipeline() { for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) { streams[_key] = arguments[_key]; } - - var callback = popCallback(streams); + const callback = popCallback(streams); if (Array.isArray(streams[0])) streams = streams[0]; - if (streams.length < 2) { throw new ERR_MISSING_ARGS('streams'); } - - var error; - var destroys = streams.map(function (stream, i) { - var reading = i < streams.length - 1; - var writing = i > 0; + let error; + const destroys = streams.map(function (stream, i) { + const reading = i < streams.length - 1; + const writing = i > 0; return destroyer(stream, reading, writing, function (err) { if (!error) error = err; if (err) destroys.forEach(call); @@ -93,5 +83,4 @@ function pipeline() { }); return streams.reduce(pipe); } - module.exports = pipeline; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js index 19887eb8a9070e..8a994b4422a2d2 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js @@ -1,27 +1,22 @@ 'use strict'; -var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; - +const ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE; function highWaterMarkFrom(options, isDuplex, duplexKey) { return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; } - function getHighWaterMark(state, options, duplexKey, isDuplex) { - var hwm = highWaterMarkFrom(options, isDuplex, duplexKey); - + const hwm = highWaterMarkFrom(options, isDuplex, duplexKey); if (hwm != null) { if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) { - var name = isDuplex ? duplexKey : 'highWaterMark'; + const name = isDuplex ? duplexKey : 'highWaterMark'; throw new ERR_INVALID_OPT_VALUE(name, hwm); } - return Math.floor(hwm); - } // Default value - + } + // Default value return state.objectMode ? 16 : 16 * 1024; } - module.exports = { - getHighWaterMark: getHighWaterMark + getHighWaterMark }; \ No newline at end of file diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json index 0b0c4bd207ace3..4cd81b628d572a 100644 --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json @@ -1,6 +1,6 @@ { "name": "readable-stream", - "version": "3.6.0", + "version": "3.6.1", "description": "Streams3, a user-land copy of the stream library from Node.js", "main": "readable.js", "engines": { diff --git a/deps/npm/node_modules/sigstore/LICENSE b/deps/npm/node_modules/sigstore/LICENSE index d645695673349e..e9e7c1679a09df 100644 --- a/deps/npm/node_modules/sigstore/LICENSE +++ b/deps/npm/node_modules/sigstore/LICENSE @@ -187,7 +187,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2023 The Sigstore Authors Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/deps/npm/node_modules/sigstore/README.md b/deps/npm/node_modules/sigstore/README.md index 0a8b690423a0f3..5ade0dc5ab45f5 100644 --- a/deps/npm/node_modules/sigstore/README.md +++ b/deps/npm/node_modules/sigstore/README.md @@ -1,4 +1,4 @@ -# sigstore-js +# sigstore-js · [![npm version](https://img.shields.io/npm/v/sigstore.svg?style=flat)](https://www.npmjs.com/package/sigstore) [![CI Status](https://github.com/sigstore/sigstore-js/workflows/CI/badge.svg)](https://github.com/sigstore/sigstore-js/actions/workflows/ci.yml) [![Smoke Test Status](https://github.com/sigstore/sigstore-js/workflows/smoke-test/badge.svg)](https://github.com/sigstore/sigstore-js/actions/workflows/smoke-test.yml) A JavaScript library for generating and verifying Sigstore signatures. One of the intended uses is to sign and verify npm packages but it can be used to sign @@ -101,29 +101,16 @@ sigstore ## Development -### Updating protobufs +### Changesets +If you are contributing a user-facing or noteworthy change that should be added to the changelog, you should include a changeset with your PR by running the following command: -[Docker](https://docs.docker.com/engine/install/) is required to generate protobufs for the `.sigstore` bundle format. - -Install Docker on MacOS using [Homebrew](https://brew.sh/): - -``` -brew install --cask docker && open -a Docker +```console +npx changeset add ``` -View [Docker install instructions](https://docs.docker.com/engine/install/) for other platforms. - -#### Updating Sigstore Protobufs - -Update the Git `REF` in `hack/generate-bundle-types` from the [sigstore/protobuf-specs][5] repository. +Follow the prompts to specify whether the change is a major, minor or patch change. This will create a file in the `.changesets` directory of the repo. This change should be committed and included with your PR. -Generate TypeScript protobufs (should update files in scr/types/sigstore/\_\_generated\_\_): - -``` -npm run codegen:bundle -``` - -#### Updating Rekor Types +### Updating Rekor Types Update the git `REF` in `hack/generate-rekor-types` from the [sigstore/rekor][1] repository. @@ -135,16 +122,10 @@ npm run codegen:rekor ### Release Steps -1. Update the version inside `package.json` and run `npm i` to update `package-lock.json`. -2. PR the changes above and merge to the "main" branch when approved. -3. Use either the "[Create a new release](https://github.com/sigstore/sigstore-js/releases/new)" link or the `gh release create` CLI command to start a new release. -4. Tag the release with a label matching the version in the `package.json` (with a `v` prefix). -5. Add a title matching the tag. -6. Add release notes. -7. Mark as pre-release as appropriate. -8. Publish release. +Whenever a new changeset is merged to the "main" branch, the `release` workflow will open a PR (or append to the existing PR if one is already open) with the all of the pending changesets. + +Publishing a release simply requires that you approve/merge this PR. This will trigger the publishing of the package to the npm registry and the creation of the GitHub release. -After publishing the release, a new npm package will be built and published automatically to the npm registry. ## Licensing `sigstore-js` is licensed under the Apache 2.0 License. diff --git a/deps/npm/node_modules/sigstore/dist/sigstore.d.ts b/deps/npm/node_modules/sigstore/dist/sigstore.d.ts index bb3034383e6956..22c5d2a45f87bf 100644 --- a/deps/npm/node_modules/sigstore/dist/sigstore.d.ts +++ b/deps/npm/node_modules/sigstore/dist/sigstore.d.ts @@ -8,6 +8,10 @@ export declare const DEFAULT_REKOR_URL = "https://rekor.sigstore.dev"; interface TLogOptions { rekorURL?: string; } +interface TUFOptions { + tufMirrorURL?: string; + tufRootPath?: string; +} export type SignOptions = { fulcioURL?: string; identityToken?: string; @@ -23,7 +27,7 @@ export type VerifyOptions = { certificateIdentityURI?: string; certificateOIDs?: Record; keySelector?: KeySelector; -} & TLogOptions; +} & TLogOptions & TUFOptions; type Bundle = sigstore.SerializedBundle; export declare function sign(payload: Buffer, options?: SignOptions): Promise; export declare function attest(payload: Buffer, payloadType: string, options?: SignOptions): Promise; diff --git a/deps/npm/node_modules/sigstore/dist/sigstore.js b/deps/npm/node_modules/sigstore/dist/sigstore.js index ef8fb2058a47e9..34b269aadd7d31 100644 --- a/deps/npm/node_modules/sigstore/dist/sigstore.js +++ b/deps/npm/node_modules/sigstore/dist/sigstore.js @@ -42,15 +42,13 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ -const fs_1 = __importDefault(require("fs")); -const os_1 = __importDefault(require("os")); -const path_1 = __importDefault(require("path")); const ca_1 = require("./ca"); const identity_1 = __importDefault(require("./identity")); const sign_1 = require("./sign"); const tlog_1 = require("./tlog"); const tuf = __importStar(require("./tuf")); const sigstore = __importStar(require("./types/sigstore")); +const util_1 = require("./util"); const verify_1 = require("./verify"); exports.utils = __importStar(require("./sigstore-utils")); exports.DEFAULT_FULCIO_URL = 'https://fulcio.sigstore.dev'; @@ -65,6 +63,7 @@ function createTLogClient(options) { rekorBaseURL: options.rekorURL || exports.DEFAULT_REKOR_URL, }); } +const tufCacheDir = util_1.appdata.appDataPath('sigstore-js'); async function sign(payload, options = {}) { const ca = createCAClient(options); const tlog = createTLogClient(options); @@ -92,8 +91,10 @@ async function attest(payload, payloadType, options = {}) { } exports.attest = attest; async function verify(bundle, payload, options = {}) { - const cacheDir = defaultCacheDir(); - const trustedRoot = await tuf.getTrustedRoot(cacheDir); + const trustedRoot = await tuf.getTrustedRoot(tufCacheDir, { + mirrorURL: options.tufMirrorURL, + rootPath: options.tufRootPath, + }); const verifier = new verify_1.Verifier(trustedRoot, options.keySelector); const deserializedBundle = sigstore.bundleFromJSON(bundle); const opts = collectArtifactVerificationOptions(options); @@ -119,16 +120,6 @@ function configureIdentityProviders(options) { } return idps; } -function defaultCacheDir() { - let cacheRootDir = os_1.default.homedir(); - try { - fs_1.default.accessSync(os_1.default.homedir(), fs_1.default.constants.W_OK | fs_1.default.constants.R_OK); - } - catch (e) { - cacheRootDir = os_1.default.tmpdir(); - } - return path_1.default.join(cacheRootDir, '.sigstore', 'js-root'); -} // Assembles the AtifactVerificationOptions from the supplied VerifyOptions. function collectArtifactVerificationOptions(options) { // The trusted signers are only used if the options contain a certificate diff --git a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js index 5383a370094cdf..61923a61cd8dee 100644 --- a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js +++ b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/hashedrekord.js @@ -1,5 +1,5 @@ "use strict"; -/* tslint:disable */ +/* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, diff --git a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js index 5383a370094cdf..61923a61cd8dee 100644 --- a/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js +++ b/deps/npm/node_modules/sigstore/dist/tlog/types/__generated__/intoto.js @@ -1,5 +1,5 @@ "use strict"; -/* tslint:disable */ +/* eslint-disable */ /** * This file was automatically generated by json-schema-to-typescript. * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, diff --git a/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts b/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts index 349ff08b3be4bb..455fc6af06c54e 100644 --- a/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts +++ b/deps/npm/node_modules/sigstore/dist/tuf/index.d.ts @@ -1,2 +1,6 @@ import * as sigstore from '../types/sigstore'; -export declare function getTrustedRoot(cacheDir: string): Promise; +export interface TUFOptions { + mirrorURL?: string; + rootPath?: string; +} +export declare function getTrustedRoot(cachePath: string, options?: TUFOptions): Promise; diff --git a/deps/npm/node_modules/sigstore/dist/tuf/index.js b/deps/npm/node_modules/sigstore/dist/tuf/index.js index 1aea238ef32ff2..824bce9105ed8e 100644 --- a/deps/npm/node_modules/sigstore/dist/tuf/index.js +++ b/deps/npm/node_modules/sigstore/dist/tuf/index.js @@ -1,4 +1,27 @@ "use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; @@ -22,55 +45,62 @@ limitations under the License. const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const tuf_js_1 = require("tuf-js"); -const trustroot_1 = require("./trustroot"); -async function getTrustedRoot(cacheDir) { - initTufCache(cacheDir); - const repoMap = initRepoMap(cacheDir); - const repoClients = Object.entries(repoMap.repositories).map(([name, urls]) => initClient(name, urls[0], cacheDir)); - // TODO: Add support for multiple repositories. For now, we just use the first - // one (the production Sigstore TUF repository). - const fetcher = new trustroot_1.TrustedRootFetcher(repoClients[0]); - return fetcher.getTrustedRoot(); +const sigstore = __importStar(require("../types/sigstore")); +const target_1 = require("./target"); +const TRUSTED_ROOT_TARGET = 'trusted_root.json'; +const DEFAULT_MIRROR_URL = 'https://sigstore-tuf-root.storage.googleapis.com'; +const DEFAULT_TUF_ROOT_PATH = '../../store/public-good-instance-root.json'; +async function getTrustedRoot(cachePath, options = {}) { + const tufRootPath = options.rootPath || require.resolve(DEFAULT_TUF_ROOT_PATH); + const mirrorURL = options.mirrorURL || DEFAULT_MIRROR_URL; + initTufCache(cachePath, tufRootPath); + const remote = initRemoteConfig(cachePath, mirrorURL); + const repoClient = initClient(cachePath, remote); + const trustedRoot = await (0, target_1.getTarget)(repoClient, TRUSTED_ROOT_TARGET); + return sigstore.TrustedRoot.fromJSON(JSON.parse(trustedRoot)); } exports.getTrustedRoot = getTrustedRoot; -// Initializes the root TUF cache directory -function initTufCache(cacheDir) { - if (!fs_1.default.existsSync(cacheDir)) { - fs_1.default.mkdirSync(cacheDir, { recursive: true }); +// Initializes the TUF cache directory structure including the initial +// root.json file. If the cache directory does not exist, it will be +// created. If the targets directory does not exist, it will be created. +// If the root.json file does not exist, it will be copied from the +// rootPath argument. +function initTufCache(cachePath, tufRootPath) { + const targetsPath = path_1.default.join(cachePath, 'targets'); + const cachedRootPath = path_1.default.join(cachePath, 'root.json'); + if (!fs_1.default.existsSync(cachePath)) { + fs_1.default.mkdirSync(cachePath, { recursive: true }); } -} -// Initializes the repo map (copying it to the cache root dir) and returns the -// content of the repository map. -function initRepoMap(rootDir) { - const mapDest = path_1.default.join(rootDir, 'map.json'); - if (!fs_1.default.existsSync(mapDest)) { - const mapSrc = require.resolve('../../store/map.json'); - fs_1.default.copyFileSync(mapSrc, mapDest); + if (!fs_1.default.existsSync(targetsPath)) { + fs_1.default.mkdirSync(targetsPath); } - const buf = fs_1.default.readFileSync(mapDest); - return JSON.parse(buf.toString('utf-8')); + if (!fs_1.default.existsSync(cachedRootPath)) { + fs_1.default.copyFileSync(tufRootPath, cachedRootPath); + } + return cachePath; } -function initClient(name, url, rootDir) { - const repoCachePath = path_1.default.join(rootDir, name); - const targetCachePath = path_1.default.join(repoCachePath, 'targets'); - const tufRootDest = path_1.default.join(repoCachePath, 'root.json'); - // Only copy the TUF trusted root if it doesn't already exist. It's possible - // that the cached root has already been updated, so we don't want to roll it - // back. - if (!fs_1.default.existsSync(tufRootDest)) { - const tufRootSrc = require.resolve(`../../store/${name}-root.json`); - fs_1.default.mkdirSync(repoCachePath); - fs_1.default.copyFileSync(tufRootSrc, tufRootDest); +// Initializes the remote.json file, which contains the URL of the TUF +// repository. If the file does not exist, it will be created. If the file +// exists, it will be parsed and returned. +function initRemoteConfig(rootDir, mirrorURL) { + let remoteConfig; + const remoteConfigPath = path_1.default.join(rootDir, 'remote.json'); + if (fs_1.default.existsSync(remoteConfigPath)) { + const data = fs_1.default.readFileSync(remoteConfigPath, 'utf-8'); + remoteConfig = JSON.parse(data); } - if (!fs_1.default.existsSync(targetCachePath)) { - fs_1.default.mkdirSync(targetCachePath); + if (!remoteConfig) { + remoteConfig = { mirror: mirrorURL }; + fs_1.default.writeFileSync(remoteConfigPath, JSON.stringify(remoteConfig)); } - // TODO: Is there some better way to derive the base URL for the targets? - // Hard-coding for now based on current Sigstore TUF repo layout. + return remoteConfig; +} +function initClient(cachePath, remote) { + const baseURL = remote.mirror; return new tuf_js_1.Updater({ - metadataBaseUrl: url, - targetBaseUrl: `${url}/targets`, - metadataDir: repoCachePath, - targetDir: targetCachePath, + metadataBaseUrl: baseURL, + targetBaseUrl: `${baseURL}/targets`, + metadataDir: cachePath, + targetDir: path_1.default.join(cachePath, 'targets'), }); } diff --git a/deps/npm/node_modules/sigstore/dist/tuf/target.d.ts b/deps/npm/node_modules/sigstore/dist/tuf/target.d.ts new file mode 100644 index 00000000000000..aed81654f3be0b --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/tuf/target.d.ts @@ -0,0 +1,2 @@ +import { Updater } from 'tuf-js'; +export declare function getTarget(tuf: Updater, targetPath: string): Promise; diff --git a/deps/npm/node_modules/sigstore/dist/tuf/target.js b/deps/npm/node_modules/sigstore/dist/tuf/target.js new file mode 100644 index 00000000000000..ac708cdbcf1cef --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/tuf/target.js @@ -0,0 +1,60 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTarget = void 0; +/* +Copyright 2023 The Sigstore Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +const fs_1 = __importDefault(require("fs")); +const error_1 = require("../error"); +// Returns the local path to the specified target. If the target is not yet +// cached locally, the provided TUF Updater will be used to download and +// cache the target. +async function getTarget(tuf, targetPath) { + const path = await getTargetPath(tuf, targetPath); + try { + return fs_1.default.readFileSync(path, 'utf-8'); + } + catch (err) { + throw new error_1.InternalError(`error reading trusted root: ${err}`); + } +} +exports.getTarget = getTarget; +async function getTargetPath(tuf, target) { + let targetInfo; + try { + targetInfo = await tuf.refresh().then(() => tuf.getTargetInfo(target)); + } + catch (err) { + throw new error_1.InternalError(`error refreshing TUF metadata: ${err}`); + } + if (!targetInfo) { + throw new error_1.InternalError(`target ${target} not found`); + } + let path = await tuf.findCachedTarget(targetInfo); + // An empty path here means the target has not been cached locally, or is + // out of date. In either case, we need to download it. + if (!path) { + try { + path = await tuf.downloadTarget(targetInfo); + } + catch (err) { + throw new error_1.InternalError(`error downloading target: ${err}`); + } + } + return path; +} diff --git a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts b/deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts deleted file mode 100644 index 615fffae62a80e..00000000000000 --- a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Updater } from 'tuf-js'; -import * as sigstore from '../types/sigstore'; -export declare class TrustedRootFetcher { - private tuf; - constructor(tuf: Updater); - getTrustedRoot(): Promise; - private allTargets; - private getTLogKeys; - private getCAKeys; - private readTargetBytes; -} diff --git a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.js b/deps/npm/node_modules/sigstore/dist/tuf/trustroot.js deleted file mode 100644 index dcf491cdaefe8d..00000000000000 --- a/deps/npm/node_modules/sigstore/dist/tuf/trustroot.js +++ /dev/null @@ -1,163 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.TrustedRootFetcher = void 0; -/* -Copyright 2023 The Sigstore Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ -const fs_1 = __importDefault(require("fs")); -const error_1 = require("../error"); -const sigstore = __importStar(require("../types/sigstore")); -const util_1 = require("../util"); -const TRUSTED_ROOT_MEDIA_TYPE = 'application/vnd.dev.sigstore.trustedroot+json;version=0.1'; -// Type guard for SigstoreTargetMetadata -function isTargetMetadata(m) { - return (m !== undefined && - m !== null && - typeof m === 'object' && - 'status' in m && - 'usage' in m && - 'uri' in m); -} -class TrustedRootFetcher { - constructor(tuf) { - this.tuf = tuf; - } - // Assembles a TrustedRoot from the targets in the TUF repo - async getTrustedRoot() { - // Get all available targets - const targets = await this.allTargets(); - const cas = await this.getCAKeys(targets, 'Fulcio'); - const ctlogs = await this.getTLogKeys(targets, 'CTFE'); - const tlogs = await this.getTLogKeys(targets, 'Rekor'); - return { - mediaType: TRUSTED_ROOT_MEDIA_TYPE, - certificateAuthorities: cas, - ctlogs: ctlogs, - tlogs: tlogs, - timestampAuthorities: [], - }; - } - // Retrieves the list of TUF targets. - // NOTE: This is a HACK to get around the fact that the TUF library doesn't - // expose the list of targets. This is a temporary solution until TUF comes up - // with a story for target discovery. - // https://docs.google.com/document/d/1rWHAM2qCUtnjWD4lOrGWE2EIDLoA7eSy4-jB66Wgh0o - async allTargets() { - try { - await this.tuf.refresh(); - } - catch (e) { - throw new error_1.InternalError('error refreshing trust metadata'); - } - return Object.values( - // eslint-disable-next-line @typescript-eslint/no-explicit-any - this.tuf.trustedSet.targets?.signed.targets || {}); - } - // Filters the supplied list of targets to those with the specified usage - // and returns a new TransparencyLogInstance for each with the associated - // public key populated. - async getTLogKeys(targets, usage) { - const filteredTargets = filterByUsage(targets, usage); - return Promise.all(filteredTargets.map(async (target) => { - const keyBytes = await this.readTargetBytes(target); - const uri = isTargetMetadata(target.custom.sigstore) - ? target.custom.sigstore.uri - : ''; - // The log ID is not present in the Sigstore target metadata, but - // can be derived by hashing the contents of the public key. - return { - baseUrl: uri, - hashAlgorithm: sigstore.HashAlgorithm.SHA2_256, - logId: { keyId: util_1.crypto.hash(keyBytes) }, - publicKey: { - keyDetails: sigstore.PublicKeyDetails.PKIX_ECDSA_P256_SHA_256, - rawBytes: keyBytes, - }, - }; - })); - } - // Filters the supplied list of targets to those with the specified usage - // and returns a new CertificateAuthority populated with all of the associated - // certificates. - // NOTE: The Sigstore target metadata does NOT provide any mechanism to link - // related certificates (e.g. a root and intermediate). As a result, we - // assume that all certificates located here are part of the same chain. - // This works out OK since our certificate chain verification code tries all - // possible permutations of the certificates until it finds one that results - // in a valid, trusted chain. - async getCAKeys(targets, usage) { - const filteredTargets = filterByUsage(targets, usage); - const certs = await Promise.all(filteredTargets.map(async (target) => await this.readTargetBytes(target))); - return [ - { - uri: '', - subject: undefined, - validFor: { start: new Date(0) }, - certChain: { - certificates: certs.map((cert) => ({ rawBytes: cert })), - }, - }, - ]; - } - // Reads the contents of the specified target file as a DER-encoded buffer. - async readTargetBytes(target) { - try { - let path = await this.tuf.findCachedTarget(target); - // An empty path here means the target has not been cached locally, or is - // out of date. In either case, we need to download it. - if (!path) { - path = await this.tuf.downloadTarget(target); - } - const file = fs_1.default.readFileSync(path); - return util_1.pem.toDER(file.toString('utf-8')); - } - catch (err) { - throw new error_1.InternalError(`error reading key/certificate for ${target.path}`); - } - } -} -exports.TrustedRootFetcher = TrustedRootFetcher; -function filterByUsage(targets, usage) { - return targets.filter((target) => { - const meta = target.custom.sigstore; - return isTargetMetadata(meta) && meta.usage === usage; - }); -} diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts index 26dd2150d548eb..70b2896fbdcbae 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.d.ts @@ -1,21 +1,13 @@ /// +import { ArtifactVerificationOptions, Bundle, Envelope, TransparencyLogEntry, VerificationMaterial } from '@sigstore/protobuf-specs'; import { Entry } from '../../tlog'; import { x509Certificate } from '../../x509/cert'; import { SignatureMaterial } from '../signature'; import { WithRequired } from '../utility'; import { ValidBundle } from './validate'; -import { Envelope } from './__generated__/envelope'; -import { Bundle, VerificationMaterial } from './__generated__/sigstore_bundle'; -import { TransparencyLogEntry } from './__generated__/sigstore_rekor'; -import { ArtifactVerificationOptions } from './__generated__/sigstore_verification'; +export * from '@sigstore/protobuf-specs'; export * from './serialized'; export * from './validate'; -export * from './__generated__/envelope'; -export * from './__generated__/sigstore_bundle'; -export * from './__generated__/sigstore_common'; -export { TransparencyLogEntry } from './__generated__/sigstore_rekor'; -export * from './__generated__/sigstore_trustroot'; -export * from './__generated__/sigstore_verification'; export declare const bundleToJSON: (message: Bundle) => unknown; export declare const bundleFromJSON: (obj: any) => ValidBundle; export declare const envelopeToJSON: (message: Envelope) => unknown; diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js index df07d6dc9fc295..55df7e744de197 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/index.js @@ -14,32 +14,39 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.signingCertificate = exports.bundle = exports.isVerifiableTransparencyLogEntry = exports.isCAVerificationOptions = exports.isBundleWithCertificateChain = exports.isBundleWithVerificationMaterial = exports.envelopeFromJSON = exports.envelopeToJSON = exports.bundleFromJSON = exports.bundleToJSON = exports.TransparencyLogEntry = void 0; +exports.signingCertificate = exports.bundle = exports.isVerifiableTransparencyLogEntry = exports.isCAVerificationOptions = exports.isBundleWithCertificateChain = exports.isBundleWithVerificationMaterial = exports.envelopeFromJSON = exports.envelopeToJSON = exports.bundleFromJSON = exports.bundleToJSON = void 0; +/* +Copyright 2023 The Sigstore Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ +const protobuf_specs_1 = require("@sigstore/protobuf-specs"); const util_1 = require("../../util"); const cert_1 = require("../../x509/cert"); const validate_1 = require("./validate"); -const envelope_1 = require("./__generated__/envelope"); -const sigstore_bundle_1 = require("./__generated__/sigstore_bundle"); -const sigstore_common_1 = require("./__generated__/sigstore_common"); +__exportStar(require("@sigstore/protobuf-specs"), exports); __exportStar(require("./serialized"), exports); __exportStar(require("./validate"), exports); -__exportStar(require("./__generated__/envelope"), exports); -__exportStar(require("./__generated__/sigstore_bundle"), exports); -__exportStar(require("./__generated__/sigstore_common"), exports); -var sigstore_rekor_1 = require("./__generated__/sigstore_rekor"); -Object.defineProperty(exports, "TransparencyLogEntry", { enumerable: true, get: function () { return sigstore_rekor_1.TransparencyLogEntry; } }); -__exportStar(require("./__generated__/sigstore_trustroot"), exports); -__exportStar(require("./__generated__/sigstore_verification"), exports); -exports.bundleToJSON = sigstore_bundle_1.Bundle.toJSON; +exports.bundleToJSON = protobuf_specs_1.Bundle.toJSON; // eslint-disable-next-line @typescript-eslint/no-explicit-any const bundleFromJSON = (obj) => { - const bundle = sigstore_bundle_1.Bundle.fromJSON(obj); + const bundle = protobuf_specs_1.Bundle.fromJSON(obj); (0, validate_1.assertValidBundle)(bundle); return bundle; }; exports.bundleFromJSON = bundleFromJSON; -exports.envelopeToJSON = envelope_1.Envelope.toJSON; -exports.envelopeFromJSON = envelope_1.Envelope.fromJSON; +exports.envelopeToJSON = protobuf_specs_1.Envelope.toJSON; +exports.envelopeFromJSON = protobuf_specs_1.Envelope.fromJSON; const BUNDLE_MEDIA_TYPE = 'application/vnd.dev.sigstore.bundle+json;version=0.1'; // Type guard for narrowing a Bundle to a BundleWithVerificationMaterial function isBundleWithVerificationMaterial(bundle) { @@ -80,7 +87,7 @@ exports.bundle = { $case: 'messageSignature', messageSignature: { messageDigest: { - algorithm: sigstore_common_1.HashAlgorithm.SHA2_256, + algorithm: protobuf_specs_1.HashAlgorithm.SHA2_256, digest: digest, }, signature: signature.signature, diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts index fd0a354282426d..7d8316fd2e6a2b 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.d.ts @@ -1,6 +1,5 @@ +import { Bundle, MessageSignature, VerificationMaterial } from '@sigstore/protobuf-specs'; import { WithRequired } from '../utility'; -import { Bundle, VerificationMaterial } from './__generated__/sigstore_bundle'; -import { MessageSignature } from './__generated__/sigstore_common'; export type ValidBundle = Bundle & { verificationMaterial: VerificationMaterial & { content: NonNullable; diff --git a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js index a19d8ad3ec7021..efd873ab657018 100644 --- a/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js +++ b/deps/npm/node_modules/sigstore/dist/types/sigstore/validate.js @@ -1,21 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.assertValidBundle = void 0; -/* -Copyright 2023 The Sigstore Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ const error_1 = require("../../error"); // Performs basic validation of a Sigstore bundle to ensure that all required // fields are populated. This is not a complete validation of the bundle, but diff --git a/deps/npm/node_modules/sigstore/dist/util/appdata.d.ts b/deps/npm/node_modules/sigstore/dist/util/appdata.d.ts new file mode 100644 index 00000000000000..dcdaeef418bd68 --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/util/appdata.d.ts @@ -0,0 +1 @@ +export declare function appDataPath(name: string): string; diff --git a/deps/npm/node_modules/sigstore/dist/util/appdata.js b/deps/npm/node_modules/sigstore/dist/util/appdata.js new file mode 100644 index 00000000000000..d0c7f6f079e501 --- /dev/null +++ b/deps/npm/node_modules/sigstore/dist/util/appdata.js @@ -0,0 +1,26 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.appDataPath = void 0; +const os_1 = __importDefault(require("os")); +const path_1 = __importDefault(require("path")); +function appDataPath(name) { + const homedir = os_1.default.homedir(); + switch (process.platform) { + case 'darwin': { + const appSupport = path_1.default.join(homedir, 'Library', 'Application Support'); + return path_1.default.join(appSupport, name); + } + case 'win32': { + const localAppData = process.env.LOCALAPPDATA || path_1.default.join(homedir, 'AppData', 'Local'); + return path_1.default.join(localAppData, name, 'Data'); + } + default: { + const localData = process.env.XDG_DATA_HOME || path_1.default.join(homedir, '.local', 'share'); + return path_1.default.join(localData, name); + } + } +} +exports.appDataPath = appDataPath; diff --git a/deps/npm/node_modules/sigstore/dist/util/index.d.ts b/deps/npm/node_modules/sigstore/dist/util/index.d.ts index 786a19630cd603..02e4ddc69b15c6 100644 --- a/deps/npm/node_modules/sigstore/dist/util/index.d.ts +++ b/deps/npm/node_modules/sigstore/dist/util/index.d.ts @@ -1,3 +1,4 @@ +export * as appdata from './appdata'; export * as crypto from './crypto'; export * as dsse from './dsse'; export * as encoding from './encoding'; diff --git a/deps/npm/node_modules/sigstore/dist/util/index.js b/deps/npm/node_modules/sigstore/dist/util/index.js index 2c02116cbf07dd..74ef9c0b1121b2 100644 --- a/deps/npm/node_modules/sigstore/dist/util/index.js +++ b/deps/npm/node_modules/sigstore/dist/util/index.js @@ -23,7 +23,7 @@ var __importStar = (this && this.__importStar) || function (mod) { return result; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.ua = exports.promise = exports.pem = exports.oidc = exports.json = exports.encoding = exports.dsse = exports.crypto = void 0; +exports.ua = exports.promise = exports.pem = exports.oidc = exports.json = exports.encoding = exports.dsse = exports.crypto = exports.appdata = void 0; /* Copyright 2022 The Sigstore Authors. @@ -39,6 +39,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ +exports.appdata = __importStar(require("./appdata")); exports.crypto = __importStar(require("./crypto")); exports.dsse = __importStar(require("./dsse")); exports.encoding = __importStar(require("./encoding")); diff --git a/deps/npm/node_modules/sigstore/dist/verify.js b/deps/npm/node_modules/sigstore/dist/verify.js index 1bcef03b5f7ba6..9d21b553ac5232 100644 --- a/deps/npm/node_modules/sigstore/dist/verify.js +++ b/deps/npm/node_modules/sigstore/dist/verify.js @@ -37,7 +37,7 @@ class Verifier { // Verifies the bundle signature, the bundle's certificate chain (if present) // and the bundle's transparency log entries. verify(bundle, options, data) { - this.verifyArtifactSignature(bundle, options, data); + this.verifyArtifactSignature(bundle, data); if (sigstore.isBundleWithCertificateChain(bundle)) { this.verifySigningCertificate(bundle, options); } @@ -45,8 +45,8 @@ class Verifier { } // Performs bundle signature verification. Determines the type of the bundle // content and delegates to the appropriate signature verification function. - verifyArtifactSignature(bundle, options, data) { - const publicKey = this.getPublicKey(bundle, options); + verifyArtifactSignature(bundle, data) { + const publicKey = this.getPublicKey(bundle); switch (bundle.content?.$case) { case 'messageSignature': if (!data) { @@ -79,7 +79,7 @@ class Verifier { // Returns the public key which will be used to verify the bundle signature. // The public key is selected based on the verification material in the bundle // and the options provided. - getPublicKey(bundle, options) { + getPublicKey(bundle) { // Select the key which will be used to verify the signature switch (bundle.verificationMaterial?.content?.$case) { // If the bundle contains a certificate chain, the public key is the @@ -89,7 +89,7 @@ class Verifier { // If the bundle contains a public key hint, the public key is selected // from the list of trusted keys in the options case 'publicKey': - return getPublicKeyFromHint(bundle.verificationMaterial.content.publicKey, options, this.keySelector); + return getPublicKeyFromHint(bundle.verificationMaterial.content.publicKey, this.keySelector); } } } @@ -101,7 +101,7 @@ function getPublicKeyFromCertificateChain(certificateChain) { } // Retrieves the public key through the key selector callback, passing the // public key hint from the bundle -function getPublicKeyFromHint(publicKeyID, options, keySelector) { +function getPublicKeyFromHint(publicKeyID, keySelector) { const key = keySelector(publicKeyID.hint); if (!key) { throw new error_1.VerificationError('no public key found for signature verification'); diff --git a/deps/npm/node_modules/sigstore/package.json b/deps/npm/node_modules/sigstore/package.json index 1a5960822eb0ee..b0e856df9a340f 100644 --- a/deps/npm/node_modules/sigstore/package.json +++ b/deps/npm/node_modules/sigstore/package.json @@ -1,6 +1,6 @@ { "name": "sigstore", - "version": "1.0.0", + "version": "1.1.1", "description": "code-signing for npm packages", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -12,7 +12,7 @@ "lint": "eslint --fix --ext .ts src/**", "lint:check": "eslint --max-warnings 0 --ext .ts src/**", "format": "prettier --write \"src/**/*\"", - "codegen:sigstore": "./hack/generate-sigstore-types", + "release": "npm run build && changeset publish", "codegen:rekor": "./hack/generate-rekor-types" }, "bin": { @@ -22,6 +22,9 @@ "type": "git", "url": "git+https://github.com/sigstore/sigstore-js.git" }, + "publishConfig": { + "provenance": true + }, "files": [ "dist", "store" @@ -33,6 +36,7 @@ }, "homepage": "https://github.com/sigstore/sigstore-js#readme", "devDependencies": { + "@changesets/cli": "^2.26.0", "@tsconfig/node14": "^1.0.3", "@types/jest": "^29.4.0", "@types/make-fetch-happen": "^10.0.0", @@ -43,13 +47,14 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^29.4.1", - "json-schema-to-typescript": "^11.0.2", + "json-schema-to-typescript": "^12.0.0", "nock": "^13.2.4", "prettier": "^2.6.2", "ts-jest": "^29.0.5", "typescript": "^4.7.2" }, "dependencies": { + "@sigstore/protobuf-specs": "^0.1.0", "make-fetch-happen": "^11.0.1", "tuf-js": "^1.0.0" }, diff --git a/deps/npm/node_modules/sigstore/store/map.json b/deps/npm/node_modules/sigstore/store/map.json deleted file mode 100644 index 620bf0bedbf442..00000000000000 --- a/deps/npm/node_modules/sigstore/store/map.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "repositories": { - "public-good-instance": [ - "https://sigstore-tuf-root.storage.googleapis.com" - ] - }, - "mapping": [ - { - "paths": [ - "*" - ], - "repositories": [ - "public-good-instance" - ], - "terminating": true, - "threshold": 1 - } - ] -} diff --git a/deps/npm/node_modules/spdx-correct/index.js b/deps/npm/node_modules/spdx-correct/index.js index c51a79f5d1c80a..4d9037e0cc4355 100644 --- a/deps/npm/node_modules/spdx-correct/index.js +++ b/deps/npm/node_modules/spdx-correct/index.js @@ -25,6 +25,18 @@ function valid (string) { } } +// Sorting function that orders the given array of transpositions such +// that a transposition with the longer pattern comes before a transposition +// with a shorter pattern. This is to prevent e.g. the transposition +// ["General Public License", "GPL"] from matching to "Lesser General Public License" +// before a longer and more accurate transposition ["Lesser General Public License", "LGPL"] +// has a chance to be recognized. +function sortTranspositions(a, b) { + var length = b[0].length - a[0].length + if (length !== 0) return length + return a[0].toUpperCase().localeCompare(b[0].toUpperCase()) +} + // Common transpositions of license identifier acronyms var transpositions = [ ['APGL', 'AGPL'], @@ -41,8 +53,17 @@ var transpositions = [ ['GUN', 'GPL'], ['+', ''], ['GNU GPL', 'GPL'], + ['GNU LGPL', 'LGPL'], ['GNU/GPL', 'GPL'], ['GNU GLP', 'GPL'], + ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL'], + ['GNU Lesser General Public License', 'LGPL'], + ['GNU LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'], + ['GNU Lesser General Public License', 'LGPL-2.1'], + ['LESSER GENERAL PUBLIC LICENSE', 'LGPL'], + ['Lesser General Public License', 'LGPL'], + ['LESSER GENERAL PUBLIC LICENSE', 'LGPL-2.1'], + ['Lesser General Public License', 'LGPL-2.1'], ['GNU General Public License', 'GPL'], ['Gnu public license', 'GPL'], ['GNU Public License', 'GPL'], @@ -51,8 +72,9 @@ var transpositions = [ ['Mozilla Public License', 'MPL'], ['Universal Permissive License', 'UPL'], ['WTH', 'WTF'], + ['WTFGPL', 'WTFPL'], ['-License', ''] -] +].sort(sortTranspositions) var TRANSPOSED = 0 var CORRECT = 1 @@ -254,7 +276,7 @@ var lastResorts = [ ['MPL', 'MPL-2.0'], ['X11', 'X11'], ['ZLIB', 'Zlib'] -].concat(licensesWithOneVersion) +].concat(licensesWithOneVersion).sort(sortTranspositions) var SUBSTRING = 0 var IDENTIFIER = 1 diff --git a/deps/npm/node_modules/spdx-correct/package.json b/deps/npm/node_modules/spdx-correct/package.json index 35c68bdaa6c61a..d77615638be66d 100644 --- a/deps/npm/node_modules/spdx-correct/package.json +++ b/deps/npm/node_modules/spdx-correct/package.json @@ -1,24 +1,17 @@ { "name": "spdx-correct", "description": "correct invalid SPDX expressions", - "version": "3.1.1", - "author": "Kyle E. Mitchell (https://kemitchell.com)", - "contributors": [ - "Kyle E. Mitchell (https://kemitchell.com)", - "Christian Zommerfelds ", - "Tal Einat ", - "Dan Butvinik " - ], + "version": "3.2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" }, "devDependencies": { - "defence-cli": "^2.0.1", + "defence-cli": "^3.0.1", "replace-require-self": "^1.0.0", - "standard": "^11.0.0", - "standard-markdown": "^4.0.2", - "tape": "^4.9.0" + "standard": "^14.3.4", + "standard-markdown": "^6.0.0", + "tape": "^5.0.1" }, "files": [ "index.js" diff --git a/deps/npm/node_modules/tuf-js/LICENSE b/deps/npm/node_modules/tuf-js/LICENSE index f28ab0914a319d..420700f5d37659 100644 --- a/deps/npm/node_modules/tuf-js/LICENSE +++ b/deps/npm/node_modules/tuf-js/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright GitHub +Copyright (c) 2022 GitHub and the TUF Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/deps/npm/node_modules/tuf-js/dist/utils/config.d.ts b/deps/npm/node_modules/tuf-js/dist/config.d.ts similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/config.d.ts rename to deps/npm/node_modules/tuf-js/dist/config.d.ts diff --git a/deps/npm/node_modules/tuf-js/dist/utils/config.js b/deps/npm/node_modules/tuf-js/dist/config.js similarity index 100% rename from deps/npm/node_modules/tuf-js/dist/utils/config.js rename to deps/npm/node_modules/tuf-js/dist/config.js diff --git a/deps/npm/node_modules/tuf-js/dist/error.d.ts b/deps/npm/node_modules/tuf-js/dist/error.d.ts index 130e49ab9dfd27..3a42f0441b68f9 100644 --- a/deps/npm/node_modules/tuf-js/dist/error.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/error.d.ts @@ -6,20 +6,12 @@ export declare class PersistError extends Error { } export declare class RepositoryError extends Error { } -export declare class UnsignedMetadataError extends RepositoryError { -} export declare class BadVersionError extends RepositoryError { } export declare class EqualVersionError extends BadVersionError { } export declare class ExpiredMetadataError extends RepositoryError { } -export declare class LengthOrHashMismatchError extends RepositoryError { -} -export declare class CryptoError extends Error { -} -export declare class UnsupportedAlgorithmError extends CryptoError { -} export declare class DownloadError extends Error { } export declare class DownloadLengthMismatchError extends DownloadError { diff --git a/deps/npm/node_modules/tuf-js/dist/error.js b/deps/npm/node_modules/tuf-js/dist/error.js index ce7ca5ea06cebc..f4b10fa2028950 100644 --- a/deps/npm/node_modules/tuf-js/dist/error.js +++ b/deps/npm/node_modules/tuf-js/dist/error.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.DownloadHTTPError = exports.DownloadLengthMismatchError = exports.DownloadError = exports.UnsupportedAlgorithmError = exports.CryptoError = exports.LengthOrHashMismatchError = exports.ExpiredMetadataError = exports.EqualVersionError = exports.BadVersionError = exports.UnsignedMetadataError = exports.RepositoryError = exports.PersistError = exports.RuntimeError = exports.ValueError = void 0; +exports.DownloadHTTPError = exports.DownloadLengthMismatchError = exports.DownloadError = exports.ExpiredMetadataError = exports.EqualVersionError = exports.BadVersionError = exports.RepositoryError = exports.PersistError = exports.RuntimeError = exports.ValueError = void 0; // An error about insufficient values class ValueError extends Error { } @@ -17,10 +17,6 @@ exports.PersistError = PersistError; class RepositoryError extends Error { } exports.RepositoryError = RepositoryError; -// An error about metadata object with insufficient threshold of signatures. -class UnsignedMetadataError extends RepositoryError { -} -exports.UnsignedMetadataError = UnsignedMetadataError; // An error for metadata that contains an invalid version number. class BadVersionError extends RepositoryError { } @@ -33,16 +29,6 @@ exports.EqualVersionError = EqualVersionError; class ExpiredMetadataError extends RepositoryError { } exports.ExpiredMetadataError = ExpiredMetadataError; -// An error while checking the length and hash values of an object. -class LengthOrHashMismatchError extends RepositoryError { -} -exports.LengthOrHashMismatchError = LengthOrHashMismatchError; -class CryptoError extends Error { -} -exports.CryptoError = CryptoError; -class UnsupportedAlgorithmError extends CryptoError { -} -exports.UnsupportedAlgorithmError = UnsupportedAlgorithmError; //----- Download Errors ------------------------------------------------------- // An error occurred while attempting to download a file. class DownloadError extends Error { diff --git a/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts b/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts index 2b52cbef523267..126e9eb11afc0e 100644 --- a/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts @@ -1,7 +1,11 @@ /// /// type DownloadFileHandler = (file: string) => Promise; -export declare abstract class BaseFetcher { +export interface Fetcher { + downloadFile(url: string, maxLength: number, handler: DownloadFileHandler): Promise; + downloadBytes(url: string, maxLength: number): Promise; +} +export declare abstract class BaseFetcher implements Fetcher { abstract fetch(url: string): Promise; downloadFile(url: string, maxLength: number, handler: DownloadFileHandler): Promise; downloadBytes(url: string, maxLength: number): Promise; @@ -10,7 +14,7 @@ interface FetcherOptions { timeout?: number; retries?: number; } -export declare class Fetcher extends BaseFetcher { +export declare class DefaultFetcher extends BaseFetcher { private timeout?; private retries?; constructor(options?: FetcherOptions); diff --git a/deps/npm/node_modules/tuf-js/dist/fetcher.js b/deps/npm/node_modules/tuf-js/dist/fetcher.js index cb42ab22a1d312..7a7405ac53e720 100644 --- a/deps/npm/node_modules/tuf-js/dist/fetcher.js +++ b/deps/npm/node_modules/tuf-js/dist/fetcher.js @@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Fetcher = exports.BaseFetcher = void 0; +exports.DefaultFetcher = exports.BaseFetcher = void 0; const fs_1 = __importDefault(require("fs")); const make_fetch_happen_1 = __importDefault(require("make-fetch-happen")); const util_1 = __importDefault(require("util")); @@ -51,7 +51,7 @@ class BaseFetcher { } } exports.BaseFetcher = BaseFetcher; -class Fetcher extends BaseFetcher { +class DefaultFetcher extends BaseFetcher { constructor(options = {}) { super(); this.timeout = options.timeout; @@ -68,7 +68,7 @@ class Fetcher extends BaseFetcher { return response.body; } } -exports.Fetcher = Fetcher; +exports.DefaultFetcher = DefaultFetcher; const writeBufferToStream = async (stream, buffer) => { return new Promise((resolve, reject) => { stream.write(buffer, (err) => { diff --git a/deps/npm/node_modules/tuf-js/dist/index.d.ts b/deps/npm/node_modules/tuf-js/dist/index.d.ts index bfe3adcac2aef1..b4d1bc2b9c8737 100644 --- a/deps/npm/node_modules/tuf-js/dist/index.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/index.d.ts @@ -1,3 +1,3 @@ -export { BaseFetcher } from './fetcher'; -export { TargetFile } from './models/file'; +export { TargetFile } from '@tufjs/models'; +export { BaseFetcher, Fetcher } from './fetcher'; export { Updater } from './updater'; diff --git a/deps/npm/node_modules/tuf-js/dist/index.js b/deps/npm/node_modules/tuf-js/dist/index.js index 6245d1724a2089..5a83b91f355d88 100644 --- a/deps/npm/node_modules/tuf-js/dist/index.js +++ b/deps/npm/node_modules/tuf-js/dist/index.js @@ -1,9 +1,9 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Updater = exports.TargetFile = exports.BaseFetcher = void 0; +exports.Updater = exports.BaseFetcher = exports.TargetFile = void 0; +var models_1 = require("@tufjs/models"); +Object.defineProperty(exports, "TargetFile", { enumerable: true, get: function () { return models_1.TargetFile; } }); var fetcher_1 = require("./fetcher"); Object.defineProperty(exports, "BaseFetcher", { enumerable: true, get: function () { return fetcher_1.BaseFetcher; } }); -var file_1 = require("./models/file"); -Object.defineProperty(exports, "TargetFile", { enumerable: true, get: function () { return file_1.TargetFile; } }); var updater_1 = require("./updater"); Object.defineProperty(exports, "Updater", { enumerable: true, get: function () { return updater_1.Updater; } }); diff --git a/deps/npm/node_modules/tuf-js/dist/models/index.d.ts b/deps/npm/node_modules/tuf-js/dist/models/index.d.ts deleted file mode 100644 index 58d779159215b1..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/models/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { Metadata } from './metadata'; -export { Root } from './root'; -export { Snapshot } from './snapshot'; -export { Targets } from './targets'; -export { Timestamp } from './timestamp'; diff --git a/deps/npm/node_modules/tuf-js/dist/models/index.js b/deps/npm/node_modules/tuf-js/dist/models/index.js deleted file mode 100644 index aa3d828cf9b43a..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/models/index.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Timestamp = exports.Targets = exports.Snapshot = exports.Root = exports.Metadata = void 0; -var metadata_1 = require("./metadata"); -Object.defineProperty(exports, "Metadata", { enumerable: true, get: function () { return metadata_1.Metadata; } }); -var root_1 = require("./root"); -Object.defineProperty(exports, "Root", { enumerable: true, get: function () { return root_1.Root; } }); -var snapshot_1 = require("./snapshot"); -Object.defineProperty(exports, "Snapshot", { enumerable: true, get: function () { return snapshot_1.Snapshot; } }); -var targets_1 = require("./targets"); -Object.defineProperty(exports, "Targets", { enumerable: true, get: function () { return targets_1.Targets; } }); -var timestamp_1 = require("./timestamp"); -Object.defineProperty(exports, "Timestamp", { enumerable: true, get: function () { return timestamp_1.Timestamp; } }); diff --git a/deps/npm/node_modules/tuf-js/dist/store.d.ts b/deps/npm/node_modules/tuf-js/dist/store.d.ts index a6e20ae559c8b8..aed13b300d468d 100644 --- a/deps/npm/node_modules/tuf-js/dist/store.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/store.d.ts @@ -1,5 +1,5 @@ /// -import { Metadata, Root, Snapshot, Targets, Timestamp } from './models'; +import { Metadata, Root, Snapshot, Targets, Timestamp } from '@tufjs/models'; export declare class TrustedMetadataStore { private trustedSet; private referenceTime; diff --git a/deps/npm/node_modules/tuf-js/dist/store.js b/deps/npm/node_modules/tuf-js/dist/store.js index 351a1961730bc9..85673361087095 100644 --- a/deps/npm/node_modules/tuf-js/dist/store.js +++ b/deps/npm/node_modules/tuf-js/dist/store.js @@ -1,9 +1,8 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TrustedMetadataStore = void 0; +const models_1 = require("@tufjs/models"); const error_1 = require("./error"); -const models_1 = require("./models"); -const types_1 = require("./utils/types"); class TrustedMetadataStore { constructor(rootData) { this.trustedSet = {}; @@ -32,18 +31,18 @@ class TrustedMetadataStore { } updateRoot(bytesBuffer) { const data = JSON.parse(bytesBuffer.toString('utf8')); - const newRoot = models_1.Metadata.fromJSON(types_1.MetadataKind.Root, data); - if (newRoot.signed.type != types_1.MetadataKind.Root) { + const newRoot = models_1.Metadata.fromJSON(models_1.MetadataKind.Root, data); + if (newRoot.signed.type != models_1.MetadataKind.Root) { throw new error_1.RepositoryError(`Expected 'root', got ${newRoot.signed.type}`); } // Client workflow 5.4: check for arbitrary software attack - this.root.verifyDelegate(types_1.MetadataKind.Root, newRoot); + this.root.verifyDelegate(models_1.MetadataKind.Root, newRoot); // Client workflow 5.5: check for rollback attack if (newRoot.signed.version != this.root.signed.version + 1) { throw new error_1.BadVersionError(`Expected version ${this.root.signed.version + 1}, got ${newRoot.signed.version}`); } // Check that new root is signed by self - newRoot.verifyDelegate(types_1.MetadataKind.Root, newRoot); + newRoot.verifyDelegate(models_1.MetadataKind.Root, newRoot); // Client workflow 5.7: set new root as trusted root this.trustedSet.root = newRoot; return newRoot; @@ -56,12 +55,12 @@ class TrustedMetadataStore { throw new error_1.ExpiredMetadataError('Final root.json is expired'); } const data = JSON.parse(bytesBuffer.toString('utf8')); - const newTimestamp = models_1.Metadata.fromJSON(types_1.MetadataKind.Timestamp, data); - if (newTimestamp.signed.type != types_1.MetadataKind.Timestamp) { + const newTimestamp = models_1.Metadata.fromJSON(models_1.MetadataKind.Timestamp, data); + if (newTimestamp.signed.type != models_1.MetadataKind.Timestamp) { throw new error_1.RepositoryError(`Expected 'timestamp', got ${newTimestamp.signed.type}`); } // Client workflow 5.4.2: check for arbitrary software attack - this.root.verifyDelegate(types_1.MetadataKind.Timestamp, newTimestamp); + this.root.verifyDelegate(models_1.MetadataKind.Timestamp, newTimestamp); if (this.timestamp) { // Prevent rolling back timestamp version // Client workflow 5.4.3.1: check for rollback attack @@ -104,12 +103,12 @@ class TrustedMetadataStore { snapshotMeta.verify(bytesBuffer); } const data = JSON.parse(bytesBuffer.toString('utf8')); - const newSnapshot = models_1.Metadata.fromJSON(types_1.MetadataKind.Snapshot, data); - if (newSnapshot.signed.type != types_1.MetadataKind.Snapshot) { + const newSnapshot = models_1.Metadata.fromJSON(models_1.MetadataKind.Snapshot, data); + if (newSnapshot.signed.type != models_1.MetadataKind.Snapshot) { throw new error_1.RepositoryError(`Expected 'snapshot', got ${newSnapshot.signed.type}`); } // Client workflow 5.5.3: check for arbitrary software attack - this.root.verifyDelegate(types_1.MetadataKind.Snapshot, newSnapshot); + this.root.verifyDelegate(models_1.MetadataKind.Snapshot, newSnapshot); // version check against meta version (5.5.4) is deferred to allow old // snapshot to be used in rollback protection // Client workflow 5.5.5: check for rollback attack @@ -149,8 +148,8 @@ class TrustedMetadataStore { // Client workflow 5.6.2: check against snapshot role's targets hash meta.verify(bytesBuffer); const data = JSON.parse(bytesBuffer.toString('utf8')); - const newDelegate = models_1.Metadata.fromJSON(types_1.MetadataKind.Targets, data); - if (newDelegate.signed.type != types_1.MetadataKind.Targets) { + const newDelegate = models_1.Metadata.fromJSON(models_1.MetadataKind.Targets, data); + if (newDelegate.signed.type != models_1.MetadataKind.Targets) { throw new error_1.RepositoryError(`Expected 'targets', got ${newDelegate.signed.type}`); } // Client workflow 5.6.3: check for arbitrary software attack @@ -170,11 +169,11 @@ class TrustedMetadataStore { // Note that an expired initial root is still considered valid. loadTrustedRoot(bytesBuffer) { const data = JSON.parse(bytesBuffer.toString('utf8')); - const root = models_1.Metadata.fromJSON(types_1.MetadataKind.Root, data); - if (root.signed.type != types_1.MetadataKind.Root) { + const root = models_1.Metadata.fromJSON(models_1.MetadataKind.Root, data); + if (root.signed.type != models_1.MetadataKind.Root) { throw new error_1.RepositoryError(`Expected 'root', got ${root.signed.type}`); } - root.verifyDelegate(types_1.MetadataKind.Root, root); + root.verifyDelegate(models_1.MetadataKind.Root, root); this.trustedSet['root'] = root; } checkFinalTimestamp() { diff --git a/deps/npm/node_modules/tuf-js/dist/updater.d.ts b/deps/npm/node_modules/tuf-js/dist/updater.d.ts index e49dca22a43d35..9da17d74714cfa 100644 --- a/deps/npm/node_modules/tuf-js/dist/updater.d.ts +++ b/deps/npm/node_modules/tuf-js/dist/updater.d.ts @@ -1,12 +1,12 @@ -import { BaseFetcher } from './fetcher'; -import { TargetFile } from './models/file'; -import { Config } from './utils/config'; +import { TargetFile } from '@tufjs/models'; +import { Config } from './config'; +import { Fetcher } from './fetcher'; export interface UpdaterOptions { metadataDir: string; metadataBaseUrl: string; targetDir?: string; targetBaseUrl?: string; - fetcher?: BaseFetcher; + fetcher?: Fetcher; config?: Partial; } export declare class Updater { diff --git a/deps/npm/node_modules/tuf-js/dist/updater.js b/deps/npm/node_modules/tuf-js/dist/updater.js index 9f33c667ce9b2e..7f8b6bedeedd3e 100644 --- a/deps/npm/node_modules/tuf-js/dist/updater.js +++ b/deps/npm/node_modules/tuf-js/dist/updater.js @@ -24,13 +24,13 @@ var __importStar = (this && this.__importStar) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Updater = void 0; +const models_1 = require("@tufjs/models"); const fs = __importStar(require("fs")); const path = __importStar(require("path")); +const config_1 = require("./config"); const error_1 = require("./error"); const fetcher_1 = require("./fetcher"); const store_1 = require("./store"); -const config_1 = require("./utils/config"); -const types_1 = require("./utils/types"); class Updater { constructor(options) { const { metadataDir, metadataBaseUrl, targetDir, targetBaseUrl, fetcher, config, } = options; @@ -38,12 +38,12 @@ class Updater { this.metadataBaseUrl = metadataBaseUrl; this.targetDir = targetDir; this.targetBaseUrl = targetBaseUrl; - const data = this.loadLocalMetadata(types_1.MetadataKind.Root); + const data = this.loadLocalMetadata(models_1.MetadataKind.Root); this.trustedSet = new store_1.TrustedMetadataStore(data); this.config = { ...config_1.defaultConfig, ...config }; this.fetcher = fetcher || - new fetcher_1.Fetcher({ + new fetcher_1.DefaultFetcher({ timeout: this.config.fetchTimeout, retries: this.config.fetchRetries, }); @@ -52,7 +52,7 @@ class Updater { await this.loadRoot(); await this.loadTimestamp(); await this.loadSnapshot(); - await this.loadTargets(types_1.MetadataKind.Targets, types_1.MetadataKind.Root); + await this.loadTargets(models_1.MetadataKind.Targets, models_1.MetadataKind.Root); } // Returns the TargetFile instance with information for the given target path. // @@ -123,7 +123,7 @@ class Updater { // Client workflow 5.3.4 - 5.4.7 this.trustedSet.updateRoot(bytesData); // Client workflow 5.3.8: persist root metadata file - this.persistMetadata(types_1.MetadataKind.Root, bytesData); + this.persistMetadata(models_1.MetadataKind.Root, bytesData); } catch (error) { break; @@ -135,7 +135,7 @@ class Updater { async loadTimestamp() { // Load local and remote timestamp metadata try { - const data = this.loadLocalMetadata(types_1.MetadataKind.Timestamp); + const data = this.loadLocalMetadata(models_1.MetadataKind.Timestamp); this.trustedSet.updateTimestamp(data); } catch (error) { @@ -159,14 +159,14 @@ class Updater { throw error; } // Client workflow 5.4.5: persist timestamp metadata - this.persistMetadata(types_1.MetadataKind.Timestamp, bytesData); + this.persistMetadata(models_1.MetadataKind.Timestamp, bytesData); } // Load local and remote snapshot metadata. // Client workflow 5.5: update snapshot role async loadSnapshot() { //Load local (and if needed remote) snapshot metadata try { - const data = this.loadLocalMetadata(types_1.MetadataKind.Snapshot); + const data = this.loadLocalMetadata(models_1.MetadataKind.Snapshot); this.trustedSet.updateSnapshot(data, true); } catch (error) { @@ -185,7 +185,7 @@ class Updater { // Client workflow 5.5.2 - 5.5.6 this.trustedSet.updateSnapshot(bytesData); // Client workflow 5.5.7: persist snapshot metadata file - this.persistMetadata(types_1.MetadataKind.Snapshot, bytesData); + this.persistMetadata(models_1.MetadataKind.Snapshot, bytesData); } catch (error) { throw new error_1.RuntimeError(`Unable to load snapshot metadata error ${error}`); @@ -236,8 +236,8 @@ class Updater { // is needed to load and verify the delegated targets metadata. const delegationsToVisit = [ { - roleName: types_1.MetadataKind.Targets, - parentRoleName: types_1.MetadataKind.Root, + roleName: models_1.MetadataKind.Targets, + parentRoleName: models_1.MetadataKind.Root, }, ]; const visitedRoleNames = new Set(); diff --git a/deps/npm/node_modules/tuf-js/dist/utils/index.d.ts b/deps/npm/node_modules/tuf-js/dist/utils/index.d.ts deleted file mode 100644 index e2232bc5cceab8..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/utils/index.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * as config from './config'; -export * as guard from './guard'; -export * as json from './json'; -export * as signer from './signer'; -export * as types from './types'; diff --git a/deps/npm/node_modules/tuf-js/dist/utils/types.js b/deps/npm/node_modules/tuf-js/dist/utils/types.js deleted file mode 100644 index 469f580743f652..00000000000000 --- a/deps/npm/node_modules/tuf-js/dist/utils/types.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MetadataKind = void 0; -var MetadataKind; -(function (MetadataKind) { - MetadataKind["Root"] = "root"; - MetadataKind["Timestamp"] = "timestamp"; - MetadataKind["Snapshot"] = "snapshot"; - MetadataKind["Targets"] = "targets"; -})(MetadataKind = exports.MetadataKind || (exports.MetadataKind = {})); diff --git a/deps/npm/node_modules/tuf-js/package.json b/deps/npm/node_modules/tuf-js/package.json index 758e71223e40f6..29436c760ff20f 100644 --- a/deps/npm/node_modules/tuf-js/package.json +++ b/deps/npm/node_modules/tuf-js/package.json @@ -1,56 +1,42 @@ { "name": "tuf-js", - "version": "1.0.0", + "version": "1.1.1", "description": "JavaScript implementation of The Update Framework (TUF)", "main": "dist/index.js", "types": "dist/index.d.ts", "scripts": { - "build": "tsc", - "test": "jest", - "test:watch": "jest --watch", - "test:ci": "jest --maxWorkers=2 --coverage", - "lint": "eslint --fix --ext .ts src/**", - "lint:check": "eslint --max-warnings 0 --ext .ts src/**", - "format": "prettier --write \"src/**/*\"" + "build": "tsc --build", + "clean": "rm -rf dist", + "test": "jest" }, "repository": { "type": "git", - "url": "git+https://github.com/github/tuf-js.git" + "url": "git+https://github.com/theupdateframework/tuf-js.git" }, "files": [ "dist" ], "keywords": [ - "tuf" + "tuf", + "security", + "update" ], "author": "bdehamer@github.com", "license": "MIT", "bugs": { - "url": "https://github.com/github/tuf-js/issues" + "url": "https://github.com/theupdateframework/tuf-js/issues" }, - "homepage": "https://github.com/github/tuf-js#readme", + "homepage": "https://github.com/theupdateframework/tuf-js/packages/client#readme", "devDependencies": { - "@tsconfig/node14": "^1.0.3", - "@types/jest": "^28.1.8", - "@types/lodash.isequal": "^4.5.6", + "@tufjs/repo-mock": "1.0.0", "@types/make-fetch-happen": "^10.0.1", - "@types/minimatch": "^5.1.2", - "@types/node": "^18.11.10", - "@typescript-eslint/eslint-plugin": "^5.45.0", - "@typescript-eslint/parser": "^5.45.0", - "eslint": "^8.28.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.2.1", - "http-server": "^14.1.1", - "jest": "^28.1.3", + "@types/node": "^18.14.5", "nock": "^13.2.9", - "prettier": "^2.8.0", - "ts-jest": "^28.0.8", - "typescript": "^4.9.3" + "typescript": "^4.9.5" }, "dependencies": { "make-fetch-happen": "^11.0.1", - "minimatch": "^6.1.0" + "@tufjs/models": "1.0.0" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" diff --git a/deps/npm/package.json b/deps/npm/package.json index 851d7de8b80134..bfd702e4e7afe8 100644 --- a/deps/npm/package.json +++ b/deps/npm/package.json @@ -1,5 +1,5 @@ { - "version": "9.5.1", + "version": "9.6.2", "name": "npm", "description": "a package manager for JavaScript", "workspaces": [ @@ -53,8 +53,8 @@ }, "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^6.2.3", - "@npmcli/config": "^6.1.3", + "@npmcli/arborist": "^6.2.5", + "@npmcli/config": "^6.1.4", "@npmcli/map-workspaces": "^3.0.2", "@npmcli/package-json": "^3.0.0", "@npmcli/run-script": "^6.0.0", @@ -76,19 +76,19 @@ "is-cidr": "^4.0.2", "json-parse-even-better-errors": "^3.0.0", "libnpmaccess": "^7.0.2", - "libnpmdiff": "^5.0.11", - "libnpmexec": "^5.0.11", - "libnpmfund": "^4.0.11", + "libnpmdiff": "^5.0.13", + "libnpmexec": "^5.0.13", + "libnpmfund": "^4.0.13", "libnpmhook": "^9.0.3", "libnpmorg": "^5.0.3", - "libnpmpack": "^5.0.11", - "libnpmpublish": "^7.1.0", + "libnpmpack": "^5.0.13", + "libnpmpublish": "^7.1.2", "libnpmsearch": "^6.0.2", "libnpmteam": "^5.0.3", "libnpmversion": "^4.0.2", "make-fetch-happen": "^11.0.3", "minimatch": "^6.2.0", - "minipass": "^4.0.3", + "minipass": "^4.2.4", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", "node-gyp": "^9.3.1", @@ -194,7 +194,7 @@ "@npmcli/git": "^4.0.1", "@npmcli/mock-registry": "^1.0.0", "@npmcli/promise-spawn": "^6.0.2", - "@npmcli/template-oss": "4.11.4", + "@npmcli/template-oss": "4.12.0", "licensee": "^10.0.0", "nock": "^13.3.0", "npm-packlist": "^7.0.4", @@ -248,7 +248,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.4", + "version": "4.12.0", "content": "./scripts/template-oss/root.js" }, "license": "Artistic-2.0", diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs index dfd287eaa69648..270d9b631ee55e 100644 --- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs +++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs @@ -384,7 +384,7 @@ Object { "c": "config", "cit": "install-ci-test", "clean-install": "ci", - "clean-install-test": "cit", + "clean-install-test": "install-ci-test", "create": "init", "ddp": "dedupe", "dist-tags": "dist-tag", @@ -421,7 +421,7 @@ Object { "s": "search", "se": "search", "show": "view", - "sit": "cit", + "sit": "install-ci-test", "t": "test", "tst": "test", "udpate": "update", @@ -3239,14 +3239,14 @@ Options: [-w|--workspace [-w|--workspace ...]] [-ws|--workspaces] [--include-workspace-root] [--install-links] -alias: cit +aliases: cit, clean-install-test, sit Run "npm help install-ci-test" for more info \`\`\`bash npm install-ci-test -alias: cit +aliases: cit, clean-install-test, sit \`\`\` #### \`save\` diff --git a/deps/npm/test/lib/commands/access.js b/deps/npm/test/lib/commands/access.js index b0057545ba0268..d1839aaaef2199 100644 --- a/deps/npm/test/lib/commands/access.js +++ b/deps/npm/test/lib/commands/access.js @@ -30,6 +30,7 @@ t.test('completion', async t => { ]) testComp(['npm', 'access', 'grant'], ['read-only', 'read-write']) testComp(['npm', 'access', 'revoke'], []) + testComp(['npm', 'access', 'grant', ''], []) await t.rejects( access.completion({ conf: { argv: { remain: ['npm', 'access', 'foobar'] } } }), @@ -70,10 +71,16 @@ t.test('grant', t => { }) t.test('read-only', async t => { - const { npm } = await loadMockNpm(t) + const authToken = 'abcd1234' + const { npm } = await loadMockNpm(t, { + config: { + '//registry.npmjs.org/:_authToken': authToken, + }, + }) const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry'), + authorization: authToken, }) const permissions = 'read-only' registry.setPermissions({ spec: '@npmcli/test-package', team: '@npm:test-team', permissions }) @@ -84,10 +91,16 @@ t.test('grant', t => { t.test('revoke', t => { t.test('success', async t => { - const { npm } = await loadMockNpm(t) + const authToken = 'abcd1234' + const { npm } = await loadMockNpm(t, { + config: { + '//registry.npmjs.org/:_authToken': authToken, + }, + }) const registry = new MockRegistry({ tap: t, registry: npm.config.get('registry'), + authorization: authToken, }) registry.removePermissions({ spec: '@npmcli/test-package', team: '@npm:test-team' }) await npm.exec('access', ['revoke', '@npm:test-team', '@npmcli/test-package']) diff --git a/deps/npm/test/lib/commands/run-script.js b/deps/npm/test/lib/commands/run-script.js index a265db3cc040da..6e2bf22adddcf8 100644 --- a/deps/npm/test/lib/commands/run-script.js +++ b/deps/npm/test/lib/commands/run-script.js @@ -34,12 +34,12 @@ const mockRs = async (t, { windows = false, runScript, ...opts } = {}) => { } t.test('completion', async t => { - const completion = async (t, remain, pkg) => { + const completion = async (t, remain, pkg, isFish = false) => { const { npm } = await mockRs(t, pkg ? { prefixDir: { 'package.json': JSON.stringify(pkg) } } : {} ) const cmd = await npm.cmd('run-script') - return cmd.completion({ conf: { argv: { remain } } }) + return cmd.completion({ conf: { argv: { remain } }, isFish }) } t.test('already have a script name', async t => { @@ -60,6 +60,13 @@ t.test('completion', async t => { }) t.strictSame(res, ['hello', 'world']) }) + + t.test('fish shell', async t => { + const res = await completion(t, ['npm', 'run'], { + scripts: { hello: 'echo hello', world: 'echo world' }, + }, true) + t.strictSame(res, ['hello\techo hello', 'world\techo world']) + }) }) t.test('fail if no package.json', async t => { diff --git a/deps/npm/test/lib/utils/audit-error.js b/deps/npm/test/lib/utils/audit-error.js index 46a9dbc38cd7d3..1cb29a0857d752 100644 --- a/deps/npm/test/lib/utils/audit-error.js +++ b/deps/npm/test/lib/utils/audit-error.js @@ -87,7 +87,7 @@ t.test('error, audit command, json', async t => { message: 'message', body: { response: 'body' }, method: 'POST', - uri: 'https://example.com/not/a/registry', + uri: 'https://username:password@example.com/not/a/registry', headers: { head: ['ers'], }, @@ -101,7 +101,7 @@ t.test('error, audit command, json', async t => { '{\n' + ' "message": "message",\n' + ' "method": "POST",\n' + - ' "uri": "https://example.com/not/a/registry",\n' + + ' "uri": "https://username:***@example.com/not/a/registry",\n' + ' "headers": {\n' + ' "head": [\n' + ' "ers"\n' + From da3d52370e9ed2d420ed339b5f4bfec6d6b2fcf5 Mon Sep 17 00:00:00 2001 From: Chemi Atlow Date: Tue, 28 Mar 2023 15:10:34 +0300 Subject: [PATCH 060/131] test_runner: expose reporter for use in run api PR-URL: https://github.com/nodejs/node/pull/47238 Fixes: https://github.com/nodejs/node/issues/47231 Reviewed-By: Moshe Atlow Reviewed-By: Benjamin Gruenbaum --- doc/api/test.md | 37 ++++++++++++++++++++++++++++-- lib/test/reporters.js | 38 +++++++++++++++++++++++++++++++ test/parallel/test-runner-run.mjs | 36 +++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 lib/test/reporters.js diff --git a/doc/api/test.md b/doc/api/test.md index 749b6ff08a5396..8026df5b2f3932 100644 --- a/doc/api/test.md +++ b/doc/api/test.md @@ -509,7 +509,13 @@ test('spies on an object method', (t) => { ## Test reporters The `node:test` module supports passing [`--test-reporter`][] @@ -531,6 +537,21 @@ The following built-reporters are supported: When `stdout` is a [TTY][], the `spec` reporter is used by default. Otherwise, the `tap` reporter is used by default. +The exact output of these reporters is subject to change between versions of +Node.js, and should not be relied on programmatically. If programmatic access +to the test runner's output is required, use the events emitted by the +{TestsStream}. + +The reporters are available via the `node:test/reporters` module: + +```mjs +import { tap, spec, dot } from 'node:test/reporters'; +``` + +```cjs +const { tap, spec, dot } = require('node:test/reporters'); +``` + ### Custom reporters [`--test-reporter`][] can be used to specify a path to custom reporter. @@ -722,8 +743,20 @@ added: v18.9.0 **Default:** `undefined`. * Returns: {TestsStream} -```js +```mjs +import { tap } from 'node:test/reporters'; +import process from 'node:process'; + +run({ files: [path.resolve('./tests/test.js')] }) + .compose(tap) + .pipe(process.stdout); +``` + +```cjs +const { tap } = require('node:test/reporters'); + run({ files: [path.resolve('./tests/test.js')] }) + .compose(tap) .pipe(process.stdout); ``` diff --git a/lib/test/reporters.js b/lib/test/reporters.js new file mode 100644 index 00000000000000..287c07510bc13a --- /dev/null +++ b/lib/test/reporters.js @@ -0,0 +1,38 @@ +'use strict'; + +const { ObjectDefineProperties } = primordials; + +let dot; +let spec; +let tap; + +ObjectDefineProperties(module.exports, { + __proto__: null, + dot: { + __proto__: null, + configurable: true, + enumerable: true, + get() { + dot ??= require('internal/test_runner/reporter/dot'); + return dot; + }, + }, + spec: { + __proto__: null, + configurable: true, + enumerable: true, + get() { + spec ??= require('internal/test_runner/reporter/spec'); + return spec; + }, + }, + tap: { + __proto__: null, + configurable: true, + enumerable: true, + get() { + tap ??= require('internal/test_runner/reporter/tap'); + return tap; + }, + }, +}); diff --git a/test/parallel/test-runner-run.mjs b/test/parallel/test-runner-run.mjs index 6ac007bfb5dd6c..b37bdf94f38c02 100644 --- a/test/parallel/test-runner-run.mjs +++ b/test/parallel/test-runner-run.mjs @@ -2,6 +2,7 @@ import * as common from '../common/index.mjs'; import * as fixtures from '../common/fixtures.mjs'; import { join } from 'node:path'; import { describe, it, run } from 'node:test'; +import { dot, spec, tap } from 'node:test/reporters'; import assert from 'node:assert'; const testFixtures = fixtures.path('test-runner'); @@ -65,4 +66,39 @@ describe('require(\'node:test\').run', { concurrency: true }, () => { code: 'ERR_INVALID_ARG_TYPE' })); }); + + it('should be piped with dot', async () => { + const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(dot).toArray(); + assert.deepStrictEqual(result, [ + '.', + '\n', + ]); + }); + + it('should be piped with spec', async () => { + const specReporter = new spec(); + const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(specReporter).toArray(); + const stringResults = result.map((bfr) => bfr.toString()); + assert.match(stringResults[0], /this should pass/); + assert.match(stringResults[1], /tests 1/); + assert.match(stringResults[1], /pass 1/); + }); + + it('should be piped with tap', async () => { + const result = await run({ files: [join(testFixtures, 'test/random.cjs')] }).compose(tap).toArray(); + assert.strictEqual(result.length, 13); + assert.strictEqual(result[0], 'TAP version 13\n'); + assert.strictEqual(result[1], '# Subtest: this should pass\n'); + assert.strictEqual(result[2], 'ok 1 - this should pass\n'); + assert.match(result[3], /duration_ms: \d+\.?\d*/); + assert.strictEqual(result[4], '1..1\n'); + assert.strictEqual(result[5], '# tests 1\n'); + assert.strictEqual(result[6], '# suites 0\n'); + assert.strictEqual(result[7], '# pass 1\n'); + assert.strictEqual(result[8], '# fail 0\n'); + assert.strictEqual(result[9], '# cancelled 0\n'); + assert.strictEqual(result[10], '# skipped 0\n'); + assert.strictEqual(result[11], '# todo 0\n'); + assert.match(result[12], /# duration_ms \d+\.?\d*/); + }); }); From f80697dcae1efc4b4738ad0ef1fb24df046fb0ca Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Thu, 23 Mar 2023 15:53:16 -0400 Subject: [PATCH 061/131] src: fix some recently introduced coverity issues Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/47240 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- src/dataqueue/queue.cc | 4 ++-- test/embedding/embedtest.cc | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dataqueue/queue.cc b/src/dataqueue/queue.cc index 260c70ebbf2d98..3eabf425339de5 100644 --- a/src/dataqueue/queue.cc +++ b/src/dataqueue/queue.cc @@ -787,7 +787,7 @@ class FdEntry final : public EntryImpl { public: static std::unique_ptr Create(Environment* env, Local path) { // We're only going to create the FdEntry if the file exists. - uv_fs_t req; + uv_fs_t req = uv_fs_t(); auto cleanup = OnScopeLeave([&] { uv_fs_req_cleanup(&req); }); auto buf = std::make_shared(env->isolate(), path); @@ -849,7 +849,7 @@ class FdEntry final : public EntryImpl { } static bool CheckModified(FdEntry* entry, int fd) { - uv_fs_t req; + uv_fs_t req = uv_fs_t(); auto cleanup = OnScopeLeave([&] { uv_fs_req_cleanup(&req); }); // TODO(jasnell): Note the use of a sync fs call here is a bit unfortunate. // Doing this asynchronously creates a bit of a race condition tho, a file diff --git a/test/embedding/embedtest.cc b/test/embedding/embedtest.cc index bd639368acdf86..3592ccb9813228 100644 --- a/test/embedding/embedtest.cc +++ b/test/embedding/embedtest.cc @@ -75,7 +75,7 @@ int RunNodeInstance(MultiIsolatePlatform* platform, if (snapshot_as_file_it != args.end()) { snapshot = node::EmbedderSnapshotData::FromFile(fp); } else { - uv_fs_t req; + uv_fs_t req = uv_fs_t(); int statret = uv_fs_stat(nullptr, &req, filename, nullptr); assert(statret == 0); size_t filesize = req.statbuf.st_size; From 70e2839ae0e38d9151db0a71a83e1d5b2806aefd Mon Sep 17 00:00:00 2001 From: Richard Lau Date: Thu, 23 Mar 2023 11:50:21 -0400 Subject: [PATCH 062/131] deps: V8: cherry-pick 3e4952cb2a59 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Original commit message: [test] fix uninitialized error In op1a.Equals(&op3) call, that->parameter() is undefined. which triggers uninitialized error from gcc. Change-Id: I87f1fcba3e57adbb5a1e745a3d787c62a87fd1d3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4307714 Commit-Queue: Toon Verwaest Reviewed-by: Toon Verwaest Cr-Commit-Position: refs/heads/main@{#86267} Refs: https://github.com/v8/v8/commit/3e4952cb2a5969e42e782a66b948dc0ee88c812e PR-URL: https://github.com/nodejs/node/pull/47236 Reviewed-By: Jiawen Geng Reviewed-By: Michaël Zasso --- common.gypi | 2 +- deps/v8/test/cctest/compiler/test-operator.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common.gypi b/common.gypi index 65720283c54109..b1d87780db54c3 100644 --- a/common.gypi +++ b/common.gypi @@ -36,7 +36,7 @@ # Reset this number to 0 on major V8 upgrades. # Increment by one for each non-official patch applied to deps/v8. - 'v8_embedder_string': '-node.11', + 'v8_embedder_string': '-node.12', ##### V8 defaults for Node.js ##### diff --git a/deps/v8/test/cctest/compiler/test-operator.cc b/deps/v8/test/cctest/compiler/test-operator.cc index 7428359223b015..33f0d537f3bc81 100644 --- a/deps/v8/test/cctest/compiler/test-operator.cc +++ b/deps/v8/test/cctest/compiler/test-operator.cc @@ -210,7 +210,7 @@ TEST(TestOperator1double_Equals) { CHECK(!op2b.Equals(&op1a)); CHECK(!op2b.Equals(&op1b)); - Operator op3(25, NONE, "Weepy", 0, 0, 0, 0, 0, 0); + Operator1 op3(25, NONE, "Weepy", 0, 0, 0, 0, 0, 0, 1.1); CHECK(!op1a.Equals(&op3)); CHECK(!op1b.Equals(&op3)); From 89a96604293f5218b0d337597c5aee0cf0efd864 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 28 Mar 2023 06:31:20 -0700 Subject: [PATCH 063/131] doc: fix typo in SECURITY.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/47282 Reviewed-By: Colin Ihrig Reviewed-By: Tobias Nießen Reviewed-By: Michael Dawson Reviewed-By: Luigi Pinca --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index 450335951b64cc..0ce5cc03e23c3c 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -193,7 +193,7 @@ the community they pose. * If Node.js is asked to connect to a remote site and return an artifact, it is not considered a vulnerability if the size of - that artifact is large enough to impact performance and or + that artifact is large enough to impact performance or cause the runtime to run out of resources. ## Receiving security updates From 810bac8fe0d4ccc02bee5edf33d0ac73ec1dc8cc Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Tue, 28 Mar 2023 11:50:38 -0700 Subject: [PATCH 064/131] tools: update codecov branch MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Codecov is still using the old default branch. Update it to "main", the current default branch. I'm not sure why it's not picking it up automatically or if there is a way to ask it to refresh, but setting it in codecov.yml should resolve the issue. PR-URL: https://github.com/nodejs/node/pull/47285 Reviewed-By: Richard Lau Reviewed-By: Moshe Atlow Reviewed-By: Tobias Nießen Reviewed-By: Michael Dawson Reviewed-By: Yagiz Nizipli --- codecov.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/codecov.yml b/codecov.yml index 462fb1e79f8b5b..8160a5e229130d 100644 --- a/codecov.yml +++ b/codecov.yml @@ -8,6 +8,7 @@ comment: false # require_changes: true codecov: + branch: main notify: # Wait for all coverage builds: after_n_builds: 2 From 67cfc5e1307193a84428fbe0902e2c0dd285af2f Mon Sep 17 00:00:00 2001 From: Marco Ippolito Date: Wed, 29 Mar 2023 10:27:33 +0200 Subject: [PATCH 065/131] tools: standardize base64 update PR-URL: https://github.com/nodejs/node/pull/47201 Refs: https://github.com/nodejs/security-wg/issues/828 Reviewed-By: Rafael Gonzaga --- .github/workflows/tools.yml | 11 ++--- tools/dep_updaters/update-base64.sh | 64 +++++++++++++++++++++++++++++ tools/update-base64.sh | 47 --------------------- 3 files changed, 68 insertions(+), 54 deletions(-) create mode 100755 tools/dep_updaters/update-base64.sh delete mode 100755 tools/update-base64.sh diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index 0b4e8c9f79ec86..e980654ae867d3 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -87,13 +87,10 @@ jobs: subsystem: deps label: dependencies run: | - NEW_VERSION=$(gh api repos/aklomp/base64/releases/latest -q '.tag_name|ltrimstr("v")') - CURRENT_VERSION=$(grep "base64 LANGUAGES C VERSION" ./deps/base64/base64/CMakeLists.txt | \ - sed -n "s/^.*VERSION \(.*\))/\1/p") - if [ "$NEW_VERSION" != "$CURRENT_VERSION" ]; then - echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV - ./tools/update-base64.sh "$NEW_VERSION" - fi + ./tools/dep_updaters/update-base64.sh > temp-output + cat temp-output + tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true + rm temp-output - id: acorn subsystem: deps label: dependencies diff --git a/tools/dep_updaters/update-base64.sh b/tools/dep_updaters/update-base64.sh new file mode 100755 index 00000000000000..05d1c58402d1d6 --- /dev/null +++ b/tools/dep_updaters/update-base64.sh @@ -0,0 +1,64 @@ +#!/bin/sh +set -e +# Shell script to update base64 in the source tree to a specific version + +BASE_DIR=$(cd "$(dirname "$0")/../.." && pwd) +DEPS_DIR="$BASE_DIR/deps" + +[ -z "$NODE" ] && NODE="$BASE_DIR/out/Release/node" +[ -x "$NODE" ] || NODE=$(command -v node) + +NEW_VERSION="$("$NODE" --input-type=module <<'EOF' +const res = await fetch('https://api.github.com/repos/aklomp/base64/releases/latest'); +if (!res.ok) throw new Error(`FetchError: ${res.status} ${res.statusText}`, { cause: res }); +const { tag_name } = await res.json(); +console.log(tag_name.replace('v', '')); +EOF +)" + +CURRENT_VERSION=$(grep "base64 LANGUAGES C VERSION" ./deps/base64/base64/CMakeLists.txt | sed -n "s/^.*VERSION \(.*\))/\1/p") + +echo "Comparing $NEW_VERSION with $CURRENT_VERSION" + +if [ "$NEW_VERSION" = "$CURRENT_VERSION" ]; then + echo "Skipped because base64 is on the latest version." + exit 0 +fi + +echo "Making temporary workspace" + +WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') + +cleanup () { + EXIT_CODE=$? + [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" + exit $EXIT_CODE +} + +trap cleanup INT TERM EXIT + +cd "$WORKSPACE" + +echo "Fetching base64 source archive" +curl -sL "https://api.github.com/repos/aklomp/base64/tarball/v$NEW_VERSION" | tar xzf - +mv aklomp-base64-* base64 + +echo "Replacing existing base64" +rm -rf "$DEPS_DIR/base64/base64" +mv "$WORKSPACE/base64" "$DEPS_DIR/base64/" + +# Build configuration is handled by `deps/base64/base64.gyp`, but since `config.h` has to be present for the build +# to work, we create it and leave it empty. +echo "// Intentionally empty" >> "$DEPS_DIR/base64/base64/lib/config.h" + +echo "All done!" +echo "" +echo "Please git add base64/base64, commit the new version:" +echo "" +echo "$ git add -A deps/base64/base64" +echo "$ git commit -m \"deps: update base64 to $NEW_VERSION\"" +echo "" + +# The last line of the script should always print the new version, +# as we need to add it to $GITHUB_ENV variable. +echo "NEW_VERSION=$NEW_VERSION" diff --git a/tools/update-base64.sh b/tools/update-base64.sh deleted file mode 100755 index 50b8da7adb867c..00000000000000 --- a/tools/update-base64.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/bin/sh -set -e -# Shell script to update base64 in the source tree to a specific version - -BASE_DIR=$(cd "$(dirname "$0")/.." && pwd) -DEPS_DIR="$BASE_DIR/deps" -BASE64_VERSION=$1 - -if [ "$#" -le 0 ]; then - echo "Error: please provide an base64 version to update to" - echo " e.g. $0 0.4.0" - exit 1 -fi - -echo "Making temporary workspace" - -WORKSPACE=$(mktemp -d 2> /dev/null || mktemp -d -t 'tmp') - -cleanup () { - EXIT_CODE=$? - [ -d "$WORKSPACE" ] && rm -rf "$WORKSPACE" - exit $EXIT_CODE -} - -trap cleanup INT TERM EXIT - -cd "$WORKSPACE" - -echo "Fetching base64 source archive" -curl -sL "https://api.github.com/repos/aklomp/base64/tarball/v$BASE64_VERSION" | tar xzf - -mv aklomp-base64-* base64 - -echo "Replacing existing base64" -rm -rf "$DEPS_DIR/base64/base64" -mv "$WORKSPACE/base64" "$DEPS_DIR/base64/" - -# Build configuration is handled by `deps/base64/base64.gyp`, but since `config.h` has to be present for the build -# to work, we create it and leave it empty. -echo "// Intentionally empty" >> "$DEPS_DIR/base64/base64/lib/config.h" - -echo "All done!" -echo "" -echo "Please git add base64/base64, commit the new version:" -echo "" -echo "$ git add -A deps/base64/base64" -echo "$ git commit -m \"deps: update base64 to $BASE64_VERSION\"" -echo "" From b0217b774482b79595d870372918079d777f3579 Mon Sep 17 00:00:00 2001 From: Gabriela Gutierrez Date: Wed, 29 Mar 2023 09:02:23 +0000 Subject: [PATCH 066/131] tools: pin actions by hash for auto-start-ci.yml Signed-off-by: Gabriela Gutierrez PR-URL: https://github.com/nodejs/node/pull/46820 Reviewed-By: Yongsheng Zhang Reviewed-By: James M Snell Reviewed-By: Michael Dawson Reviewed-By: Rafael Gonzaga --- .github/workflows/auto-start-ci.yml | 4 +-- .github/workflows/build-tarball.yml | 12 +++---- .github/workflows/build-windows.yml | 4 +-- .../close-stale-feature-requests.yml | 2 +- .github/workflows/close-stalled.yml | 2 +- .github/workflows/commit-lint.yml | 4 +-- .github/workflows/commit-queue.yml | 4 +-- .../workflows/coverage-linux-without-intl.yml | 6 ++-- .github/workflows/coverage-windows.yml | 6 ++-- .github/workflows/daily-wpt-fyi.yml | 10 +++--- .github/workflows/daily.yml | 4 +-- .github/workflows/doc.yml | 6 ++-- .../workflows/find-inactive-collaborators.yml | 4 +-- .github/workflows/find-inactive-tsc.yml | 6 ++-- .github/workflows/label-pr.yml | 2 +- .github/workflows/license-builder.yml | 2 +- .github/workflows/linters.yml | 32 +++++++++---------- .github/workflows/test-asan.yml | 4 +-- .github/workflows/test-internet.yml | 4 +-- .github/workflows/test-linux.yml | 4 +-- .github/workflows/test-macos.yml | 4 +-- .github/workflows/timezone-update.yml | 4 +-- .github/workflows/tools.yml | 2 +- 23 files changed, 66 insertions(+), 66 deletions(-) diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml index 840d4afe942f1e..4cb5d49fe77324 100644 --- a/.github/workflows/auto-start-ci.yml +++ b/.github/workflows/auto-start-ci.yml @@ -46,12 +46,12 @@ jobs: if: needs.get-prs-for-ci.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml index 12d5e2794091cd..235a48fa5343c9 100644 --- a/.github/workflows/build-tarball.yml +++ b/.github/workflows/build-tarball.yml @@ -39,11 +39,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -57,7 +57,7 @@ jobs: mkdir tarballs mv *.tar.gz tarballs - name: Upload tarball artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: tarballs path: tarballs @@ -65,17 +65,17 @@ jobs: needs: build-tarball runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information run: npx envinfo - name: Download tarball - uses: actions/download-artifact@v3 + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: name: tarballs path: tarballs diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 64eb7ddad23988..32025677b7f112 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -38,11 +38,11 @@ jobs: fail-fast: false runs-on: ${{ matrix.windows }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install deps diff --git a/.github/workflows/close-stale-feature-requests.yml b/.github/workflows/close-stale-feature-requests.yml index f8eef7ce35d84e..0afed4b819a056 100644 --- a/.github/workflows/close-stale-feature-requests.yml +++ b/.github/workflows/close-stale-feature-requests.yml @@ -39,7 +39,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b # v7.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-stale: 180 diff --git a/.github/workflows/close-stalled.yml b/.github/workflows/close-stalled.yml index 6eadfae6dd2481..b83df24780bf9f 100644 --- a/.github/workflows/close-stalled.yml +++ b/.github/workflows/close-stalled.yml @@ -20,7 +20,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/stale@v7 + - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b # v7.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-close: 30 diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml index 617e434e40404d..1dcc459b24687b 100644 --- a/.github/workflows/commit-lint.yml +++ b/.github/workflows/commit-lint.yml @@ -17,13 +17,13 @@ jobs: run: | echo "plusOne=$((${{ github.event.pull_request.commits }} + 1))" >> $GITHUB_OUTPUT echo "minusOne=$((${{ github.event.pull_request.commits }} - 1))" >> $GITHUB_OUTPUT - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: ${{ steps.nb-of-commits.outputs.plusOne }} persist-credentials: false - run: git reset HEAD^2 - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Validate commit message diff --git a/.github/workflows/commit-queue.yml b/.github/workflows/commit-queue.yml index 59ab3d2ce64263..c469c8810daada 100644 --- a/.github/workflows/commit-queue.yml +++ b/.github/workflows/commit-queue.yml @@ -58,7 +58,7 @@ jobs: if: needs.get_mergeable_prs.outputs.numbers != '' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: # Needs the whole git history for ncu to work # See https://github.com/nodejs/node-core-utils/pull/486 @@ -71,7 +71,7 @@ jobs: # Install dependencies - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Install node-core-utils diff --git a/.github/workflows/coverage-linux-without-intl.yml b/.github/workflows/coverage-linux-without-intl.yml index f718c5c7773026..88c1338028a4f3 100644 --- a/.github/workflows/coverage-linux-without-intl.yml +++ b/.github/workflows/coverage-linux-without-intl.yml @@ -37,11 +37,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -64,6 +64,6 @@ jobs: - name: Clean tmp run: rm -rf coverage/tmp && rm -rf out - name: Upload - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: directory: ./coverage diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml index 3dd8d01565c8cb..04ff310d2f0216 100644 --- a/.github/workflows/coverage-windows.yml +++ b/.github/workflows/coverage-windows.yml @@ -39,11 +39,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: windows-2022 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install deps @@ -65,6 +65,6 @@ jobs: - name: Clean tmp run: npx rimraf ./coverage/tmp - name: Upload - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3.1.1 with: directory: ./coverage diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml index 386f4eab2e222d..0e2c3df9fcbacb 100644 --- a/.github/workflows/daily-wpt-fyi.yml +++ b/.github/workflows/daily-wpt-fyi.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -45,7 +45,7 @@ jobs: run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-x64"))][0].version')" >> $GITHUB_ENV - name: Install Node.js id: setup-node - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NIGHTLY || matrix.node-version }} check-latest: true @@ -57,7 +57,7 @@ jobs: SHORT_SHA=$(node -p 'process.version.split(/-nightly\d{8}/)[1]') echo "NIGHTLY_REF=$(gh api /repos/nodejs/node/commits/$SHORT_SHA --jq '.sha')" >> $GITHUB_ENV - name: Checkout ${{ steps.setup-node.outputs.node-version }} - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false ref: ${{ env.NIGHTLY_REF || steps.setup-node.outputs.node-version }} @@ -73,7 +73,7 @@ jobs: run: rm -rf wpt working-directory: test/fixtures - name: Checkout epochs/daily WPT - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: repository: web-platform-tests/wpt persist-credentials: false @@ -121,7 +121,7 @@ jobs: run: cp wptreport.json wptreport-${{ steps.setup-node.outputs.node-version }}.json - name: Upload GitHub Actions artifact if: ${{ env.WPT_REPORT != '' }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: path: out/wpt/wptreport-*.json name: WPT Reports diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml index f14bde4c7fb629..0c23505bf0ac07 100644 --- a/.github/workflows/daily.yml +++ b/.github/workflows/daily.yml @@ -17,11 +17,11 @@ jobs: # not working on gcc-8 and gcc-9 see https://github.com/nodejs/node/issues/38570 container: gcc:11 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 76660343ca2f46..0c24159658c620 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -24,18 +24,18 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information run: npx envinfo - name: Build run: NODE=$(command -v node) make doc-only - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: docs path: out/doc diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml index 33b63389934f5e..d03e994c2a487f 100644 --- a/.github/workflows/find-inactive-collaborators.yml +++ b/.github/workflows/find-inactive-collaborators.yml @@ -19,13 +19,13 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml index eee9fa539fb2a5..15ccfd5dd82c84 100644 --- a/.github/workflows/find-inactive-tsc.yml +++ b/.github/workflows/find-inactive-tsc.yml @@ -20,13 +20,13 @@ jobs: steps: - name: Checkout the repo - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 persist-credentials: false - name: Clone nodejs/TSC repository - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 path: .tmp @@ -34,7 +34,7 @@ jobs: repository: nodejs/TSC - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} diff --git a/.github/workflows/label-pr.yml b/.github/workflows/label-pr.yml index 922a9359f5ed20..95fdd42a4c700a 100644 --- a/.github/workflows/label-pr.yml +++ b/.github/workflows/label-pr.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: nodejs/node-pr-labeler@v1 + - uses: nodejs/node-pr-labeler@d4cf1b8b9f23189c37917000e5e17e796c770a6b # v1 with: repo-token: ${{ secrets.GH_USER_TOKEN }} configuration-path: .github/label-pr-config.yml diff --git a/.github/workflows/license-builder.yml b/.github/workflows/license-builder.yml index a6732b149c01f5..830865ac3d0e85 100644 --- a/.github/workflows/license-builder.yml +++ b/.github/workflows/license-builder.yml @@ -17,7 +17,7 @@ jobs: if: github.repository == 'nodejs/node' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - run: ./tools/license-builder.sh # Run the license builder tool diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml index c9b8f08f99e4a4..96eb4604a20b70 100644 --- a/.github/workflows/linters.yml +++ b/.github/workflows/linters.yml @@ -25,11 +25,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -40,11 +40,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -55,16 +55,16 @@ jobs: if: ${{ github.event.pull_request && github.event.pull_request.draft == false && github.base_ref == github.event.repository.default_branch }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 0 persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -93,11 +93,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v3 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: ${{ env.NODE_VERSION }} - name: Environment Information @@ -118,11 +118,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -135,11 +135,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Use Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information @@ -153,7 +153,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - run: shellcheck -V @@ -163,7 +163,7 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - uses: mszostok/codeowners-validator@7f3f5e28c6d7b8dfae5731e54ce2272ca384592f @@ -173,7 +173,7 @@ jobs: if: ${{ github.event.pull_request }} runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: fetch-depth: 2 persist-credentials: false diff --git a/.github/workflows/test-asan.yml b/.github/workflows/test-asan.yml index fc8d38945dd397..892bcff481a52f 100644 --- a/.github/workflows/test-asan.yml +++ b/.github/workflows/test-asan.yml @@ -47,11 +47,11 @@ jobs: CONFIG_FLAGS: --enable-asan ASAN: true steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml index 236d76741be40b..3ecbc5442547da 100644 --- a/.github/workflows/test-internet.yml +++ b/.github/workflows/test-internet.yml @@ -32,11 +32,11 @@ jobs: if: github.repository == 'nodejs/node' || github.event_name != 'schedule' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml index 2a1614e7e8cba1..4c8c0787bf4b0f 100644 --- a/.github/workflows/test-linux.yml +++ b/.github/workflows/test-linux.yml @@ -34,11 +34,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml index c09004cbe422c7..9e9bb3e1b45475 100644 --- a/.github/workflows/test-macos.yml +++ b/.github/workflows/test-macos.yml @@ -40,11 +40,11 @@ jobs: if: github.event.pull_request.draft == false runs-on: macos-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Set up Python ${{ env.PYTHON_VERSION }} - uses: actions/setup-python@v4 + uses: actions/setup-python@d27e3f3d7c64b4bbf8e4abfb9b63b83e846e0435 # v4.5.0 with: python-version: ${{ env.PYTHON_VERSION }} - name: Environment Information diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml index a28434f2d9be74..0c6b6f5fafd92c 100644 --- a/.github/workflows/timezone-update.yml +++ b/.github/workflows/timezone-update.yml @@ -20,12 +20,12 @@ jobs: steps: - name: Checkout nodejs/node - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - name: Checkout unicode-org/icu-data - uses: actions/checkout@v3 + uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: path: icu-data persist-credentials: false diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml index e980654ae867d3..c608ae7956d637 100644 --- a/.github/workflows/tools.yml +++ b/.github/workflows/tools.yml @@ -160,7 +160,7 @@ jobs: tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true rm temp-output steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0 with: persist-credentials: false - run: ${{ matrix.run }} From 3c49422033753b23635b9f055d456cdb0907d704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 29 Mar 2023 13:58:19 +0200 Subject: [PATCH 067/131] test: skip instantiateStreaming-bad-imports WPT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This test is flaky on ARM with V8 >= 11.2. Skip it so we can update V8 before the release of Nodejs 20.0.0. PR-URL: https://github.com/nodejs/node/pull/47292 Refs: https://github.com/nodejs/node/pull/46815 Reviewed-By: Rafael Gonzaga Reviewed-By: Moshe Atlow Reviewed-By: Jiawen Geng Reviewed-By: Debadree Chatterjee Reviewed-By: Filip Skokan Reviewed-By: Tobias Nießen Reviewed-By: Darshan Sen --- test/wpt/status/wasm/webapi.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/wpt/status/wasm/webapi.json b/test/wpt/status/wasm/webapi.json index 6328e55dc18bc9..3e2075655e5af2 100644 --- a/test/wpt/status/wasm/webapi.json +++ b/test/wpt/status/wasm/webapi.json @@ -16,5 +16,8 @@ }, "status.any.js": { "skip": "WPTRunner does not support fetch()" + }, + "instantiateStreaming-bad-imports.any.js": { + "skip": "Flaky on ARM with V8 >= 11.2" } } From 56296a7270e255ebe3d52a026a1aa1bc2731b260 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Wed, 22 Mar 2023 15:13:13 +0100 Subject: [PATCH 068/131] bootstrap: store internal loaders in C++ via a binding Instead of returning the internal loaders from the bootstrap script, we can simply call a binding to store them in C++. This eliminates the need for specializing the handling of this script. PR-URL: https://github.com/nodejs/node/pull/47215 Reviewed-By: Chengzhong Wu --- lib/internal/bootstrap/loaders.js | 5 +++-- src/node_builtins.cc | 12 +++++++++++ src/node_realm.cc | 33 ++----------------------------- src/node_realm.h | 1 - 4 files changed, 17 insertions(+), 34 deletions(-) diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/loaders.js index 50e8b8702de6f1..a0a48e6c451dd7 100644 --- a/lib/internal/bootstrap/loaders.js +++ b/lib/internal/bootstrap/loaders.js @@ -182,6 +182,7 @@ const loaderId = 'internal/bootstrap/loaders'; const { builtinIds, compileFunction, + setInternalLoaders, } = internalBinding('builtins'); const getOwn = (target, property, receiver) => { @@ -373,5 +374,5 @@ function requireWithFallbackInDeps(request) { return requireBuiltin(request); } -// Pass the exports back to C++ land for C++ internals to use. -return loaderExports; +// Store the internal loaders in C++. +setInternalLoaders(internalBinding, requireBuiltin); diff --git a/src/node_builtins.cc b/src/node_builtins.cc index 0350c80ee44026..89d278893e9d60 100644 --- a/src/node_builtins.cc +++ b/src/node_builtins.cc @@ -662,6 +662,16 @@ void BuiltinLoader::HasCachedBuiltins(const FunctionCallbackInfo& args) { args.GetIsolate(), instance->code_cache_->has_code_cache)); } +void SetInternalLoaders(const FunctionCallbackInfo& args) { + Realm* realm = Realm::GetCurrent(args); + CHECK(args[0]->IsFunction()); + CHECK(args[1]->IsFunction()); + DCHECK(realm->internal_binding_loader().IsEmpty()); + DCHECK(realm->builtin_module_require().IsEmpty()); + realm->set_internal_binding_loader(args[0].As()); + realm->set_builtin_module_require(args[1].As()); +} + void BuiltinLoader::CopySourceAndCodeCacheReferenceFrom( const BuiltinLoader* other) { code_cache_ = other->code_cache_; @@ -700,6 +710,7 @@ void BuiltinLoader::CreatePerIsolateProperties(IsolateData* isolate_data, SetMethod(isolate, proto, "getCacheUsage", BuiltinLoader::GetCacheUsage); SetMethod(isolate, proto, "compileFunction", BuiltinLoader::CompileFunction); SetMethod(isolate, proto, "hasCachedBuiltins", HasCachedBuiltins); + SetMethod(isolate, proto, "setInternalLoaders", SetInternalLoaders); } void BuiltinLoader::CreatePerContextProperties(Local target, @@ -718,6 +729,7 @@ void BuiltinLoader::RegisterExternalReferences( registry->Register(GetCacheUsage); registry->Register(CompileFunction); registry->Register(HasCachedBuiltins); + registry->Register(SetInternalLoaders); } } // namespace builtins diff --git a/src/node_realm.cc b/src/node_realm.cc index a8cd9b9a55da2f..6a0876fa6dc87c 100644 --- a/src/node_realm.cc +++ b/src/node_realm.cc @@ -10,7 +10,6 @@ namespace node { using v8::Context; using v8::EscapableHandleScope; -using v8::Function; using v8::HandleScope; using v8::Local; using v8::MaybeLocal; @@ -174,42 +173,14 @@ MaybeLocal Realm::ExecuteBootstrapper(const char* id) { return scope.EscapeMaybe(result); } -MaybeLocal Realm::BootstrapInternalLoaders() { - EscapableHandleScope scope(isolate_); - - // Bootstrap internal loaders - Local loader_exports; - if (!ExecuteBootstrapper("internal/bootstrap/loaders") - .ToLocal(&loader_exports)) { - return MaybeLocal(); - } - CHECK(loader_exports->IsObject()); - Local loader_exports_obj = loader_exports.As(); - Local internal_binding_loader = - loader_exports_obj->Get(context(), env_->internal_binding_string()) - .ToLocalChecked(); - CHECK(internal_binding_loader->IsFunction()); - set_internal_binding_loader(internal_binding_loader.As()); - Local require = - loader_exports_obj->Get(context(), env_->require_string()) - .ToLocalChecked(); - CHECK(require->IsFunction()); - set_builtin_module_require(require.As()); - - return scope.Escape(loader_exports); -} - MaybeLocal Realm::RunBootstrapping() { EscapableHandleScope scope(isolate_); CHECK(!has_run_bootstrapping_code()); - if (BootstrapInternalLoaders().IsEmpty()) { - return MaybeLocal(); - } - Local result; - if (!BootstrapRealm().ToLocal(&result)) { + if (!ExecuteBootstrapper("internal/bootstrap/loaders").ToLocal(&result) || + !BootstrapRealm().ToLocal(&result)) { return MaybeLocal(); } diff --git a/src/node_realm.h b/src/node_realm.h index 73ab1718e002de..4bff386baff227 100644 --- a/src/node_realm.h +++ b/src/node_realm.h @@ -129,7 +129,6 @@ class Realm : public MemoryRetainer { protected: ~Realm(); - v8::MaybeLocal BootstrapInternalLoaders(); virtual v8::MaybeLocal BootstrapRealm() = 0; Environment* env_; From 91d5c0e7496524e35d5bcbab295104d03de8b11d Mon Sep 17 00:00:00 2001 From: Robert Nagy Date: Wed, 29 Mar 2023 20:02:10 +0200 Subject: [PATCH 069/131] stream: add setter & getter for default highWaterMark (#46929) Adds stream.(get|set)DefaultHighWaterMark to read or update the default hwm. PR-URL: https://github.com/nodejs/node/pull/46929 Reviewed-By: Matteo Collina Reviewed-By: Paolo Insogna Reviewed-By: Moshe Atlow Reviewed-By: Luigi Pinca Reviewed-By: Benjamin Gruenbaum Reviewed-By: Michael Dawson Reviewed-By: Erick Wendel --- doc/api/stream.md | 23 +++++++++++++ lib/_http_outgoing.js | 8 ++--- lib/internal/streams/state.js | 16 ++++++++- lib/stream.js | 3 ++ test/parallel/test-stream-set-default-hwm.js | 36 ++++++++++++++++++++ 5 files changed, 81 insertions(+), 5 deletions(-) create mode 100644 test/parallel/test-stream-set-default-hwm.js diff --git a/doc/api/stream.md b/doc/api/stream.md index 8ec678a56a223f..293393c6bd29b7 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -3346,6 +3346,29 @@ reader.read().then(({ value, done }) => { }); ``` +### `stream.getDefaultHighWaterMark(objectMode)` + + + +* {boolean} objectMode +* Returns: {integer} + +Returns the default highWaterMark used by streams. +Defaults to `16384` (16 KiB), or `16` for `objectMode`. + +### `stream.setDefaultHighWaterMark(objectMode, value)` + + + +* {boolean} objectMode +* {integer} highWaterMark value + +Sets the default highWaterMark used by streams. + ## API for stream implementers diff --git a/lib/_http_outgoing.js b/lib/_http_outgoing.js index bd9d5e45bfb3c1..6db6298674417d 100644 --- a/lib/_http_outgoing.js +++ b/lib/_http_outgoing.js @@ -80,12 +80,11 @@ let debug = require('internal/util/debuglog').debuglog('http', (fn) => { debug = fn; }); -const HIGH_WATER_MARK = getDefaultHighWaterMark(); - const kCorked = Symbol('corked'); const kUniqueHeaders = Symbol('kUniqueHeaders'); const kBytesWritten = Symbol('kBytesWritten'); const kErrored = Symbol('errored'); +const kHighWaterMark = Symbol('kHighWaterMark'); const nop = () => {}; @@ -150,6 +149,7 @@ function OutgoingMessage() { this._onPendingData = nop; this[kErrored] = null; + this[kHighWaterMark] = getDefaultHighWaterMark(); } ObjectSetPrototypeOf(OutgoingMessage.prototype, Stream.prototype); ObjectSetPrototypeOf(OutgoingMessage, Stream); @@ -196,7 +196,7 @@ ObjectDefineProperty(OutgoingMessage.prototype, 'writableLength', { ObjectDefineProperty(OutgoingMessage.prototype, 'writableHighWaterMark', { __proto__: null, get() { - return this.socket ? this.socket.writableHighWaterMark : HIGH_WATER_MARK; + return this.socket ? this.socket.writableHighWaterMark : this[kHighWaterMark]; }, }); @@ -403,7 +403,7 @@ function _writeRaw(data, encoding, callback, size) { this.outputData.push({ data, encoding, callback }); this.outputSize += data.length; this._onPendingData(data.length); - return this.outputSize < HIGH_WATER_MARK; + return this.outputSize < this[kHighWaterMark]; } diff --git a/lib/internal/streams/state.js b/lib/internal/streams/state.js index 7b05a1ab0b5a51..98f8d8a6cc33d5 100644 --- a/lib/internal/streams/state.js +++ b/lib/internal/streams/state.js @@ -4,16 +4,29 @@ const { MathFloor, NumberIsInteger, } = primordials; +const { validateInteger } = require('internal/validators'); const { ERR_INVALID_ARG_VALUE } = require('internal/errors').codes; +let defaultHighWaterMarkBytes = 16 * 1024; +let defaultHighWaterMarkObjectMode = 16; + function highWaterMarkFrom(options, isDuplex, duplexKey) { return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null; } function getDefaultHighWaterMark(objectMode) { - return objectMode ? 16 : 16 * 1024; + return objectMode ? defaultHighWaterMarkObjectMode : defaultHighWaterMarkBytes; +} + +function setDefaultHighWaterMark(objectMode, value) { + validateInteger(value, 'value', 0); + if (objectMode) { + defaultHighWaterMarkObjectMode = value; + } else { + defaultHighWaterMarkBytes = value; + } } function getHighWaterMark(state, options, duplexKey, isDuplex) { @@ -33,4 +46,5 @@ function getHighWaterMark(state, options, duplexKey, isDuplex) { module.exports = { getHighWaterMark, getDefaultHighWaterMark, + setDefaultHighWaterMark, }; diff --git a/lib/stream.js b/lib/stream.js index e8f205c056834f..9a09401e7d016a 100644 --- a/lib/stream.js +++ b/lib/stream.js @@ -42,6 +42,7 @@ const { }, } = require('internal/errors'); const compose = require('internal/streams/compose'); +const { setDefaultHighWaterMark, getDefaultHighWaterMark } = require('internal/streams/state'); const { pipeline } = require('internal/streams/pipeline'); const { destroyer } = require('internal/streams/destroy'); const eos = require('internal/streams/end-of-stream'); @@ -105,6 +106,8 @@ Stream.addAbortSignal = addAbortSignal; Stream.finished = eos; Stream.destroy = destroyer; Stream.compose = compose; +Stream.setDefaultHighWaterMark = setDefaultHighWaterMark; +Stream.getDefaultHighWaterMark = getDefaultHighWaterMark; ObjectDefineProperty(Stream, 'promises', { __proto__: null, diff --git a/test/parallel/test-stream-set-default-hwm.js b/test/parallel/test-stream-set-default-hwm.js new file mode 100644 index 00000000000000..3d78907b74f5a5 --- /dev/null +++ b/test/parallel/test-stream-set-default-hwm.js @@ -0,0 +1,36 @@ +'use strict'; + +require('../common'); + +const assert = require('node:assert'); +const { + setDefaultHighWaterMark, + getDefaultHighWaterMark, + Writable, + Readable, + Transform +} = require('stream'); + +assert.notStrictEqual(getDefaultHighWaterMark(false), 32 * 1000); +setDefaultHighWaterMark(false, 32 * 1000); +assert.strictEqual(getDefaultHighWaterMark(false), 32 * 1000); + +assert.notStrictEqual(getDefaultHighWaterMark(true), 32); +setDefaultHighWaterMark(true, 32); +assert.strictEqual(getDefaultHighWaterMark(true), 32); + +const w = new Writable({ + write() {} +}); +assert.strictEqual(w.writableHighWaterMark, 32 * 1000); + +const r = new Readable({ + read() {} +}); +assert.strictEqual(r.readableHighWaterMark, 32 * 1000); + +const t = new Transform({ + transform() {} +}); +assert.strictEqual(t.writableHighWaterMark, 32 * 1000); +assert.strictEqual(t.readableHighWaterMark, 32 * 1000); From 4e6fb1191a61ff1391b3081eb82ba10ca225fb65 Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Thu, 30 Mar 2023 03:17:18 +0900 Subject: [PATCH 070/131] doc: revise example of assert.CallTracker In example of tracker.getCalls(), actual and expected are mismatched. So update expected value. In example of tracker.report(), user can check report easily through console.log(). In example of tracker.reset(), defining of tracker is missed in CJS. Plus, use assert.strictEqual() to check result. PR-URL: https://github.com/nodejs/node/pull/47252 Reviewed-By: Luigi Pinca Reviewed-By: Antoine du Hamel --- doc/api/assert.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/doc/api/assert.md b/doc/api/assert.md index d40300cc3fdb1b..1467d633c25ffd 100644 --- a/doc/api/assert.md +++ b/doc/api/assert.md @@ -348,7 +348,7 @@ const callsfunc = tracker.calls(func); callsfunc(1, 2, 3); assert.deepStrictEqual(tracker.getCalls(callsfunc), - [{ thisArg: this, arguments: [1, 2, 3 ] }]); + [{ thisArg: undefined, arguments: [1, 2, 3] }]); ``` ```cjs @@ -362,7 +362,7 @@ const callsfunc = tracker.calls(func); callsfunc(1, 2, 3); assert.deepStrictEqual(tracker.getCalls(callsfunc), - [{ thisArg: this, arguments: [1, 2, 3 ] }]); + [{ thisArg: undefined, arguments: [1, 2, 3] }]); ``` ### `tracker.report()` @@ -399,7 +399,7 @@ function func() {} const callsfunc = tracker.calls(func, 2); // Returns an array containing information on callsfunc() -tracker.report(); +console.log(tracker.report()); // [ // { // message: 'Expected the func function to be executed 2 time(s) but was @@ -425,7 +425,7 @@ function func() {} const callsfunc = tracker.calls(func, 2); // Returns an array containing information on callsfunc() -tracker.report(); +console.log(tracker.report()); // [ // { // message: 'Expected the func function to be executed 2 time(s) but was @@ -462,24 +462,26 @@ const callsfunc = tracker.calls(func); callsfunc(); // Tracker was called once -tracker.getCalls(callsfunc).length === 1; +assert.strictEqual(tracker.getCalls(callsfunc).length, 1); tracker.reset(callsfunc); -tracker.getCalls(callsfunc).length === 0; +assert.strictEqual(tracker.getCalls(callsfunc).length, 0); ``` ```cjs const assert = require('node:assert'); +const tracker = new assert.CallTracker(); + function func() {} const callsfunc = tracker.calls(func); callsfunc(); // Tracker was called once -tracker.getCalls(callsfunc).length === 1; +assert.strictEqual(tracker.getCalls(callsfunc).length, 1); tracker.reset(callsfunc); -tracker.getCalls(callsfunc).length === 0; +assert.strictEqual(tracker.getCalls(callsfunc).length, 0); ``` ### `tracker.verify()` From a4418c4ccc05f02f816b51eeb199ef995267ef00 Mon Sep 17 00:00:00 2001 From: Mohammed Keyvanzadeh Date: Wed, 29 Mar 2023 23:04:58 +0330 Subject: [PATCH 071/131] build: avoid usage of pipes library Python's `pipes` library is deprecated and will be removed in Python version 3.13, so remove it's import and replace `pipes.quote()` with `shlex.quote()`. PR-URL: https://github.com/nodejs/node/pull/47271 Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli Reviewed-By: Debadree Chatterjee --- configure.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/configure.py b/configure.py index d7765ef6bd9487..b0a0a7e0345533 100755 --- a/configure.py +++ b/configure.py @@ -5,7 +5,6 @@ import errno import argparse import os -import pipes import pprint import re import shlex @@ -2074,7 +2073,7 @@ def make_bin_override(): pprint.pformat(output, indent=2, width=1024) + '\n') write('config.status', '#!/bin/sh\nset -x\nexec ./configure ' + - ' '.join([pipes.quote(arg) for arg in original_argv]) + '\n') + ' '.join([shlex.quote(arg) for arg in original_argv]) + '\n') os.chmod('config.status', 0o775) From dd96588e3a3e1643fa68c243be3aff0d7220dac3 Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Tue, 21 Mar 2023 08:59:39 -0400 Subject: [PATCH 072/131] doc: document process for sharing project news Fixes: https://github.com/nodejs/TSC/issues/1333 Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/47189 Reviewed-By: Gireesh Punathil Reviewed-By: Chengzhong Wu Reviewed-By: Luigi Pinca --- doc/contributing/sharing-project-news.md | 30 ++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 doc/contributing/sharing-project-news.md diff --git a/doc/contributing/sharing-project-news.md b/doc/contributing/sharing-project-news.md new file mode 100644 index 00000000000000..0396bb466c7ee8 --- /dev/null +++ b/doc/contributing/sharing-project-news.md @@ -0,0 +1,30 @@ +# Sharing project news + +The project aims to make it easy +to share project news with those who publish newsletters +that cover Node.js. + +The project's approach is as follows: + +* The project will create one "What's new in YYYY" discussion item in + the `nodejs/node` repo for news related to Node.js core. +* Teams/groups can create a "what's new in YYYY" issue or discussion item + in one or more of their repositories. As an example see + [What's new in the Node-API and node-addon-api world? - 2023 version](https://github.com/nodejs/abi-stable-node/issues/446). +* Collaborators periodically add news as additional comments on these + issues throughout the year. +* At the end of each year the issue is closed and if appropriate a + new one is created. +* A list of these documents is maintained in the section below as a + quick way to find them. +* The next-10 team reaches out to teams/groups on an ad hoc basis + to ensure teams know about the option for sharing news. +* The next-10 team reaches out to those who publish newsletters ad hoc + to let them know about this approach and how they can find the updates. + +We trust/expect collaborators to post project related news versus news +that promotes a specific company or commercial interest. + +## Teams doing updates + +* [node-api/node-addon-api](https://github.com/nodejs/abi-stable-node/issues/446). From ab1eb523d4911e3b8f128eeabea2509a4fde9988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Wed, 29 Mar 2023 17:29:17 +0200 Subject: [PATCH 073/131] test: skip test-wasm-web-api on ARM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This test is flaky on ARM with V8 >= 11.2. Skip it so we can update V8 before the release of Nodejs 20.0.0. PR-URL: https://github.com/nodejs/node/pull/47299 Refs: https://github.com/nodejs/node/pull/47251 Reviewed-By: Filip Skokan Reviewed-By: Jiawen Geng Reviewed-By: Tobias Nießen Reviewed-By: Richard Lau Reviewed-By: Colin Ihrig Reviewed-By: Luigi Pinca Reviewed-By: Yagiz Nizipli --- test/parallel/parallel.status | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index 363cea8f65fb14..2c105b230fae0b 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -32,6 +32,8 @@ test-http-server-request-timeouts-mixed: PASS,FLAKY # https://github.com/nodejs/node/pull/31178 test-crypto-dh-stateless: SKIP test-crypto-keygen: SKIP +# https://github.com/nodejs/node/issues/47297 +test-wasm-web-api: SKIP [$system==solaris] # Also applies to SmartOS # https://github.com/nodejs/node/issues/43457 From 9f9a3d5b920d5980dc6c83dd9f827b44ff0c5048 Mon Sep 17 00:00:00 2001 From: ywave620 <60539365+ywave620@users.noreply.github.com> Date: Thu, 30 Mar 2023 20:40:45 +0800 Subject: [PATCH 074/131] src,http2: ensure cleanup if a frame is not sent Call to JS and close the session if a frame is not sent even there is no frameError listener registered by user. PR-URL: https://github.com/nodejs/node/pull/47244 Reviewed-By: Matteo Collina Reviewed-By: Rafael Gonzaga --- src/node_http2.cc | 3 +- ...-h2-large-header-cause-client-to-hangup.js | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 test/parallel/test-h2-large-header-cause-client-to-hangup.js diff --git a/src/node_http2.cc b/src/node_http2.cc index 7e8e04f440ae85..26345c429630bf 100644 --- a/src/node_http2.cc +++ b/src/node_http2.cc @@ -1072,8 +1072,7 @@ int Http2Session::OnFrameNotSent(nghttp2_session* handle, // Do not report if the frame was not sent due to the session closing if (error_code == NGHTTP2_ERR_SESSION_CLOSING || error_code == NGHTTP2_ERR_STREAM_CLOSED || - error_code == NGHTTP2_ERR_STREAM_CLOSING || - session->js_fields_->frame_error_listener_count == 0) { + error_code == NGHTTP2_ERR_STREAM_CLOSING) { // Nghttp2 contains header limit of 65536. When this value is exceeded the // pipeline is stopped and we should remove the current headers reference // to destroy the session completely. diff --git a/test/parallel/test-h2-large-header-cause-client-to-hangup.js b/test/parallel/test-h2-large-header-cause-client-to-hangup.js new file mode 100644 index 00000000000000..b8b08cecf6817c --- /dev/null +++ b/test/parallel/test-h2-large-header-cause-client-to-hangup.js @@ -0,0 +1,38 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const http2 = require('http2'); +const assert = require('assert'); +const { + DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE, + NGHTTP2_CANCEL, +} = http2.constants; + +const headerSize = DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE; +const timeout = common.platformTimeout(2_000); +const timer = setTimeout(() => assert.fail(`http2 client timedout +when server can not manage to send a header of size ${headerSize}`), timeout); + +const server = http2.createServer((req, res) => { + res.setHeader('foobar', 'a'.repeat(DEFAULT_SETTINGS_MAX_HEADER_LIST_SIZE)); + res.end(); +}); + +server.listen(0, common.mustCall(() => { + const clientSession = http2.connect(`http://localhost:${server.address().port}`); + clientSession.on('close', common.mustCall()); + clientSession.on('remoteSettings', send); + + function send() { + const stream = clientSession.request({ ':path': '/' }); + stream.on('close', common.mustCall(() => { + assert.strictEqual(stream.rstCode, NGHTTP2_CANCEL); + clearTimeout(timer); + server.close(); + })); + + stream.end(); + } +})); From 0985548d37ef559adc15475a720956c638789176 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Thu, 30 Mar 2023 14:40:57 +0200 Subject: [PATCH 075/131] meta: clarify the threat model to explain the JSON.parse case MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matteo Collina PR-URL: https://github.com/nodejs/node/pull/47276 Reviewed-By: Michaël Zasso Reviewed-By: Yagiz Nizipli Reviewed-By: Michael Dawson Reviewed-By: Colin Ihrig Reviewed-By: Tobias Nießen Reviewed-By: Rafael Gonzaga Reviewed-By: Luigi Pinca --- SECURITY.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SECURITY.md b/SECURITY.md index 0ce5cc03e23c3c..acf83434de4e79 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -116,7 +116,8 @@ lead to a loss of confidentiality, integrity, or availability. npm registry. The code run inherits all the privileges of the execution user. 4. Inputs provided to it by the code it is asked to run, as it is the - responsibility of the application to perform the required input validations. + responsibility of the application to perform the required input validations, + e.g. the input to `JSON.parse()`. 5. Any connection used for inspector (debugger protocol) regardless of being opened by command line options or Node.js APIs, and regardless of the remote end being on the local machine or remote. @@ -124,7 +125,8 @@ lead to a loss of confidentiality, integrity, or availability. See . Any unexpected behavior from the data manipulation from Node.js Internal -functions are considered a vulnerability. +functions may be considered a vulnerability if they are expoitable via +untrusted resources. In addition to addressing vulnerabilities based on the above, the project works to avoid APIs and internal implementations that make it "easy" for application From 3e07b53d716a2903d3509ee7c639f2d20000d7ab Mon Sep 17 00:00:00 2001 From: Mateo Nunez Date: Thu, 30 Mar 2023 16:31:12 +0200 Subject: [PATCH 076/131] tools: add scorecard workflow PR-URL: https://github.com/nodejs/node/pull/47254 Reviewed-By: Rafael Gonzaga Reviewed-By: Michael Dawson Reviewed-By: Marco Ippolito --- .github/workflows/scorecard.yml | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 00000000000000..e7519424ccc112 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,78 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: 16 21 * * 1 + push: + branches: [main] + workflow_dispatch: + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: Harden Runner + uses: step-security/harden-runner@1f99358870fe1c846a3ccba386cc2b2246836776 # v2.2.1 + with: + egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs + + - name: Checkout code + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + with: + persist-credentials: false + + - name: Run analysis + uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: true + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: Upload artifact + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: Upload to code-scanning + uses: github/codeql-action/upload-sarif@16964e90ba004cdf0cd845b866b5df21038b7723 # v2.2.6 + with: + sarif_file: results.sarif From b80bb6fd1cb49750c6cc9f4d5b4823b4098c8e28 Mon Sep 17 00:00:00 2001 From: Stefan Stojanovic Date: Thu, 30 Mar 2023 17:16:12 +0200 Subject: [PATCH 077/131] doc: make win arm64 tier 2 platform Refs: https://github.com/nodejs/build/issues/3046 Refs: https://github.com/nodejs/build/issues/2540 Fixes: https://github.com/nodejs/node/issues/25998 PR-URL: https://github.com/nodejs/node/pull/47233 Reviewed-By: Matteo Collina Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- BUILDING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILDING.md b/BUILDING.md index 7b11bbce1885eb..e1b48644de96af 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -113,7 +113,7 @@ platforms. This is true regardless of entries in the table below. | Windows | x64, x86 (WoW64) | >= Windows 10/Server 2016 | Tier 1 | [^2],[^3] | | Windows | x86 (native) | >= Windows 10/Server 2016 | Tier 1 (running) / Experimental (compiling)[^4] | | | Windows | x64, x86 | Windows 8.1/Server 2012 | Experimental | | -| Windows | arm64 | >= Windows 10 | Tier 2 (compiling) / Experimental (running) | | +| Windows | arm64 | >= Windows 10 | Tier 2 | | | macOS | x64 | >= 10.15 | Tier 1 | For notes about compilation see [^5] | | macOS | arm64 | >= 11 | Tier 1 | | | SmartOS | x64 | >= 18 | Tier 2 | | From 4ba54afd7467d481b48136bfc1dada2a4b177eeb Mon Sep 17 00:00:00 2001 From: Michael Dawson Date: Tue, 28 Mar 2023 15:28:41 -0400 Subject: [PATCH 078/131] wasi: no longer require flag to enable wasi - no longer require flag to enable experimental wasi feature - wasi is still documented as experimental Signed-off-by: Michael Dawson PR-URL: https://github.com/nodejs/node/pull/47286 Reviewed-By: Guy Bedford Reviewed-By: Colin Ihrig --- doc/api/cli.md | 4 ++ doc/api/wasi.md | 3 -- doc/node.1 | 3 +- lib/internal/process/pre_execution.js | 8 ---- src/node_options.cc | 6 +-- src/node_options.h | 1 - test/parallel/test-repl-built-in-modules.js | 48 -------------------- test/wasi/test-return-on-exit.js | 1 - test/wasi/test-wasi-initialize-validation.js | 1 - test/wasi/test-wasi-not-started.js | 1 - test/wasi/test-wasi-options-validation.js | 2 - test/wasi/test-wasi-require-flag.js | 9 ---- test/wasi/test-wasi-start-validation.js | 1 - test/wasi/test-wasi-stdio.js | 1 - test/wasi/test-wasi-symlinks.js | 1 - test/wasi/test-wasi-worker-terminate.js | 1 - test/wasi/test-wasi.js | 1 - 17 files changed, 8 insertions(+), 84 deletions(-) delete mode 100644 test/parallel/test-repl-built-in-modules.js delete mode 100644 test/wasi/test-wasi-require-flag.js diff --git a/doc/api/cli.md b/doc/api/cli.md index c99d02fc9394ee..f712b9c9a98981 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -460,6 +460,10 @@ added: - v13.3.0 - v12.16.0 changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/47286 + description: This option is no longer required as WASI is + enabled by default, but can still be passed. - version: v13.6.0 pr-url: https://github.com/nodejs/node/pull/30980 description: changed from `--experimental-wasi-unstable-preview0` to diff --git a/doc/api/wasi.md b/doc/api/wasi.md index ac395b70894c99..f70470d8dc0732 100644 --- a/doc/api/wasi.md +++ b/doc/api/wasi.md @@ -97,9 +97,6 @@ Use [wabt](https://github.com/WebAssembly/wabt) to compile `.wat` to `.wasm` $ wat2wasm demo.wat ``` -The `--experimental-wasi-unstable-preview1` CLI argument is needed for this -example to run. - ## Class: `WASI` regexps - set = set.map((s, si, set) => s.map(this.parse, this)) - - this.debug(this.pattern, set) - - // filter out everything that didn't compile properly. - set = set.filter(s => s.indexOf(false) === -1) - - this.debug(this.pattern, set) - - this.set = set - } - - parseNegate () { - if (this.options.nonegate) return - - const pattern = this.pattern - let negate = false - let negateOffset = 0 - - for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) { - negate = !negate - negateOffset++ - } - - if (negateOffset) this.pattern = pattern.slice(negateOffset) - this.negate = negate - } - - // set partial to true to test if, for example, - // "/a/b" matches the start of "/*/b/*/d" - // Partial means, if you run out of file before you run - // out of pattern, then that's fine, as long as all - // the parts match. - matchOne (file, pattern, partial) { - var options = this.options - - this.debug('matchOne', - { 'this': this, file: file, pattern: pattern }) - - this.debug('matchOne', file.length, pattern.length) - - for (var fi = 0, - pi = 0, - fl = file.length, - pl = pattern.length - ; (fi < fl) && (pi < pl) - ; fi++, pi++) { - this.debug('matchOne loop') - var p = pattern[pi] - var f = file[fi] - - this.debug(pattern, p, f) - - // should be impossible. - // some invalid regexp stuff in the set. - /* istanbul ignore if */ - if (p === false) return false - - if (p === GLOBSTAR) { - this.debug('GLOBSTAR', [pattern, p, f]) - - // "**" - // a/**/b/**/c would match the following: - // a/b/x/y/z/c - // a/x/y/z/b/c - // a/b/x/b/x/c - // a/b/c - // To do this, take the rest of the pattern after - // the **, and see if it would match the file remainder. - // If so, return success. - // If not, the ** "swallows" a segment, and try again. - // This is recursively awful. - // - // a/**/b/**/c matching a/b/x/y/z/c - // - a matches a - // - doublestar - // - matchOne(b/x/y/z/c, b/**/c) - // - b matches b - // - doublestar - // - matchOne(x/y/z/c, c) -> no - // - matchOne(y/z/c, c) -> no - // - matchOne(z/c, c) -> no - // - matchOne(c, c) yes, hit - var fr = fi - var pr = pi + 1 - if (pr === pl) { - this.debug('** at the end') - // a ** at the end will just swallow the rest. - // We have found a match. - // however, it will not swallow /.x, unless - // options.dot is set. - // . and .. are *never* matched by **, for explosively - // exponential reasons. - for (; fi < fl; fi++) { - if (file[fi] === '.' || file[fi] === '..' || - (!options.dot && file[fi].charAt(0) === '.')) return false - } - return true - } - - // ok, let's see if we can swallow whatever we can. - while (fr < fl) { - var swallowee = file[fr] - - this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) - - // XXX remove this slice. Just pass the start index. - if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { - this.debug('globstar found match!', fr, fl, swallowee) - // found a match. - return true - } else { - // can't swallow "." or ".." ever. - // can only swallow ".foo" when explicitly asked. - if (swallowee === '.' || swallowee === '..' || - (!options.dot && swallowee.charAt(0) === '.')) { - this.debug('dot detected!', file, fr, pattern, pr) - break - } - - // ** swallows a segment, and continue. - this.debug('globstar swallow a segment, and continue') - fr++ - } - } - - // no match was found. - // However, in partial mode, we can't say this is necessarily over. - // If there's more *pattern* left, then - /* istanbul ignore if */ - if (partial) { - // ran out of file - this.debug('\n>>> no match, partial?', file, fr, pattern, pr) - if (fr === fl) return true - } - return false - } - - // something other than ** - // non-magic patterns just have to match exactly - // patterns with magic have been turned into regexps. - var hit - if (typeof p === 'string') { - hit = f === p - this.debug('string match', p, f, hit) - } else { - hit = f.match(p) - this.debug('pattern match', p, f, hit) - } - - if (!hit) return false - } - - // Note: ending in / means that we'll get a final "" - // at the end of the pattern. This can only match a - // corresponding "" at the end of the file. - // If the file ends in /, then it can only match a - // a pattern that ends in /, unless the pattern just - // doesn't have any more for it. But, a/b/ should *not* - // match "a/b/*", even though "" matches against the - // [^/]*? pattern, except in partial mode, where it might - // simply not be reached yet. - // However, a/b/ should still satisfy a/* - - // now either we fell off the end of the pattern, or we're done. - if (fi === fl && pi === pl) { - // ran out of pattern and filename at the same time. - // an exact hit! - return true - } else if (fi === fl) { - // ran out of file, but still had pattern left. - // this is ok if we're doing the match as part of - // a glob fs traversal. - return partial - } else /* istanbul ignore else */ if (pi === pl) { - // ran out of pattern, still have file left. - // this is only acceptable if we're on the very last - // empty segment of a file with a trailing slash. - // a/* should match a/b/ - return (fi === fl - 1) && (file[fi] === '') - } - - // should be unreachable. - /* istanbul ignore next */ - throw new Error('wtf?') - } - - braceExpand () { - return braceExpand(this.pattern, this.options) - } - - parse (pattern, isSub) { - assertValidPattern(pattern) - - const options = this.options - - // shortcuts - if (pattern === '**') { - if (!options.noglobstar) - return GLOBSTAR - else - pattern = '*' - } - if (pattern === '') return '' - - let re = '' - let hasMagic = false - let escaping = false - // ? => one single character - const patternListStack = [] - const negativeLists = [] - let stateChar - let inClass = false - let reClassStart = -1 - let classStart = -1 - let cs - let pl - let sp - // . and .. never match anything that doesn't start with ., - // even when options.dot is set. However, if the pattern - // starts with ., then traversal patterns can match. - let dotTravAllowed = pattern.charAt(0) === '.' - let dotFileAllowed = options.dot || dotTravAllowed - const patternStart = () => - dotTravAllowed - ? '' - : dotFileAllowed - ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' - : '(?!\\.)' - const subPatternStart = (p) => - p.charAt(0) === '.' - ? '' - : options.dot - ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' - : '(?!\\.)' - - - const clearStateChar = () => { - if (stateChar) { - // we had some state-tracking character - // that wasn't consumed by this pass. - switch (stateChar) { - case '*': - re += star - hasMagic = true - break - case '?': - re += qmark - hasMagic = true - break - default: - re += '\\' + stateChar - break - } - this.debug('clearStateChar %j %j', stateChar, re) - stateChar = false - } - } - - for (let i = 0, c; (i < pattern.length) && (c = pattern.charAt(i)); i++) { - this.debug('%s\t%s %s %j', pattern, i, re, c) - - // skip over any that are escaped. - if (escaping) { - /* istanbul ignore next - completely not allowed, even escaped. */ - if (c === '/') { - return false - } - - if (reSpecials[c]) { - re += '\\' - } - re += c - escaping = false - continue - } - - switch (c) { - /* istanbul ignore next */ - case '/': { - // Should already be path-split by now. - return false - } - - case '\\': - if (inClass && pattern.charAt(i + 1) === '-') { - re += c - continue - } - - clearStateChar() - escaping = true - continue - - // the various stateChar values - // for the "extglob" stuff. - case '?': - case '*': - case '+': - case '@': - case '!': - this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) - - // all of those are literals inside a class, except that - // the glob [!a] means [^a] in regexp - if (inClass) { - this.debug(' in class') - if (c === '!' && i === classStart + 1) c = '^' - re += c - continue - } - - // if we already have a stateChar, then it means - // that there was something like ** or +? in there. - // Handle the stateChar, then proceed with this one. - this.debug('call clearStateChar %j', stateChar) - clearStateChar() - stateChar = c - // if extglob is disabled, then +(asdf|foo) isn't a thing. - // just clear the statechar *now*, rather than even diving into - // the patternList stuff. - if (options.noext) clearStateChar() - continue - - case '(': { - if (inClass) { - re += '(' - continue - } - - if (!stateChar) { - re += '\\(' - continue - } - - const plEntry = { - type: stateChar, - start: i - 1, - reStart: re.length, - open: plTypes[stateChar].open, - close: plTypes[stateChar].close, - } - this.debug(this.pattern, '\t', plEntry) - patternListStack.push(plEntry) - // negation is (?:(?!(?:js)(?:))[^/]*) - re += plEntry.open - // next entry starts with a dot maybe? - if (plEntry.start === 0 && plEntry.type !== '!') { - dotTravAllowed = true - re += subPatternStart(pattern.slice(i + 1)) - } - this.debug('plType %j %j', stateChar, re) - stateChar = false - continue - } - - case ')': { - const plEntry = patternListStack[patternListStack.length - 1] - if (inClass || !plEntry) { - re += '\\)' - continue - } - patternListStack.pop() - - // closing an extglob - clearStateChar() - hasMagic = true - pl = plEntry - // negation is (?:(?!js)[^/]*) - // The others are (?:) - re += pl.close - if (pl.type === '!') { - negativeLists.push(Object.assign(pl, { reEnd: re.length })) - } - continue - } - - case '|': { - const plEntry = patternListStack[patternListStack.length - 1] - if (inClass || !plEntry) { - re += '\\|' - continue - } - - clearStateChar() - re += '|' - // next subpattern can start with a dot? - if (plEntry.start === 0 && plEntry.type !== '!') { - dotTravAllowed = true - re += subPatternStart(pattern.slice(i + 1)) - } - continue - } - - // these are mostly the same in regexp and glob - case '[': - // swallow any state-tracking char before the [ - clearStateChar() - - if (inClass) { - re += '\\' + c - continue - } - - inClass = true - classStart = i - reClassStart = re.length - re += c - continue - - case ']': - // a right bracket shall lose its special - // meaning and represent itself in - // a bracket expression if it occurs - // first in the list. -- POSIX.2 2.8.3.2 - if (i === classStart + 1 || !inClass) { - re += '\\' + c - continue - } - - // split where the last [ was, make sure we don't have - // an invalid re. if so, re-walk the contents of the - // would-be class to re-translate any characters that - // were passed through as-is - // TODO: It would probably be faster to determine this - // without a try/catch and a new RegExp, but it's tricky - // to do safely. For now, this is safe and works. - cs = pattern.substring(classStart + 1, i) - try { - RegExp('[' + braExpEscape(charUnescape(cs)) + ']') - // looks good, finish up the class. - re += c - } catch (er) { - // out of order ranges in JS are errors, but in glob syntax, - // they're just a range that matches nothing. - re = re.substring(0, reClassStart) + '(?:$.)' // match nothing ever - } - hasMagic = true - inClass = false - continue - - default: - // swallow any state char that wasn't consumed - clearStateChar() - - if (reSpecials[c] && !(c === '^' && inClass)) { - re += '\\' - } - - re += c - break - - } // switch - } // for - - // handle the case where we left a class open. - // "[abc" is valid, equivalent to "\[abc" - if (inClass) { - // split where the last [ was, and escape it - // this is a huge pita. We now have to re-walk - // the contents of the would-be class to re-translate - // any characters that were passed through as-is - cs = pattern.slice(classStart + 1) - sp = this.parse(cs, SUBPARSE) - re = re.substring(0, reClassStart) + '\\[' + sp[0] - hasMagic = hasMagic || sp[1] - } - - // handle the case where we had a +( thing at the *end* - // of the pattern. - // each pattern list stack adds 3 chars, and we need to go through - // and escape any | chars that were passed through as-is for the regexp. - // Go through and escape them, taking care not to double-escape any - // | chars that were already escaped. - for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { - let tail - tail = re.slice(pl.reStart + pl.open.length) - this.debug('setting tail', re, pl) - // maybe some even number of \, then maybe 1 \, followed by a | - tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => { - /* istanbul ignore else - should already be done */ - if (!$2) { - // the | isn't already escaped, so escape it. - $2 = '\\' - } - - // need to escape all those slashes *again*, without escaping the - // one that we need for escaping the | character. As it works out, - // escaping an even number of slashes can be done by simply repeating - // it exactly after itself. That's why this trick works. - // - // I am sorry that you have to see this. - return $1 + $1 + $2 + '|' - }) - - this.debug('tail=%j\n %s', tail, tail, pl, re) - const t = pl.type === '*' ? star - : pl.type === '?' ? qmark - : '\\' + pl.type - - hasMagic = true - re = re.slice(0, pl.reStart) + t + '\\(' + tail - } - - // handle trailing things that only matter at the very end. - clearStateChar() - if (escaping) { - // trailing \\ - re += '\\\\' - } - - // only need to apply the nodot start if the re starts with - // something that could conceivably capture a dot - const addPatternStart = addPatternStartSet[re.charAt(0)] - - // Hack to work around lack of negative lookbehind in JS - // A pattern like: *.!(x).!(y|z) needs to ensure that a name - // like 'a.xyz.yz' doesn't match. So, the first negative - // lookahead, has to look ALL the way ahead, to the end of - // the pattern. - for (let n = negativeLists.length - 1; n > -1; n--) { - const nl = negativeLists[n] - - const nlBefore = re.slice(0, nl.reStart) - const nlFirst = re.slice(nl.reStart, nl.reEnd - 8) - let nlAfter = re.slice(nl.reEnd) - const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter - - // Handle nested stuff like *(*.js|!(*.json)), where open parens - // mean that we should *not* include the ) in the bit that is considered - // "after" the negated section. - const closeParensBefore = nlBefore.split(')').length - const openParensBefore = nlBefore.split('(').length - closeParensBefore - let cleanAfter = nlAfter - for (let i = 0; i < openParensBefore; i++) { - cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') - } - nlAfter = cleanAfter - - const dollar = nlAfter === '' && isSub !== SUBPARSE ? '(?:$|\\/)' : '' - - re = nlBefore + nlFirst + nlAfter + dollar + nlLast - } - - // if the re is not "" at this point, then we need to make sure - // it doesn't match against an empty path part. - // Otherwise a/* will match a/, which it should not. - if (re !== '' && hasMagic) { - re = '(?=.)' + re - } - - if (addPatternStart) { - re = patternStart() + re - } - - // parsing just a piece of a larger pattern. - if (isSub === SUBPARSE) { - return [re, hasMagic] - } - - // if it's nocase, and the lcase/uppercase don't match, it's magic - if (options.nocase && !hasMagic) { - hasMagic = pattern.toUpperCase() !== pattern.toLowerCase() - } - - // skip the regexp for non-magical patterns - // unescape anything in it, though, so that it'll be - // an exact match against a file etc. - if (!hasMagic) { - return globUnescape(pattern) - } - - const flags = options.nocase ? 'i' : '' - try { - return Object.assign(new RegExp('^' + re + '$', flags), { - _glob: pattern, - _src: re, - }) - } catch (er) /* istanbul ignore next - should be impossible */ { - // If it was an invalid regular expression, then it can't match - // anything. This trick looks for a character after the end of - // the string, which is of course impossible, except in multi-line - // mode, but it's not a /m regex. - return new RegExp('$.') - } - } - - makeRe () { - if (this.regexp || this.regexp === false) return this.regexp - - // at this point, this.set is a 2d array of partial - // pattern strings, or "**". - // - // It's better to use .match(). This function shouldn't - // be used, really, but it's pretty convenient sometimes, - // when you just want to work with a regex. - const set = this.set - - if (!set.length) { - this.regexp = false - return this.regexp - } - const options = this.options - - const twoStar = options.noglobstar ? star - : options.dot ? twoStarDot - : twoStarNoDot - const flags = options.nocase ? 'i' : '' - - // coalesce globstars and regexpify non-globstar patterns - // if it's the only item, then we just do one twoStar - // if it's the first, and there are more, prepend (\/|twoStar\/)? to next - // if it's the last, append (\/twoStar|) to previous - // if it's in the middle, append (\/|\/twoStar\/) to previous - // then filter out GLOBSTAR symbols - let re = set.map(pattern => { - pattern = pattern.map(p => - typeof p === 'string' ? regExpEscape(p) - : p === GLOBSTAR ? GLOBSTAR - : p._src - ).reduce((set, p) => { - if (!(set[set.length - 1] === GLOBSTAR && p === GLOBSTAR)) { - set.push(p) - } - return set - }, []) - pattern.forEach((p, i) => { - if (p !== GLOBSTAR || pattern[i-1] === GLOBSTAR) { - return - } - if (i === 0) { - if (pattern.length > 1) { - pattern[i+1] = '(?:\\\/|' + twoStar + '\\\/)?' + pattern[i+1] - } else { - pattern[i] = twoStar - } - } else if (i === pattern.length - 1) { - pattern[i-1] += '(?:\\\/|' + twoStar + ')?' - } else { - pattern[i-1] += '(?:\\\/|\\\/' + twoStar + '\\\/)' + pattern[i+1] - pattern[i+1] = GLOBSTAR - } - }) - return pattern.filter(p => p !== GLOBSTAR).join('/') - }).join('|') - - // must match entire pattern - // ending in a * or ** will make it less strict. - re = '^(?:' + re + ')$' - - // can match anything, as long as it's not this. - if (this.negate) re = '^(?!' + re + ').*$' - - try { - this.regexp = new RegExp(re, flags) - } catch (ex) /* istanbul ignore next - should be impossible */ { - this.regexp = false - } - return this.regexp - } - - match (f, partial = this.partial) { - this.debug('match', f, this.pattern) - // short-circuit in the case of busted things. - // comments, etc. - if (this.comment) return false - if (this.empty) return f === '' - - if (f === '/' && partial) return true - - const options = this.options - - // windows: need to use /, not \ - if (path.sep !== '/') { - f = f.split(path.sep).join('/') - } - - // treat the test path as a set of pathparts. - f = f.split(slashSplit) - this.debug(this.pattern, 'split', f) - - // just ONE of the pattern sets in this.set needs to match - // in order for it to be valid. If negating, then just one - // match means that we have failed. - // Either way, return on the first hit. - - const set = this.set - this.debug(this.pattern, 'set', set) - - // Find the basename of the path by looking for the last non-empty segment - let filename - for (let i = f.length - 1; i >= 0; i--) { - filename = f[i] - if (filename) break - } - - for (let i = 0; i < set.length; i++) { - const pattern = set[i] - let file = f - if (options.matchBase && pattern.length === 1) { - file = [filename] - } - const hit = this.matchOne(file, pattern, partial) - if (hit) { - if (options.flipNegate) return true - return !this.negate - } - } - - // didn't get any hits. this is success if it's a negative - // pattern, failure otherwise. - if (options.flipNegate) return false - return this.negate - } - - static defaults (def) { - return minimatch.defaults(def).Minimatch - } -} - -minimatch.Minimatch = Minimatch diff --git a/deps/npm/node_modules/glob/node_modules/minimatch/package.json b/deps/npm/node_modules/glob/node_modules/minimatch/package.json deleted file mode 100644 index c8809dbb3119d9..00000000000000 --- a/deps/npm/node_modules/glob/node_modules/minimatch/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "author": "Isaac Z. Schlueter (http://blog.izs.me)", - "name": "minimatch", - "description": "a glob matcher in javascript", - "publishConfig": { - "tag": "legacy-v5" - }, - "version": "5.1.6", - "repository": { - "type": "git", - "url": "git://github.com/isaacs/minimatch.git" - }, - "main": "minimatch.js", - "scripts": { - "test": "tap", - "snap": "tap", - "preversion": "npm test", - "postversion": "npm publish", - "prepublishOnly": "git push origin --follow-tags" - }, - "engines": { - "node": ">=10" - }, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "devDependencies": { - "tap": "^16.3.2" - }, - "license": "ISC", - "files": [ - "minimatch.js", - "lib" - ] -} diff --git a/deps/npm/node_modules/glob/package.json b/deps/npm/node_modules/glob/package.json index ca0fd916211b51..b0bb7f3711b867 100644 --- a/deps/npm/node_modules/glob/package.json +++ b/deps/npm/node_modules/glob/package.json @@ -1,55 +1,98 @@ { "author": "Isaac Z. Schlueter (http://blog.izs.me/)", "name": "glob", - "description": "a little globber", - "version": "8.1.0", + "description": "the most correct and second fastest glob implementation in JavaScript", + "version": "9.3.1", "repository": { "type": "git", "url": "git://github.com/isaacs/node-glob.git" }, - "main": "glob.js", + "main": "./dist/cjs/index-cjs.js", + "module": "./dist/mjs/index.js", + "types": "./dist/mjs/index.d.ts", + "exports": { + ".": { + "import": { + "types": "./dist/mjs/index.d.ts", + "default": "./dist/mjs/index.js" + }, + "require": { + "types": "./dist/cjs/index.d.ts", + "default": "./dist/cjs/index-cjs.js" + } + } + }, "files": [ - "glob.js", - "sync.js", - "common.js" + "dist" ], - "engines": { - "node": ">=12" + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags", + "preprepare": "rm -rf dist", + "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json", + "postprepare": "bash fixup.sh", + "pretest": "npm run prepare", + "presnap": "npm run prepare", + "test": "c8 tap", + "snap": "c8 tap", + "format": "prettier --write . --loglevel warn", + "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts", + "prepublish": "npm run benchclean", + "profclean": "rm -f v8.log profile.txt", + "test-regen": "npm run profclean && TEST_REGEN=1 node --no-warnings --loader ts-node/esm test/00-setup.ts", + "prebench": "npm run prepare", + "bench": "bash benchmark.sh", + "preprof": "npm run prepare", + "prof": "bash prof.sh", + "benchclean": "node benchclean.js" + }, + "prettier": { + "semi": false, + "printWidth": 75, + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "jsxSingleQuote": false, + "bracketSameLine": true, + "arrowParens": "avoid", + "endOfLine": "lf" }, "dependencies": { "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^7.4.1", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" }, "devDependencies": { - "memfs": "^3.2.0", - "mkdirp": "0", - "rimraf": "^2.2.8", - "tap": "^16.0.1", - "tick": "0.0.6" + "@types/node": "^18.11.18", + "@types/tap": "^15.0.7", + "c8": "^7.12.0", + "eslint-config-prettier": "^8.6.0", + "memfs": "^3.4.13", + "mkdirp": "^2.1.4", + "prettier": "^2.8.3", + "rimraf": "^4.1.3", + "tap": "^16.3.4", + "ts-node": "^10.9.1", + "typedoc": "^0.23.24", + "typescript": "^4.9.4" }, "tap": { - "before": "test/00-setup.js", - "after": "test/zz-cleanup.js", - "statements": 90, - "branches": 90, - "functions": 90, - "lines": 90, - "jobs": 1 - }, - "scripts": { - "prepublish": "npm run benchclean", - "profclean": "rm -f v8.log profile.txt", - "test": "tap", - "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js", - "bench": "bash benchmark.sh", - "prof": "bash prof.sh && cat profile.txt", - "benchclean": "node benchclean.js" + "before": "test/00-setup.ts", + "coverage": false, + "node-arg": [ + "--no-warnings", + "--loader", + "ts-node/esm" + ], + "ts": false }, "license": "ISC", "funding": { "url": "https://github.com/sponsors/isaacs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" } } diff --git a/deps/npm/node_modules/glob/sync.js b/deps/npm/node_modules/glob/sync.js deleted file mode 100644 index af4600dd595081..00000000000000 --- a/deps/npm/node_modules/glob/sync.js +++ /dev/null @@ -1,486 +0,0 @@ -module.exports = globSync -globSync.GlobSync = GlobSync - -var rp = require('fs.realpath') -var minimatch = require('minimatch') -var Minimatch = minimatch.Minimatch -var Glob = require('./glob.js').Glob -var util = require('util') -var path = require('path') -var assert = require('assert') -var isAbsolute = require('path').isAbsolute -var common = require('./common.js') -var setopts = common.setopts -var ownProp = common.ownProp -var childrenIgnored = common.childrenIgnored -var isIgnored = common.isIgnored - -function globSync (pattern, options) { - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - return new GlobSync(pattern, options).found -} - -function GlobSync (pattern, options) { - if (!pattern) - throw new Error('must provide pattern') - - if (typeof options === 'function' || arguments.length === 3) - throw new TypeError('callback provided to sync glob\n'+ - 'See: https://github.com/isaacs/node-glob/issues/167') - - if (!(this instanceof GlobSync)) - return new GlobSync(pattern, options) - - setopts(this, pattern, options) - - if (this.noprocess) - return this - - var n = this.minimatch.set.length - this.matches = new Array(n) - for (var i = 0; i < n; i ++) { - this._process(this.minimatch.set[i], i, false) - } - this._finish() -} - -GlobSync.prototype._finish = function () { - assert.ok(this instanceof GlobSync) - if (this.realpath) { - var self = this - this.matches.forEach(function (matchset, index) { - var set = self.matches[index] = Object.create(null) - for (var p in matchset) { - try { - p = self._makeAbs(p) - var real = rp.realpathSync(p, self.realpathCache) - set[real] = true - } catch (er) { - if (er.syscall === 'stat') - set[self._makeAbs(p)] = true - else - throw er - } - } - }) - } - common.finish(this) -} - - -GlobSync.prototype._process = function (pattern, index, inGlobStar) { - assert.ok(this instanceof GlobSync) - - // Get the first [n] parts of pattern that are all strings. - var n = 0 - while (typeof pattern[n] === 'string') { - n ++ - } - // now n is the index of the first one that is *not* a string. - - // See if there's anything else - var prefix - switch (n) { - // if not, then this is rather simple - case pattern.length: - this._processSimple(pattern.join('/'), index) - return - - case 0: - // pattern *starts* with some non-trivial item. - // going to readdir(cwd), but not include the prefix in matches. - prefix = null - break - - default: - // pattern has some string bits in the front. - // whatever it starts with, whether that's 'absolute' like /foo/bar, - // or 'relative' like '../baz' - prefix = pattern.slice(0, n).join('/') - break - } - - var remain = pattern.slice(n) - - // get the list of entries. - var read - if (prefix === null) - read = '.' - else if (isAbsolute(prefix) || - isAbsolute(pattern.map(function (p) { - return typeof p === 'string' ? p : '[*]' - }).join('/'))) { - if (!prefix || !isAbsolute(prefix)) - prefix = '/' + prefix - read = prefix - } else - read = prefix - - var abs = this._makeAbs(read) - - //if ignored, skip processing - if (childrenIgnored(this, read)) - return - - var isGlobStar = remain[0] === minimatch.GLOBSTAR - if (isGlobStar) - this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) - else - this._processReaddir(prefix, read, abs, remain, index, inGlobStar) -} - - -GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { - var entries = this._readdir(abs, inGlobStar) - - // if the abs isn't a dir, then nothing can match! - if (!entries) - return - - // It will only match dot entries if it starts with a dot, or if - // dot is set. Stuff like @(.foo|.bar) isn't allowed. - var pn = remain[0] - var negate = !!this.minimatch.negate - var rawGlob = pn._glob - var dotOk = this.dot || rawGlob.charAt(0) === '.' - - var matchedEntries = [] - for (var i = 0; i < entries.length; i++) { - var e = entries[i] - if (e.charAt(0) !== '.' || dotOk) { - var m - if (negate && !prefix) { - m = !e.match(pn) - } else { - m = e.match(pn) - } - if (m) - matchedEntries.push(e) - } - } - - var len = matchedEntries.length - // If there are no matched entries, then nothing matches. - if (len === 0) - return - - // if this is the last remaining pattern bit, then no need for - // an additional stat *unless* the user has specified mark or - // stat explicitly. We know they exist, since readdir returned - // them. - - if (remain.length === 1 && !this.mark && !this.stat) { - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - if (prefix) { - if (prefix.slice(-1) !== '/') - e = prefix + '/' + e - else - e = prefix + e - } - - if (e.charAt(0) === '/' && !this.nomount) { - e = path.join(this.root, e) - } - this._emitMatch(index, e) - } - // This was the last one, and no stats were needed - return - } - - // now test all matched entries as stand-ins for that part - // of the pattern. - remain.shift() - for (var i = 0; i < len; i ++) { - var e = matchedEntries[i] - var newPattern - if (prefix) - newPattern = [prefix, e] - else - newPattern = [e] - this._process(newPattern.concat(remain), index, inGlobStar) - } -} - - -GlobSync.prototype._emitMatch = function (index, e) { - if (isIgnored(this, e)) - return - - var abs = this._makeAbs(e) - - if (this.mark) - e = this._mark(e) - - if (this.absolute) { - e = abs - } - - if (this.matches[index][e]) - return - - if (this.nodir) { - var c = this.cache[abs] - if (c === 'DIR' || Array.isArray(c)) - return - } - - this.matches[index][e] = true - - if (this.stat) - this._stat(e) -} - - -GlobSync.prototype._readdirInGlobStar = function (abs) { - // follow all symlinked directories forever - // just proceed as if this is a non-globstar situation - if (this.follow) - return this._readdir(abs, false) - - var entries - var lstat - var stat - try { - lstat = this.fs.lstatSync(abs) - } catch (er) { - if (er.code === 'ENOENT') { - // lstat failed, doesn't exist - return null - } - } - - var isSym = lstat && lstat.isSymbolicLink() - this.symlinks[abs] = isSym - - // If it's not a symlink or a dir, then it's definitely a regular file. - // don't bother doing a readdir in that case. - if (!isSym && lstat && !lstat.isDirectory()) - this.cache[abs] = 'FILE' - else - entries = this._readdir(abs, false) - - return entries -} - -GlobSync.prototype._readdir = function (abs, inGlobStar) { - var entries - - if (inGlobStar && !ownProp(this.symlinks, abs)) - return this._readdirInGlobStar(abs) - - if (ownProp(this.cache, abs)) { - var c = this.cache[abs] - if (!c || c === 'FILE') - return null - - if (Array.isArray(c)) - return c - } - - try { - return this._readdirEntries(abs, this.fs.readdirSync(abs)) - } catch (er) { - this._readdirError(abs, er) - return null - } -} - -GlobSync.prototype._readdirEntries = function (abs, entries) { - // if we haven't asked to stat everything, then just - // assume that everything in there exists, so we can avoid - // having to stat it a second time. - if (!this.mark && !this.stat) { - for (var i = 0; i < entries.length; i ++) { - var e = entries[i] - if (abs === '/') - e = abs + e - else - e = abs + '/' + e - this.cache[e] = true - } - } - - this.cache[abs] = entries - - // mark and cache dir-ness - return entries -} - -GlobSync.prototype._readdirError = function (f, er) { - // handle errors, and cache the information - switch (er.code) { - case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 - case 'ENOTDIR': // totally normal. means it *does* exist. - var abs = this._makeAbs(f) - this.cache[abs] = 'FILE' - if (abs === this.cwdAbs) { - var error = new Error(er.code + ' invalid cwd ' + this.cwd) - error.path = this.cwd - error.code = er.code - throw error - } - break - - case 'ENOENT': // not terribly unusual - case 'ELOOP': - case 'ENAMETOOLONG': - case 'UNKNOWN': - this.cache[this._makeAbs(f)] = false - break - - default: // some unusual error. Treat as failure. - this.cache[this._makeAbs(f)] = false - if (this.strict) - throw er - if (!this.silent) - console.error('glob error', er) - break - } -} - -GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { - - var entries = this._readdir(abs, inGlobStar) - - // no entries means not a dir, so it can never have matches - // foo.txt/** doesn't match foo.txt - if (!entries) - return - - // test without the globstar, and with every child both below - // and replacing the globstar. - var remainWithoutGlobStar = remain.slice(1) - var gspref = prefix ? [ prefix ] : [] - var noGlobStar = gspref.concat(remainWithoutGlobStar) - - // the noGlobStar pattern exits the inGlobStar state - this._process(noGlobStar, index, false) - - var len = entries.length - var isSym = this.symlinks[abs] - - // If it's a symlink, and we're in a globstar, then stop - if (isSym && inGlobStar) - return - - for (var i = 0; i < len; i++) { - var e = entries[i] - if (e.charAt(0) === '.' && !this.dot) - continue - - // these two cases enter the inGlobStar state - var instead = gspref.concat(entries[i], remainWithoutGlobStar) - this._process(instead, index, true) - - var below = gspref.concat(entries[i], remain) - this._process(below, index, true) - } -} - -GlobSync.prototype._processSimple = function (prefix, index) { - // XXX review this. Shouldn't it be doing the mounting etc - // before doing stat? kinda weird? - var exists = this._stat(prefix) - - if (!this.matches[index]) - this.matches[index] = Object.create(null) - - // If it doesn't exist, then just mark the lack of results - if (!exists) - return - - if (prefix && isAbsolute(prefix) && !this.nomount) { - var trail = /[\/\\]$/.test(prefix) - if (prefix.charAt(0) === '/') { - prefix = path.join(this.root, prefix) - } else { - prefix = path.resolve(this.root, prefix) - if (trail) - prefix += '/' - } - } - - if (process.platform === 'win32') - prefix = prefix.replace(/\\/g, '/') - - // Mark this as a match - this._emitMatch(index, prefix) -} - -// Returns either 'DIR', 'FILE', or false -GlobSync.prototype._stat = function (f) { - var abs = this._makeAbs(f) - var needDir = f.slice(-1) === '/' - - if (f.length > this.maxLength) - return false - - if (!this.stat && ownProp(this.cache, abs)) { - var c = this.cache[abs] - - if (Array.isArray(c)) - c = 'DIR' - - // It exists, but maybe not how we need it - if (!needDir || c === 'DIR') - return c - - if (needDir && c === 'FILE') - return false - - // otherwise we have to stat, because maybe c=true - // if we know it exists, but not what it is. - } - - var exists - var stat = this.statCache[abs] - if (!stat) { - var lstat - try { - lstat = this.fs.lstatSync(abs) - } catch (er) { - if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) { - this.statCache[abs] = false - return false - } - } - - if (lstat && lstat.isSymbolicLink()) { - try { - stat = this.fs.statSync(abs) - } catch (er) { - stat = lstat - } - } else { - stat = lstat - } - } - - this.statCache[abs] = stat - - var c = true - if (stat) - c = stat.isDirectory() ? 'DIR' : 'FILE' - - this.cache[abs] = this.cache[abs] || c - - if (needDir && c === 'FILE') - return false - - return c -} - -GlobSync.prototype._mark = function (p) { - return common.mark(this, p) -} - -GlobSync.prototype._makeAbs = function (f) { - return common.makeAbs(this, f) -} diff --git a/deps/npm/node_modules/graceful-fs/package.json b/deps/npm/node_modules/graceful-fs/package.json index 305785687247ce..87babf0248563c 100644 --- a/deps/npm/node_modules/graceful-fs/package.json +++ b/deps/npm/node_modules/graceful-fs/package.json @@ -1,7 +1,7 @@ { "name": "graceful-fs", "description": "A drop-in replacement for fs, making various improvements.", - "version": "4.2.10", + "version": "4.2.11", "repository": { "type": "git", "url": "https://github.com/isaacs/node-graceful-fs" @@ -38,7 +38,7 @@ "import-fresh": "^2.0.0", "mkdirp": "^0.5.0", "rimraf": "^2.2.8", - "tap": "^12.7.0" + "tap": "^16.3.4" }, "files": [ "fs.js", @@ -46,5 +46,8 @@ "legacy-streams.js", "polyfills.js", "clone.js" - ] + ], + "tap": { + "reporter": "classic" + } } diff --git a/deps/npm/node_modules/graceful-fs/polyfills.js b/deps/npm/node_modules/graceful-fs/polyfills.js index 46dea36cc490f4..453f1a9e702d1a 100644 --- a/deps/npm/node_modules/graceful-fs/polyfills.js +++ b/deps/npm/node_modules/graceful-fs/polyfills.js @@ -101,7 +101,7 @@ function patch (fs) { var backoff = 0; fs$rename(from, to, function CB (er) { if (er - && (er.code === "EACCES" || er.code === "EPERM") + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 60000) { setTimeout(function() { fs.stat(to, function (stater, st) { diff --git a/deps/npm/node_modules/has-flag/index.d.ts b/deps/npm/node_modules/has-flag/index.d.ts deleted file mode 100644 index a0a48c89112785..00000000000000 --- a/deps/npm/node_modules/has-flag/index.d.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** -Check if [`argv`](https://nodejs.org/docs/latest/api/process.html#process_process_argv) has a specific flag. - -@param flag - CLI flag to look for. The `--` prefix is optional. -@param argv - CLI arguments. Default: `process.argv`. -@returns Whether the flag exists. - -@example -``` -// $ ts-node foo.ts -f --unicorn --foo=bar -- --rainbow - -// foo.ts -import hasFlag = require('has-flag'); - -hasFlag('unicorn'); -//=> true - -hasFlag('--unicorn'); -//=> true - -hasFlag('f'); -//=> true - -hasFlag('-f'); -//=> true - -hasFlag('foo=bar'); -//=> true - -hasFlag('foo'); -//=> false - -hasFlag('rainbow'); -//=> false -``` -*/ -declare function hasFlag(flag: string, argv?: string[]): boolean; - -export = hasFlag; diff --git a/deps/npm/node_modules/http-proxy-agent/dist/agent.d.ts b/deps/npm/node_modules/http-proxy-agent/dist/agent.d.ts deleted file mode 100644 index 3f043f7f9f7561..00000000000000 --- a/deps/npm/node_modules/http-proxy-agent/dist/agent.d.ts +++ /dev/null @@ -1,32 +0,0 @@ -/// -import net from 'net'; -import { Agent, ClientRequest, RequestOptions } from 'agent-base'; -import { HttpProxyAgentOptions } from '.'; -interface HttpProxyAgentClientRequest extends ClientRequest { - path: string; - output?: string[]; - outputData?: { - data: string; - }[]; - _header?: string | null; - _implicitHeader(): void; -} -/** - * The `HttpProxyAgent` implements an HTTP Agent subclass that connects - * to the specified "HTTP proxy server" in order to proxy HTTP requests. - * - * @api public - */ -export default class HttpProxyAgent extends Agent { - private secureProxy; - private proxy; - constructor(_opts: string | HttpProxyAgentOptions); - /** - * Called when the node-core HTTP client library is creating a - * new HTTP request. - * - * @api protected - */ - callback(req: HttpProxyAgentClientRequest, opts: RequestOptions): Promise; -} -export {}; diff --git a/deps/npm/node_modules/http-proxy-agent/dist/agent.js.map b/deps/npm/node_modules/http-proxy-agent/dist/agent.js.map deleted file mode 100644 index bd3b56aa6dfdbc..00000000000000 --- a/deps/npm/node_modules/http-proxy-agent/dist/agent.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,8CAAsB;AACtB,8CAAsB;AACtB,kDAAgC;AAChC,6DAAqC;AACrC,2CAAkE;AAGlE,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,kBAAkB,CAAC,CAAC;AAY9C,SAAS,OAAO,CAAC,QAAwB;IACxC,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3E,CAAC;AAED;;;;;GAKG;AACH,MAAqB,cAAe,SAAQ,kBAAK;IAIhD,YAAY,KAAqC;QAChD,IAAI,IAA2B,CAAC;QAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,IAAI,GAAG,aAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;aAAM;YACN,IAAI,GAAG,KAAK,CAAC;SACb;QACD,IAAI,CAAC,IAAI,EAAE;YACV,MAAM,IAAI,KAAK,CACd,8DAA8D,CAC9D,CAAC;SACF;QACD,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,MAAM,KAAK,qBAA+B,IAAI,CAAE,CAAC;QAEjD,wDAAwD;QACxD,uBAAuB;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE/D,+DAA+D;QAC/D,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;QAC1C,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACnC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAC9B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAC7B,kEAAkE;YAClE,8DAA8D;YAC9D,iEAAiE;YACjE,8BAA8B;YAC9B,OAAO,KAAK,CAAC,IAAI,CAAC;YAClB,OAAO,KAAK,CAAC,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACG,QAAQ,CACb,GAAgC,EAChC,IAAoB;;YAEpB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YACpC,MAAM,MAAM,GAAG,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEnC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACrB,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;aAC1B;YAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;aACrD;YAED,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE;gBAC5C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,EAAE;gBACzB,yDAAyD;gBACzD,2CAA2C;gBAC3C,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;aACjB;YAED,0DAA0D;YAC1D,0DAA0D;YAC1D,GAAG,CAAC,IAAI,GAAG,aAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAE9B,wDAAwD;YACxD,IAAI,KAAK,CAAC,IAAI,EAAE;gBACf,GAAG,CAAC,SAAS,CACZ,qBAAqB,EACrB,SAAS,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CACrD,CAAC;aACF;YAED,kDAAkD;YAClD,IAAI,MAAkB,CAAC;YACvB,IAAI,WAAW,EAAE;gBAChB,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,KAA8B,CAAC,CAAC;aACrD;iBAAM;gBACN,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,KAA2B,CAAC,CAAC;aAClD;YAED,mEAAmE;YACnE,mEAAmE;YACnE,kEAAkE;YAClE,IAAI,GAAG,CAAC,OAAO,EAAE;gBAChB,IAAI,KAAa,CAAC;gBAClB,IAAI,YAAoB,CAAC;gBACzB,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBAC5D,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;gBACnB,GAAG,CAAC,eAAe,EAAE,CAAC;gBACtB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxC,YAAY;oBACZ,KAAK,CACJ,+DAA+D,CAC/D,CAAC;oBACF,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBACtB,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC7C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC5D,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;iBACvC;qBAAM,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvD,aAAa;oBACb,KAAK,CACJ,+DAA+D,CAC/D,CAAC;oBACF,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC/B,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAC7C,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;wBACrB,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAC7C,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACnD;aACD;YAED,mEAAmE;YACnE,mEAAmE;YACnE,qEAAqE;YACrE,qDAAqD;YACrD,MAAM,IAAA,cAAI,EAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAE9B,OAAO,MAAM,CAAC;QACf,CAAC;KAAA;CACD;AA1ID,iCA0IC"} \ No newline at end of file diff --git a/deps/npm/node_modules/http-proxy-agent/dist/index.d.ts b/deps/npm/node_modules/http-proxy-agent/dist/index.d.ts deleted file mode 100644 index 24bdb52efcedcb..00000000000000 --- a/deps/npm/node_modules/http-proxy-agent/dist/index.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/// -import net from 'net'; -import tls from 'tls'; -import { Url } from 'url'; -import { AgentOptions } from 'agent-base'; -import _HttpProxyAgent from './agent'; -declare function createHttpProxyAgent(opts: string | createHttpProxyAgent.HttpProxyAgentOptions): _HttpProxyAgent; -declare namespace createHttpProxyAgent { - interface BaseHttpProxyAgentOptions { - secureProxy?: boolean; - host?: string | null; - path?: string | null; - port?: string | number | null; - } - export interface HttpProxyAgentOptions extends AgentOptions, BaseHttpProxyAgentOptions, Partial> { - } - export type HttpProxyAgent = _HttpProxyAgent; - export const HttpProxyAgent: typeof _HttpProxyAgent; - export {}; -} -export = createHttpProxyAgent; diff --git a/deps/npm/node_modules/http-proxy-agent/dist/index.js.map b/deps/npm/node_modules/http-proxy-agent/dist/index.js.map deleted file mode 100644 index e07dae5b08455a..00000000000000 --- a/deps/npm/node_modules/http-proxy-agent/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAIA,oDAAsC;AAEtC,SAAS,oBAAoB,CAC5B,IAAyD;IAEzD,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,WAAU,oBAAoB;IAmBhB,mCAAc,GAAG,eAAe,CAAC;IAE9C,oBAAoB,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,CAAC;AAC5D,CAAC,EAtBS,oBAAoB,KAApB,oBAAoB,QAsB7B;AAED,iBAAS,oBAAoB,CAAC"} \ No newline at end of file diff --git a/deps/npm/node_modules/https-proxy-agent/dist/agent.d.ts b/deps/npm/node_modules/https-proxy-agent/dist/agent.d.ts deleted file mode 100644 index 4f1c63624117f0..00000000000000 --- a/deps/npm/node_modules/https-proxy-agent/dist/agent.d.ts +++ /dev/null @@ -1,30 +0,0 @@ -/// -import net from 'net'; -import { Agent, ClientRequest, RequestOptions } from 'agent-base'; -import { HttpsProxyAgentOptions } from '.'; -/** - * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to - * the specified "HTTP(s) proxy server" in order to proxy HTTPS requests. - * - * Outgoing HTTP requests are first tunneled through the proxy server using the - * `CONNECT` HTTP request method to establish a connection to the proxy server, - * and then the proxy server connects to the destination target and issues the - * HTTP request from the proxy server. - * - * `https:` requests have their socket connection upgraded to TLS once - * the connection to the proxy server has been established. - * - * @api public - */ -export default class HttpsProxyAgent extends Agent { - private secureProxy; - private proxy; - constructor(_opts: string | HttpsProxyAgentOptions); - /** - * Called when the node-core HTTP client library is creating a - * new HTTP request. - * - * @api protected - */ - callback(req: ClientRequest, opts: RequestOptions): Promise; -} diff --git a/deps/npm/node_modules/https-proxy-agent/dist/agent.js.map b/deps/npm/node_modules/https-proxy-agent/dist/agent.js.map deleted file mode 100644 index 0af6c17a3e78a3..00000000000000 --- a/deps/npm/node_modules/https-proxy-agent/dist/agent.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,8CAAsB;AACtB,8CAAsB;AACtB,8CAAsB;AACtB,oDAA4B;AAC5B,kDAAgC;AAEhC,2CAAkE;AAElE,kFAAwD;AAExD,MAAM,KAAK,GAAG,eAAW,CAAC,yBAAyB,CAAC,CAAC;AAErD;;;;;;;;;;;;;GAaG;AACH,MAAqB,eAAgB,SAAQ,kBAAK;IAIjD,YAAY,KAAsC;QACjD,IAAI,IAA4B,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC9B,IAAI,GAAG,aAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACxB;aAAM;YACN,IAAI,GAAG,KAAK,CAAC;SACb;QACD,IAAI,CAAC,IAAI,EAAE;YACV,MAAM,IAAI,KAAK,CACd,8DAA8D,CAC9D,CAAC;SACF;QACD,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,CAAC;QAEZ,MAAM,KAAK,qBAAgC,IAAI,CAAE,CAAC;QAElD,wDAAwD;QACxD,uBAAuB;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE/D,+DAA+D;QAC/D,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC;QAC1C,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;YACnC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAC9B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;SACzC;QAED,sCAAsC;QACtC,sEAAsE;QACtE,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,eAAe,IAAI,KAAK,CAAC,EAAE;YACpD,KAAK,CAAC,aAAa,GAAG,CAAC,UAAU,CAAC,CAAC;SACnC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE;YAC7B,kEAAkE;YAClE,8DAA8D;YAC9D,iEAAiE;YACjE,8BAA8B;YAC9B,OAAO,KAAK,CAAC,IAAI,CAAC;YAClB,OAAO,KAAK,CAAC,QAAQ,CAAC;SACtB;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACG,QAAQ,CACb,GAAkB,EAClB,IAAoB;;YAEpB,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YAEpC,kDAAkD;YAClD,IAAI,MAAkB,CAAC;YACvB,IAAI,WAAW,EAAE;gBAChB,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,KAA8B,CAAC,CAAC;aACrD;iBAAM;gBACN,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM,GAAG,aAAG,CAAC,OAAO,CAAC,KAA2B,CAAC,CAAC;aAClD;YAED,MAAM,OAAO,qBAA6B,KAAK,CAAC,OAAO,CAAE,CAAC;YAC1D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,OAAO,GAAG,WAAW,QAAQ,eAAe,CAAC;YAEjD,wDAAwD;YACxD,IAAI,KAAK,CAAC,IAAI,EAAE;gBACf,OAAO,CAAC,qBAAqB,CAAC,GAAG,SAAS,MAAM,CAAC,IAAI,CACpD,KAAK,CAAC,IAAI,CACV,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;aACvB;YAED,iDAAiD;YACjD,0CAA0C;YAC1C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;gBACzC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;aACnB;YACD,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YAEpB,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACxC,OAAO,IAAI,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3C;YAED,MAAM,oBAAoB,GAAG,8BAAkB,CAAC,MAAM,CAAC,CAAC;YAExD,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,MAAM,CAAC,CAAC;YAE/B,MAAM,EACL,UAAU,EACV,QAAQ,EACR,GAAG,MAAM,oBAAoB,CAAC;YAE/B,IAAI,UAAU,KAAK,GAAG,EAAE;gBACvB,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAE3B,IAAI,IAAI,CAAC,cAAc,EAAE;oBACxB,sDAAsD;oBACtD,8CAA8C;oBAC9C,KAAK,CAAC,oCAAoC,CAAC,CAAC;oBAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC;oBAChD,OAAO,aAAG,CAAC,OAAO,iCACd,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,KACjD,MAAM;wBACN,UAAU,IACT,CAAC;iBACH;gBAED,OAAO,MAAM,CAAC;aACd;YAED,oEAAoE;YACpE,kEAAkE;YAClE,iEAAiE;YACjE,qBAAqB;YAErB,iEAAiE;YACjE,0DAA0D;YAC1D,oEAAoE;YACpE,mBAAmB;YACnB,EAAE;YACF,4CAA4C;YAC5C,MAAM,CAAC,OAAO,EAAE,CAAC;YAEjB,MAAM,UAAU,GAAG,IAAI,aAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACvD,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;YAE3B,oEAAoE;YACpE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAa,EAAE,EAAE;gBACpC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBACnD,gBAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAEpC,gEAAgE;gBAChE,8DAA8D;gBAC9D,YAAY;gBACZ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;QACnB,CAAC;KAAA;CACD;AA3JD,kCA2JC;AAED,SAAS,MAAM,CAAC,MAAkC;IACjD,MAAM,CAAC,MAAM,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,MAAe;IACnD,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,OAAO,CAAC,QAAwB;IACxC,OAAO,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3E,CAAC;AAED,SAAS,IAAI,CACZ,GAAM,EACN,GAAG,IAAO;IAIV,MAAM,GAAG,GAAG,EAEX,CAAC;IACF,IAAI,GAAqB,CAAC;IAC1B,KAAK,GAAG,IAAI,GAAG,EAAE;QAChB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACxB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;SACpB;KACD;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"} \ No newline at end of file diff --git a/deps/npm/node_modules/https-proxy-agent/dist/index.d.ts b/deps/npm/node_modules/https-proxy-agent/dist/index.d.ts deleted file mode 100644 index 0d60062ee20794..00000000000000 --- a/deps/npm/node_modules/https-proxy-agent/dist/index.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -/// -import net from 'net'; -import tls from 'tls'; -import { Url } from 'url'; -import { AgentOptions } from 'agent-base'; -import { OutgoingHttpHeaders } from 'http'; -import _HttpsProxyAgent from './agent'; -declare function createHttpsProxyAgent(opts: string | createHttpsProxyAgent.HttpsProxyAgentOptions): _HttpsProxyAgent; -declare namespace createHttpsProxyAgent { - interface BaseHttpsProxyAgentOptions { - headers?: OutgoingHttpHeaders; - secureProxy?: boolean; - host?: string | null; - path?: string | null; - port?: string | number | null; - } - export interface HttpsProxyAgentOptions extends AgentOptions, BaseHttpsProxyAgentOptions, Partial> { - } - export type HttpsProxyAgent = _HttpsProxyAgent; - export const HttpsProxyAgent: typeof _HttpsProxyAgent; - export {}; -} -export = createHttpsProxyAgent; diff --git a/deps/npm/node_modules/https-proxy-agent/dist/index.js.map b/deps/npm/node_modules/https-proxy-agent/dist/index.js.map deleted file mode 100644 index f3ce559de0200d..00000000000000 --- a/deps/npm/node_modules/https-proxy-agent/dist/index.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAKA,oDAAuC;AAEvC,SAAS,qBAAqB,CAC7B,IAA2D;IAE3D,OAAO,IAAI,eAAgB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,WAAU,qBAAqB;IAoBjB,qCAAe,GAAG,eAAgB,CAAC;IAEhD,qBAAqB,CAAC,SAAS,GAAG,eAAgB,CAAC,SAAS,CAAC;AAC9D,CAAC,EAvBS,qBAAqB,KAArB,qBAAqB,QAuB9B;AAED,iBAAS,qBAAqB,CAAC"} \ No newline at end of file diff --git a/deps/npm/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts b/deps/npm/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts deleted file mode 100644 index 7565674a338cb1..00000000000000 --- a/deps/npm/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -/// -import { Readable } from 'stream'; -export interface ProxyResponse { - statusCode: number; - buffered: Buffer; -} -export default function parseProxyResponse(socket: Readable): Promise; diff --git a/deps/npm/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map b/deps/npm/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map deleted file mode 100644 index bacdb84b9ec2fd..00000000000000 --- a/deps/npm/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parse-proxy-response.js","sourceRoot":"","sources":["../src/parse-proxy-response.ts"],"names":[],"mappings":";;;;;AAAA,kDAAgC;AAGhC,MAAM,KAAK,GAAG,eAAW,CAAC,wCAAwC,CAAC,CAAC;AAOpE,SAAwB,kBAAkB,CACzC,MAAgB;IAEhB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtC,+EAA+E;QAC/E,gFAAgF;QAChF,8EAA8E;QAC9E,8BAA8B;QAC9B,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,SAAS,IAAI;YACZ,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;;gBACZ,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,SAAS,OAAO;YACf,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACpC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,SAAS,OAAO,CAAC,GAAW;YAC3B,KAAK,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,SAAS,KAAK;YACb,KAAK,CAAC,OAAO,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,OAAO,CAAC,GAAU;YAC1B,OAAO,EAAE,CAAC;YACV,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QAED,SAAS,MAAM,CAAC,CAAS;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,aAAa,IAAI,CAAC,CAAC,MAAM,CAAC;YAE1B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAElD,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;gBACxB,iBAAiB;gBACjB,KAAK,CAAC,8CAA8C,CAAC,CAAC;gBACtD,IAAI,EAAE,CAAC;gBACP,OAAO;aACP;YAED,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAClC,OAAO,EACP,CAAC,EACD,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CACxB,CAAC;YACF,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,KAAK,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC;YAClD,OAAO,CAAC;gBACP,UAAU;gBACV,QAAQ;aACR,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAExB,IAAI,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACJ,CAAC;AAvED,qCAuEC"} \ No newline at end of file diff --git a/deps/npm/node_modules/iconv-lite/lib/index.d.ts b/deps/npm/node_modules/iconv-lite/lib/index.d.ts deleted file mode 100644 index 99f200f4ab04c3..00000000000000 --- a/deps/npm/node_modules/iconv-lite/lib/index.d.ts +++ /dev/null @@ -1,41 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - * REQUIREMENT: This definition is dependent on the @types/node definition. - * Install with `npm install @types/node --save-dev` - *--------------------------------------------------------------------------------------------*/ - -declare module 'iconv-lite' { - // Basic API - export function decode(buffer: Buffer, encoding: string, options?: Options): string; - - export function encode(content: string, encoding: string, options?: Options): Buffer; - - export function encodingExists(encoding: string): boolean; - - // Stream API - export function decodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - export function encodeStream(encoding: string, options?: Options): NodeJS.ReadWriteStream; - - // Low-level stream APIs - export function getEncoder(encoding: string, options?: Options): EncoderStream; - - export function getDecoder(encoding: string, options?: Options): DecoderStream; -} - -export interface Options { - stripBOM?: boolean; - addBOM?: boolean; - defaultEncoding?: string; -} - -export interface EncoderStream { - write(str: string): Buffer; - end(): Buffer | undefined; -} - -export interface DecoderStream { - write(buf: Buffer): string; - end(): string | undefined; -} diff --git a/deps/npm/node_modules/ieee754/index.d.ts b/deps/npm/node_modules/ieee754/index.d.ts deleted file mode 100644 index 8d4f440975987c..00000000000000 --- a/deps/npm/node_modules/ieee754/index.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -declare namespace ieee754 { - export function read( - buffer: Uint8Array, offset: number, isLE: boolean, mLen: number, - nBytes: number): number; - export function write( - buffer: Uint8Array, value: number, offset: number, isLE: boolean, - mLen: number, nBytes: number): void; - } - - export = ieee754; \ No newline at end of file diff --git a/deps/npm/node_modules/ignore-walk/package.json b/deps/npm/node_modules/ignore-walk/package.json index 97a2854857939b..ae68746218cd8d 100644 --- a/deps/npm/node_modules/ignore-walk/package.json +++ b/deps/npm/node_modules/ignore-walk/package.json @@ -1,24 +1,19 @@ { "name": "ignore-walk", - "version": "6.0.1", + "version": "6.0.2", "description": "Nested/recursive `.gitignore`/`.npmignore` parsing and filtering.", "main": "lib/index.js", "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.11.3", - "mkdirp": "^1.0.4", + "@npmcli/template-oss": "4.12.0", "mutate-fs": "^2.1.1", - "rimraf": "^3.0.2", "tap": "^16.0.1" }, "scripts": { "test": "tap", "posttest": "npm run lint", "lint": "eslint \"**/*.js\"", - "eslint": "eslint", "lintfix": "npm run lint -- --fix", - "npmclilint": "npmcli-lint", - "postsnap": "npm run lintfix --", "postlint": "template-oss-check", "template-oss-apply": "template-oss-apply --force", "test:windows-coverage": "npm pkg set tap.statements=99 --json && npm pkg set tap.branches=98 --json && npm pkg set tap.lines=99 --json", @@ -43,7 +38,7 @@ "lib/" ], "dependencies": { - "minimatch": "^6.1.6" + "minimatch": "^7.4.2" }, "tap": { "test-env": "LC_ALL=sk", @@ -61,7 +56,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.11.3", + "version": "4.12.0", "content": "scripts/template-oss" } } diff --git a/deps/npm/node_modules/indent-string/index.d.ts b/deps/npm/node_modules/indent-string/index.d.ts deleted file mode 100644 index 118523115645a0..00000000000000 --- a/deps/npm/node_modules/indent-string/index.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -declare namespace indentString { - interface Options { - /** - The string to use for the indent. - - @default ' ' - */ - readonly indent?: string; - - /** - Also indent empty lines. - - @default false - */ - readonly includeEmptyLines?: boolean; - } -} - -/** -Indent each line in a string. - -@param string - The string to indent. -@param count - How many times you want `options.indent` repeated. Default: `1`. - -@example -``` -import indentString = require('indent-string'); - -indentString('Unicorns\nRainbows', 4); -//=> ' Unicorns\n Rainbows' - -indentString('Unicorns\nRainbows', 4, {indent: '♥'}); -//=> '♥♥♥♥Unicorns\n♥♥♥♥Rainbows' -``` -*/ -declare function indentString( - string: string, - count?: number, - options?: indentString.Options -): string; - -export = indentString; diff --git a/deps/npm/node_modules/ip-regex/index.d.ts b/deps/npm/node_modules/ip-regex/index.d.ts deleted file mode 100644 index 0999ed287f790f..00000000000000 --- a/deps/npm/node_modules/ip-regex/index.d.ts +++ /dev/null @@ -1,70 +0,0 @@ -declare namespace ip { - interface Options { - /** - Only match an exact string. Useful with `RegExp#test()` to check if a string is an IP address. *(`false` matches any IP address in a string)* - - @default false - */ - readonly exact?: boolean; - - /** - Include boundaries in the regex. When `true`, `192.168.0.2000000000` will report as an invalid IPv4 address. If this option is not set, the mentioned IPv4 address would report as valid (ignoring the trailing zeros). - - @default false - */ - readonly includeBoundaries?: boolean; - } -} - -declare const ip: { - /** - Regular expression for matching IP addresses. - - @returns A regex for matching both IPv4 and IPv6. - - @example - ``` - import ipRegex = require('ip-regex'); - - // Contains an IP address? - ipRegex().test('unicorn 192.168.0.1'); - //=> true - - // Is an IP address? - ipRegex({exact: true}).test('unicorn 192.168.0.1'); - //=> false - - 'unicorn 192.168.0.1 cake 1:2:3:4:5:6:7:8 rainbow'.match(ipRegex()); - //=> ['192.168.0.1', '1:2:3:4:5:6:7:8'] - - // Contains an IP address? - ipRegex({includeBoundaries: true}).test('192.168.0.2000000000'); - //=> false - - // Matches an IP address? - '192.168.0.2000000000'.match(ipRegex({includeBoundaries: true})); - //=> null - ``` - */ - (options?: ip.Options): RegExp; - - /** - @returns A regex for matching IPv4. - */ - v4(options?: ip.Options): RegExp; - - /** - @returns A regex for matching IPv6. - - @example - ``` - import ipRegex = require('ip-regex'); - - ipRegex.v6({exact: true}).test('1:2:3:4:5:6:7:8'); - //=> true - ``` - */ - v6(options?: ip.Options): RegExp; -}; - -export = ip; diff --git a/deps/npm/node_modules/is-cidr/index.d.ts b/deps/npm/node_modules/is-cidr/index.d.ts deleted file mode 100644 index c4ba96a1fe82bc..00000000000000 --- a/deps/npm/node_modules/is-cidr/index.d.ts +++ /dev/null @@ -1,31 +0,0 @@ -declare const isCidr: { - /** - Check if `string` is a IPv4 or IPv6 CIDR address. - @returns Either `4`, `6` (indicating the IP version) or `0` if the string is not a CIDR. - @example - ``` - import isCidr = require('is-cidr'); - isCidr('192.168.0.1/24'); //=> 4 - isCidr('1:2:3:4:5:6:7:8/64'); //=> 6 - isCidr('10.0.0.0'); //=> 0 - ``` - */ - (string: string): 6 | 4 | 0; - - /** - Check if `string` is a IPv4 CIDR address. - */ - v4(string: string): boolean; - - /** - Check if `string` is a IPv6 CIDR address. - @example - ``` - import isCidr = require('is-cidr'); - isCidr.v6('10.0.0.0/24'); //=> false - ``` - */ - v6(string: string): boolean; -}; - -export = isCidr; diff --git a/deps/npm/node_modules/is-fullwidth-code-point/index.d.ts b/deps/npm/node_modules/is-fullwidth-code-point/index.d.ts deleted file mode 100644 index 729d2020516f0b..00000000000000 --- a/deps/npm/node_modules/is-fullwidth-code-point/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -/** -Check if the character represented by a given [Unicode code point](https://en.wikipedia.org/wiki/Code_point) is [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms). - -@param codePoint - The [code point](https://en.wikipedia.org/wiki/Code_point) of a character. - -@example -``` -import isFullwidthCodePoint from 'is-fullwidth-code-point'; - -isFullwidthCodePoint('谢'.codePointAt(0)); -//=> true - -isFullwidthCodePoint('a'.codePointAt(0)); -//=> false -``` -*/ -export default function isFullwidthCodePoint(codePoint: number): boolean; diff --git a/deps/npm/node_modules/just-diff-apply/index.d.ts b/deps/npm/node_modules/just-diff-apply/index.d.ts deleted file mode 100644 index 7547b722f484fb..00000000000000 --- a/deps/npm/node_modules/just-diff-apply/index.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -// Definitions by: Eddie Atkinson - -type Operation = "add" | "replace" | "remove" | "move"; - -type DiffOps = Array<{ - op: Operation; - path: Array; - value?: any; -}>; -type PathConverter = (path: string) => string[]; - -export function diffApply( - obj: T, - diff: DiffOps, - pathConverter?: PathConverter -): T; -export const jsonPatchPathConverter: PathConverter; diff --git a/deps/npm/node_modules/just-diff-apply/index.tests.ts b/deps/npm/node_modules/just-diff-apply/index.tests.ts deleted file mode 100644 index d02ba89b838cdd..00000000000000 --- a/deps/npm/node_modules/just-diff-apply/index.tests.ts +++ /dev/null @@ -1,108 +0,0 @@ -import * as diffObj from "./index"; - -const { diffApply, jsonPatchPathConverter } = diffObj; -const obj1 = { - a: 2, - b: 3, - c: { - d: 5 - } -}; -const arr1 = [1, "bee"]; - -const objOps: diffObj.DiffOps = [ - { - op: "replace", - path: ["a"], - value: 10 - }, - { - op: "remove", - path: ["b"] - }, - { - op: "add", - path: ["e"], - value: 15 - }, - { - op: "remove", - path: ["c", "d"] - } -]; - -const arrOps: diffObj.DiffOps = [ - { - op: "replace", - path: [1], - value: 10 - }, - { - op: "remove", - path: [2] - }, - { - op: "add", - path: [7], - value: 15 - } -]; - -//OK -diffApply(obj1, objOps); -diffApply(obj1, []); -diffApply(arr1, arrOps); -diffApply(arr1, []); -diffApply(obj1, objOps, jsonPatchPathConverter); -diffApply(arr1, arrOps, jsonPatchPathConverter); - -// not OK -// @ts-expect-error -diffApply(obj1); -// @ts-expect-error -diffApply(arr2); -// @ts-expect-error -diffApply("a"); -// @ts-expect-error -diffApply(true); - -// @ts-expect-error -diffApply(obj1, 1); -// @ts-expect-error -diffApply(3, arr2); -// @ts-expect-error -diffApply(obj1, "a"); -// @ts-expect-error -diffApply("b", arr2); - -// @ts-expect-error -diffApply(obj1, [{ op: "delete", path: ["a"] }]); -// @ts-expect-error -diffApply(obj1, [{ op: "delete", path: ["a"] }], jsonPatchPathConverter); -// @ts-expect-error -diffApply(obj1, "a", jsonPatchPathConverter); -// @ts-expect-error -diffApply(obj1, ["a", "b", "c"], jsonPatchPathConverter); - -// @ts-expect-error -diff("a", jsonPatchPathConverter); -// @ts-expect-error -diff(true, jsonPatchPathConverter); - -// @ts-expect-error -diff(obj1, 1, jsonPatchPathConverter); -// @ts-expect-error -diff(3, arr2, jsonPatchPathConverter); -// @ts-expect-error -diff(obj1, "a", jsonPatchPathConverter); -// @ts-expect-error -diff("b", arr2, jsonPatchPathConverter); - -// @ts-expect-error -diff(obj1, obj2, "a"); -// @ts-expect-error -diff(arr1, arr2, 1); -// @ts-expect-error -diff(obj1, arr1, "bee"); -// @ts-expect-error -diff(obj2, arr2, "nope"); diff --git a/deps/npm/node_modules/just-diff/index.cjs b/deps/npm/node_modules/just-diff/index.cjs index 11ad3710b98f4a..5f4fa3400b2074 100644 --- a/deps/npm/node_modules/just-diff/index.cjs +++ b/deps/npm/node_modules/just-diff/index.cjs @@ -79,18 +79,32 @@ function diff(obj1, obj2, pathConverter) { return arr; }); - function getDiff(obj1, obj2, basePath, diffs) { + // we will gather all permutations and return the one with the fewest diffs + var permutations = [{remove: [], replace: [], add: []}]; + + function getDiff({obj1, obj2, basePath, basePathForRemoves, permutation}) { var obj1Keys = Object.keys(obj1); var obj1KeysLength = obj1Keys.length; var obj2Keys = Object.keys(obj2); var obj2KeysLength = obj2Keys.length; var path; + var newPermutation; + + var lengthDelta = obj1.length - obj2.length; + // if both objects are arrays and obj1 length > obj2 length + // we create an additional permutation that trims obj1 from left + if (Array.isArray(obj1) && Array.isArray(obj2) && lengthDelta > 0) { + newPermutation = clonePermutation(permutation); + permutations.push(newPermutation); + } + + // trim from right for (var i = 0; i < obj1KeysLength; i++) { var key = Array.isArray(obj1) ? Number(obj1Keys[i]) : obj1Keys[i]; if (!(key in obj2)) { - path = basePath.concat(key); - diffs.remove.push({ + path = basePathForRemoves.concat(key); + permutation.remove.push({ op: 'remove', path: pathConverter(path), }); @@ -99,55 +113,120 @@ function diff(obj1, obj2, pathConverter) { for (var i = 0; i < obj2KeysLength; i++) { var key = Array.isArray(obj2) ? Number(obj2Keys[i]) : obj2Keys[i]; - var obj1AtKey = obj1[key]; - var obj2AtKey = obj2[key]; - if (!(key in obj1)) { - path = basePath.concat(key); - var obj2Value = obj2[key]; - diffs.add.push({ - op: 'add', + pushReplaces({ + key, + obj1, + obj2, + path: basePath.concat(key), + pathForRemoves: basePath.concat(key), + permutation, + }); + } + + // if we created a new permutation above it means we should also try trimming from left + if (newPermutation) { + for (var i = 0; i < lengthDelta; i++) { + path = basePathForRemoves.concat(i); + newPermutation.remove.push({ + op: 'remove', path: pathConverter(path), - value: obj2Value, }); - } else if (obj1AtKey !== obj2AtKey) { - if ( - Object(obj1AtKey) !== obj1AtKey || - Object(obj2AtKey) !== obj2AtKey - ) { - path = pushReplace(path, basePath, key, diffs, pathConverter, obj2); - } else { - if ( - !Object.keys(obj1AtKey).length && - !Object.keys(obj2AtKey).length && - String(obj1AtKey) != String(obj2AtKey) - ) { - path = pushReplace(path, basePath, key, diffs, pathConverter, obj2); - } else { - getDiff(obj1[key], obj2[key], basePath.concat(key), diffs); - } - } } - } - return diffs; + // now make a copy of obj1 with excess elements left trimmed and see if there any replaces + var obj1Trimmed = obj1.slice(lengthDelta);; + for (var i = 0; i < obj2KeysLength; i++) { + pushReplaces({ + key: i, + obj1: obj1Trimmed, + obj2, + path: basePath.concat(i), + // since list of removes are reversed before presenting result, + // we need to ignore existing parent removes when doing nested removes + pathForRemoves: basePath.concat(i + lengthDelta), + permutation: newPermutation, + }); + } + } } - const finalDiffs = getDiff(obj1, obj2, [], {remove: [], replace: [], add: []}); + + getDiff({ + obj1, + obj2, + basePath: [], + basePathForRemoves: [], + permutation: permutations[0], + }); + + // find the shortest permutation + var finalDiffs = permutations.sort( + (a, b) => diffStepCount(a) > diffStepCount(b) ? 1 : -1 + )[0]; + + // reverse removes since we want to maintain indexes return finalDiffs.remove .reverse() .concat(finalDiffs.replace) .concat(finalDiffs.add); + + function pushReplaces({key, obj1, obj2, path, pathForRemoves, permutation}) { + var obj1AtKey = obj1[key]; + var obj2AtKey = obj2[key]; + + if(!(key in obj1) && obj2AtKey) { + var obj2Value = obj2AtKey; + permutation.add.push({ + op: 'add', + path: pathConverter(path), + value: obj2Value, + }); + } else if(obj1AtKey !== obj2AtKey) { + if(Object(obj1AtKey) !== obj1AtKey || + Object(obj2AtKey) !== obj2AtKey || differentTypes(obj1AtKey, obj2AtKey) + ) { + pushReplace(path, permutation, obj2AtKey); + } else { + if(!Object.keys(obj1AtKey).length && + !Object.keys(obj2AtKey).length && + String(obj1AtKey) != String(obj2AtKey)) { + pushReplace(path, permutation, obj2AtKey); + } else { + getDiff({ + obj1: obj1[key], + obj2: obj2[key], + basePath: path, + basePathForRemoves: pathForRemoves, + permutation}); + } + } + } + } + + function pushReplace(path, diffs, newValue) { + diffs.replace.push({ + op: 'replace', + path: pathConverter(path), + value: newValue, + }); + } } -function pushReplace(path, basePath, key, diffs, pathConverter, obj2) { - path = basePath.concat(key); - diffs.replace.push({ - op: 'replace', - path: pathConverter(path), - value: obj2[key], - }); - return path; +function clonePermutation(permutation) { + return { + remove: permutation.remove.slice(0), + replace: permutation.replace.slice(0), + add: permutation.add.slice(0), + }; +} + +function diffStepCount(permutation) { + return permutation.remove.length + permutation.replace.length + permutation.add.length; } function jsonPatchPathConverter(arrayPath) { return [''].concat(arrayPath).join('/'); } + +function differentTypes(a, b) { + return Object.prototype.toString.call(a) != Object.prototype.toString.call(b); +} diff --git a/deps/npm/node_modules/just-diff/index.d.ts b/deps/npm/node_modules/just-diff/index.d.ts deleted file mode 100644 index 576ddc54957fcc..00000000000000 --- a/deps/npm/node_modules/just-diff/index.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -// Definitions by: Cameron Hunter -// Modified by: Angus Croll -type Operation = "add" | "replace" | "remove"; - -type JSONPatchPathConverter = ( - arrayPath: Array -) => OUTPUT; - -export function diff( - a: object | Array, - b: object | Array, -): Array<{ op: Operation; path: Array; value: any }>; - -export function diff( - a: object | Array, - b: object | Array, - jsonPatchPathConverter: JSONPatchPathConverter -): Array<{ op: Operation; path: PATH; value: any }>; - -export const jsonPatchPathConverter: JSONPatchPathConverter; \ No newline at end of file diff --git a/deps/npm/node_modules/just-diff/index.mjs b/deps/npm/node_modules/just-diff/index.mjs index a0c5834475fea6..7c32c57f507011 100644 --- a/deps/npm/node_modules/just-diff/index.mjs +++ b/deps/npm/node_modules/just-diff/index.mjs @@ -74,18 +74,32 @@ function diff(obj1, obj2, pathConverter) { return arr; }); - function getDiff(obj1, obj2, basePath, diffs) { + // we will gather all permutations and return the one with the fewest diffs + var permutations = [{remove: [], replace: [], add: []}]; + + function getDiff({obj1, obj2, basePath, basePathForRemoves, permutation}) { var obj1Keys = Object.keys(obj1); var obj1KeysLength = obj1Keys.length; var obj2Keys = Object.keys(obj2); var obj2KeysLength = obj2Keys.length; var path; + var newPermutation; + + var lengthDelta = obj1.length - obj2.length; + // if both objects are arrays and obj1 length > obj2 length + // we create an additional permutation that trims obj1 from left + if (Array.isArray(obj1) && Array.isArray(obj2) && lengthDelta > 0) { + newPermutation = clonePermutation(permutation); + permutations.push(newPermutation); + } + + // trim from right for (var i = 0; i < obj1KeysLength; i++) { var key = Array.isArray(obj1) ? Number(obj1Keys[i]) : obj1Keys[i]; if (!(key in obj2)) { - path = basePath.concat(key); - diffs.remove.push({ + path = basePathForRemoves.concat(key); + permutation.remove.push({ op: 'remove', path: pathConverter(path), }); @@ -94,57 +108,121 @@ function diff(obj1, obj2, pathConverter) { for (var i = 0; i < obj2KeysLength; i++) { var key = Array.isArray(obj2) ? Number(obj2Keys[i]) : obj2Keys[i]; - var obj1AtKey = obj1[key]; - var obj2AtKey = obj2[key]; - if (!(key in obj1)) { - path = basePath.concat(key); - var obj2Value = obj2[key]; - diffs.add.push({ - op: 'add', + pushReplaces({ + key, + obj1, + obj2, + path: basePath.concat(key), + pathForRemoves: basePath.concat(key), + permutation, + }); + } + + // if we created a new permutation above it means we should also try trimming from left + if (newPermutation) { + for (var i = 0; i < lengthDelta; i++) { + path = basePathForRemoves.concat(i); + newPermutation.remove.push({ + op: 'remove', path: pathConverter(path), - value: obj2Value, }); - } else if (obj1AtKey !== obj2AtKey) { - if ( - Object(obj1AtKey) !== obj1AtKey || - Object(obj2AtKey) !== obj2AtKey - ) { - path = pushReplace(path, basePath, key, diffs, pathConverter, obj2); - } else { - if ( - !Object.keys(obj1AtKey).length && - !Object.keys(obj2AtKey).length && - String(obj1AtKey) != String(obj2AtKey) - ) { - path = pushReplace(path, basePath, key, diffs, pathConverter, obj2); - } else { - getDiff(obj1[key], obj2[key], basePath.concat(key), diffs); - } - } } - } - return diffs; + // now make a copy of obj1 with excess elements left trimmed and see if there any replaces + var obj1Trimmed = obj1.slice(lengthDelta); for (var i = 0; i < obj2KeysLength; i++) { + pushReplaces({ + key: i, + obj1: obj1Trimmed, + obj2, + path: basePath.concat(i), + // since list of removes are reversed before presenting result, + // we need to ignore existing parent removes when doing nested removes + pathForRemoves: basePath.concat(i + lengthDelta), + permutation: newPermutation, + }); + } + } } - const finalDiffs = getDiff(obj1, obj2, [], {remove: [], replace: [], add: []}); + + getDiff({ + obj1, + obj2, + basePath: [], + basePathForRemoves: [], + permutation: permutations[0], + }); + + // find the shortest permutation + var finalDiffs = permutations.sort( + (a, b) => diffStepCount(a) > diffStepCount(b) ? 1 : -1 + )[0]; + + // reverse removes since we want to maintain indexes return finalDiffs.remove .reverse() .concat(finalDiffs.replace) .concat(finalDiffs.add); + + function pushReplaces({key, obj1, obj2, path, pathForRemoves, permutation}) { + var obj1AtKey = obj1[key]; + var obj2AtKey = obj2[key]; + + if(!(key in obj1) && obj2AtKey) { + var obj2Value = obj2AtKey; + permutation.add.push({ + op: 'add', + path: pathConverter(path), + value: obj2Value, + }); + } else if(obj1AtKey !== obj2AtKey) { + if(Object(obj1AtKey) !== obj1AtKey || + Object(obj2AtKey) !== obj2AtKey || differentTypes(obj1AtKey, obj2AtKey) + ) { + pushReplace(path, permutation, obj2AtKey); + } else { + if(!Object.keys(obj1AtKey).length && + !Object.keys(obj2AtKey).length && + String(obj1AtKey) != String(obj2AtKey)) { + pushReplace(path, permutation, obj2AtKey); + } else { + getDiff({ + obj1: obj1[key], + obj2: obj2[key], + basePath: path, + basePathForRemoves: pathForRemoves, + permutation}); + } + } + } + } + + function pushReplace(path, diffs, newValue) { + diffs.replace.push({ + op: 'replace', + path: pathConverter(path), + value: newValue, + }); + } } -function pushReplace(path, basePath, key, diffs, pathConverter, obj2) { - path = basePath.concat(key); - diffs.replace.push({ - op: 'replace', - path: pathConverter(path), - value: obj2[key], - }); - return path; +function clonePermutation(permutation) { + return { + remove: permutation.remove.slice(0), + replace: permutation.replace.slice(0), + add: permutation.add.slice(0), + }; +} + +function diffStepCount(permutation) { + return permutation.remove.length + permutation.replace.length + permutation.add.length; } function jsonPatchPathConverter(arrayPath) { return [''].concat(arrayPath).join('/'); } +function differentTypes(a, b) { + return Object.prototype.toString.call(a) != Object.prototype.toString.call(b); +} + export {diff, jsonPatchPathConverter}; diff --git a/deps/npm/node_modules/just-diff/index.tests.ts b/deps/npm/node_modules/just-diff/index.tests.ts deleted file mode 100644 index 91eaecd8d49e8b..00000000000000 --- a/deps/npm/node_modules/just-diff/index.tests.ts +++ /dev/null @@ -1,65 +0,0 @@ -import * as diffObj from './index' - -const {diff, jsonPatchPathConverter} = diffObj; -const obj1 = {a: 2, b: 3}; -const obj2 = {a: 2, c: 1}; -const arr1 = [1, 'bee']; -const arr2 = [2, 'bee']; - - -//OK -diff(obj1, obj2); -diff(arr1, arr2); -diff(obj1, arr1); -diff(obj2, arr2); -diff(/yes/, arr1); -diff(new Date(), arr2); - - -diff(obj1, obj2, jsonPatchPathConverter); -diff(arr1, arr2, jsonPatchPathConverter); -diff(obj1, arr1, jsonPatchPathConverter); -diff(obj2, arr2, jsonPatchPathConverter); - -// not OK -// @ts-expect-error -diff(obj1); -// @ts-expect-error -diff(arr2); -// @ts-expect-error -diff('a'); -// @ts-expect-error -diff(true); - -// @ts-expect-error -diff(obj1, 1); -// @ts-expect-error -diff(3, arr2); -// @ts-expect-error -diff(obj1, 'a'); -// @ts-expect-error -diff('b', arr2); - -// @ts-expect-error -diff('a', jsonPatchPathConverter); -// @ts-expect-error -diff(true, jsonPatchPathConverter); - -// @ts-expect-error -diff(obj1, 1, jsonPatchPathConverter); -// @ts-expect-error -diff(3, arr2, jsonPatchPathConverter); -// @ts-expect-error -diff(obj1, 'a', jsonPatchPathConverter); -// @ts-expect-error -diff('b', arr2, jsonPatchPathConverter); - -// @ts-expect-error -diff(obj1, obj2, 'a'); -// @ts-expect-error -diff(arr1, arr2, 1); -// @ts-expect-error -diff(obj1, arr1, 'bee'); -// @ts-expect-error -diff(obj2, arr2, 'nope'); - diff --git a/deps/npm/node_modules/just-diff/package.json b/deps/npm/node_modules/just-diff/package.json index 4456df5db5215a..f0def5fa12dff1 100644 --- a/deps/npm/node_modules/just-diff/package.json +++ b/deps/npm/node_modules/just-diff/package.json @@ -1,6 +1,6 @@ { "name": "just-diff", - "version": "5.2.0", + "version": "6.0.0", "description": "Return an object representing the diffs between two objects. Supports jsonPatch protocol", "type": "module", "exports": { diff --git a/deps/npm/node_modules/libnpmaccess/package.json b/deps/npm/node_modules/libnpmaccess/package.json index 30f83a49e5f2b9..15581fe03ae4d0 100644 --- a/deps/npm/node_modules/libnpmaccess/package.json +++ b/deps/npm/node_modules/libnpmaccess/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -41,7 +41,7 @@ ], "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmdiff/package.json b/deps/npm/node_modules/libnpmdiff/package.json index 32f845e483b320..127b177e81d040 100644 --- a/deps/npm/node_modules/libnpmdiff/package.json +++ b/deps/npm/node_modules/libnpmdiff/package.json @@ -1,6 +1,6 @@ { "name": "libnpmdiff", - "version": "5.0.13", + "version": "5.0.14", "description": "The registry diff", "repository": { "type": "git", @@ -42,23 +42,23 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.5", + "@npmcli/arborist": "^6.2.6", "@npmcli/disparity-colors": "^3.0.0", "@npmcli/installed-package-contents": "^2.0.2", "binary-extensions": "^2.2.0", "diff": "^5.1.0", - "minimatch": "^6.1.6", + "minimatch": "^7.4.2", "npm-package-arg": "^10.1.0", "pacote": "^15.0.8", "tar": "^6.1.13" }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmexec/package.json b/deps/npm/node_modules/libnpmexec/package.json index 5e1d5643cd303c..e693225783007b 100644 --- a/deps/npm/node_modules/libnpmexec/package.json +++ b/deps/npm/node_modules/libnpmexec/package.json @@ -1,6 +1,6 @@ { "name": "libnpmexec", - "version": "5.0.13", + "version": "5.0.14", "files": [ "bin/", "lib/" @@ -52,7 +52,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "bin-links": "^4.0.1", "just-extend": "^6.2.0", "just-safe-set": "^4.2.1", @@ -60,7 +60,7 @@ "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.5", + "@npmcli/arborist": "^6.2.6", "@npmcli/run-script": "^6.0.0", "chalk": "^4.1.0", "ci-info": "^3.7.1", @@ -75,7 +75,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/libnpmfund/package.json b/deps/npm/node_modules/libnpmfund/package.json index dbb9d1f9038c85..1713142b519790 100644 --- a/deps/npm/node_modules/libnpmfund/package.json +++ b/deps/npm/node_modules/libnpmfund/package.json @@ -1,6 +1,6 @@ { "name": "libnpmfund", - "version": "4.0.13", + "version": "4.0.14", "main": "lib/index.js", "files": [ "bin/", @@ -41,18 +41,18 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "tap": "^16.3.4" }, "dependencies": { - "@npmcli/arborist": "^6.2.5" + "@npmcli/arborist": "^6.2.6" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmhook/package.json b/deps/npm/node_modules/libnpmhook/package.json index cd3fb93a3401ed..24f2d309ffd982 100644 --- a/deps/npm/node_modules/libnpmhook/package.json +++ b/deps/npm/node_modules/libnpmhook/package.json @@ -35,7 +35,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -44,7 +44,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmorg/package.json b/deps/npm/node_modules/libnpmorg/package.json index 28ed6b7a3cf417..00d3f9f72e80c4 100644 --- a/deps/npm/node_modules/libnpmorg/package.json +++ b/deps/npm/node_modules/libnpmorg/package.json @@ -28,7 +28,7 @@ ], "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "minipass": "^4.0.2", "nock": "^13.3.0", "tap": "^16.3.4" @@ -49,7 +49,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmpack/package.json b/deps/npm/node_modules/libnpmpack/package.json index 23cd712a7ab3aa..df17d29d07fdac 100644 --- a/deps/npm/node_modules/libnpmpack/package.json +++ b/deps/npm/node_modules/libnpmpack/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpack", - "version": "5.0.13", + "version": "5.0.14", "description": "Programmatic API for the bits behind npm pack", "author": "GitHub Inc.", "main": "lib/index.js", @@ -23,7 +23,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "nock": "^13.3.0", "spawk": "^1.7.1", "tap": "^16.3.4" @@ -36,7 +36,7 @@ "bugs": "https://github.com/npm/libnpmpack/issues", "homepage": "https://npmjs.com/package/libnpmpack", "dependencies": { - "@npmcli/arborist": "^6.2.5", + "@npmcli/arborist": "^6.2.6", "@npmcli/run-script": "^6.0.0", "npm-package-arg": "^10.1.0", "pacote": "^15.0.8" @@ -46,7 +46,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmpublish/lib/publish.js b/deps/npm/node_modules/libnpmpublish/lib/publish.js index 25dedb23633d79..89ca01662cdb57 100644 --- a/deps/npm/node_modules/libnpmpublish/lib/publish.js +++ b/deps/npm/node_modules/libnpmpublish/lib/publish.js @@ -9,7 +9,7 @@ const ciInfo = require('ci-info') const { generateProvenance } = require('./provenance') -const TLOG_BASE_URL = 'https://rekor.sigstore.dev/api/v1/log/entries' +const TLOG_BASE_URL = 'https://search.sigstore.dev/' const publish = async (manifest, tarballData, opts) => { if (manifest.private) { diff --git a/deps/npm/node_modules/libnpmpublish/package.json b/deps/npm/node_modules/libnpmpublish/package.json index 7c04d2adb9f206..1557b8403d1043 100644 --- a/deps/npm/node_modules/libnpmpublish/package.json +++ b/deps/npm/node_modules/libnpmpublish/package.json @@ -1,6 +1,6 @@ { "name": "libnpmpublish", - "version": "7.1.2", + "version": "7.1.3", "description": "Programmatic API for the bits behind npm publish and unpublish", "author": "GitHub Inc.", "main": "lib/index.js", @@ -25,7 +25,7 @@ "devDependencies": { "@npmcli/eslint-config": "^4.0.0", "@npmcli/mock-registry": "^1.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "lodash.clonedeep": "^4.5.0", "nock": "^13.3.0", "tap": "^16.3.4" @@ -52,7 +52,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmsearch/package.json b/deps/npm/node_modules/libnpmsearch/package.json index 8ccd77541e71c7..765c6897360b6b 100644 --- a/deps/npm/node_modules/libnpmsearch/package.json +++ b/deps/npm/node_modules/libnpmsearch/package.json @@ -26,7 +26,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -45,7 +45,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmteam/package.json b/deps/npm/node_modules/libnpmteam/package.json index 333647b127e594..ff4f5a7852a82a 100644 --- a/deps/npm/node_modules/libnpmteam/package.json +++ b/deps/npm/node_modules/libnpmteam/package.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "nock": "^13.3.0", "tap": "^16.3.4" }, @@ -39,7 +39,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" }, "tap": { diff --git a/deps/npm/node_modules/libnpmversion/package.json b/deps/npm/node_modules/libnpmversion/package.json index 2e80f8c3c1a010..46362ae10b1044 100644 --- a/deps/npm/node_modules/libnpmversion/package.json +++ b/deps/npm/node_modules/libnpmversion/package.json @@ -32,7 +32,7 @@ }, "devDependencies": { "@npmcli/eslint-config": "^4.0.0", - "@npmcli/template-oss": "4.12.0", + "@npmcli/template-oss": "4.12.1", "require-inject": "^1.4.4", "tap": "^16.3.4" }, @@ -48,7 +48,7 @@ }, "templateOSS": { "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.", - "version": "4.12.0", + "version": "4.12.1", "content": "../../scripts/template-oss/index.js" } } diff --git a/deps/npm/node_modules/lru-cache/index.d.ts b/deps/npm/node_modules/lru-cache/index.d.ts deleted file mode 100644 index b58395e04a9d16..00000000000000 --- a/deps/npm/node_modules/lru-cache/index.d.ts +++ /dev/null @@ -1,869 +0,0 @@ -// Project: https://github.com/isaacs/node-lru-cache -// Based initially on @types/lru-cache -// https://github.com/DefinitelyTyped/DefinitelyTyped -// used under the terms of the MIT License, shown below. -// -// DefinitelyTyped license: -// ------ -// MIT License -// -// Copyright (c) Microsoft Corporation. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE -// ------ -// -// Changes by Isaac Z. Schlueter released under the terms found in the -// LICENSE file within this project. - -/** - * Integer greater than 0, representing some number of milliseconds, or the - * time at which a TTL started counting from. - */ -declare type LRUMilliseconds = number - -/** - * An integer greater than 0, reflecting the calculated size of items - */ -declare type LRUSize = number - -/** - * An integer greater than 0, reflecting a number of items - */ -declare type LRUCount = number - -declare class LRUCache implements Iterable<[K, V]> { - constructor(options: LRUCache.Options) - - /** - * Number of items in the cache. - * Alias for {@link size} - * - * @deprecated since 7.0 use {@link size} instead - */ - public readonly length: LRUCount - - public readonly max: LRUCount - public readonly maxSize: LRUSize - public readonly maxEntrySize: LRUSize - public readonly sizeCalculation: - | LRUCache.SizeCalculator - | undefined - public readonly dispose: LRUCache.Disposer - /** - * @since 7.4.0 - */ - public readonly disposeAfter: LRUCache.Disposer | null - public readonly noDisposeOnSet: boolean - public readonly ttl: LRUMilliseconds - public readonly ttlResolution: LRUMilliseconds - public readonly ttlAutopurge: boolean - public readonly allowStale: boolean - public readonly updateAgeOnGet: boolean - /** - * @since 7.11.0 - */ - public readonly noDeleteOnStaleGet: boolean - /** - * @since 7.6.0 - */ - public readonly fetchMethod: LRUCache.Fetcher | null - - /** - * The total number of items held in the cache at the current moment. - */ - public readonly size: LRUCount - - /** - * The total size of items in cache when using size tracking. - */ - public readonly calculatedSize: LRUSize - - /** - * Add a value to the cache. - */ - public set( - key: K, - value: V, - options?: LRUCache.SetOptions - ): this - - /** - * Return a value from the cache. Will update the recency of the cache entry - * found. - * - * If the key is not found, {@link get} will return `undefined`. This can be - * confusing when setting values specifically to `undefined`, as in - * `cache.set(key, undefined)`. Use {@link has} to determine whether a key is - * present in the cache at all. - */ - public get(key: K, options?: LRUCache.GetOptions): V | undefined - - /** - * Like {@link get} but doesn't update recency or delete stale items. - * Returns `undefined` if the item is stale, unless {@link allowStale} is set - * either on the cache or in the options object. - */ - public peek(key: K, options?: LRUCache.PeekOptions): V | undefined - - /** - * Check if a key is in the cache, without updating the recency of use. - * Will return false if the item is stale, even though it is technically - * in the cache. - * - * Will not update item age unless {@link updateAgeOnHas} is set in the - * options or constructor. - */ - public has(key: K, options?: LRUCache.HasOptions): boolean - - /** - * Deletes a key out of the cache. - * Returns true if the key was deleted, false otherwise. - */ - public delete(key: K): boolean - - /** - * Clear the cache entirely, throwing away all values. - */ - public clear(): void - - /** - * Delete any stale entries. Returns true if anything was removed, false - * otherwise. - */ - public purgeStale(): boolean - - /** - * Find a value for which the supplied fn method returns a truthy value, - * similar to Array.find(). fn is called as fn(value, key, cache). - */ - public find( - callbackFn: ( - value: V, - key: K, - cache: this - ) => boolean | undefined | void, - options?: LRUCache.GetOptions - ): V | undefined - - /** - * Call the supplied function on each item in the cache, in order from - * most recently used to least recently used. fn is called as - * fn(value, key, cache). Does not update age or recenty of use. - */ - public forEach( - callbackFn: (this: T, value: V, key: K, cache: this) => void, - thisArg?: T - ): void - - /** - * The same as {@link forEach} but items are iterated over in reverse - * order. (ie, less recently used items are iterated over first.) - */ - public rforEach( - callbackFn: (this: T, value: V, key: K, cache: this) => void, - thisArg?: T - ): void - - /** - * Return a generator yielding the keys in the cache, - * in order from most recently used to least recently used. - */ - public keys(): Generator - - /** - * Inverse order version of {@link keys} - * - * Return a generator yielding the keys in the cache, - * in order from least recently used to most recently used. - */ - public rkeys(): Generator - - /** - * Return a generator yielding the values in the cache, - * in order from most recently used to least recently used. - */ - public values(): Generator - - /** - * Inverse order version of {@link values} - * - * Return a generator yielding the values in the cache, - * in order from least recently used to most recently used. - */ - public rvalues(): Generator - - /** - * Return a generator yielding `[key, value]` pairs, - * in order from most recently used to least recently used. - */ - public entries(): Generator<[K, V], void, void> - - /** - * Inverse order version of {@link entries} - * - * Return a generator yielding `[key, value]` pairs, - * in order from least recently used to most recently used. - */ - public rentries(): Generator<[K, V], void, void> - - /** - * Iterating over the cache itself yields the same results as - * {@link entries} - */ - public [Symbol.iterator](): Generator<[K, V], void, void> - - /** - * Return an array of [key, entry] objects which can be passed to - * cache.load() - */ - public dump(): Array<[K, LRUCache.Entry]> - - /** - * Reset the cache and load in the items in entries in the order listed. - * Note that the shape of the resulting cache may be different if the - * same options are not used in both caches. - */ - public load( - cacheEntries: ReadonlyArray<[K, LRUCache.Entry]> - ): void - - /** - * Evict the least recently used item, returning its value or `undefined` - * if cache is empty. - */ - public pop(): V | undefined - - /** - * Deletes a key out of the cache. - * - * @deprecated since 7.0 use delete() instead - */ - public del(key: K): boolean - - /** - * Clear the cache entirely, throwing away all values. - * - * @deprecated since 7.0 use clear() instead - */ - public reset(): void - - /** - * Manually iterates over the entire cache proactively pruning old entries. - * - * @deprecated since 7.0 use purgeStale() instead - */ - public prune(): boolean - - /** - * Make an asynchronous cached fetch using the {@link fetchMethod} function. - * - * If multiple fetches for the same key are issued, then they will all be - * coalesced into a single call to fetchMethod. - * - * Note that this means that handling options such as - * {@link allowStaleOnFetchAbort}, {@link signal}, and - * {@link allowStaleOnFetchRejection} will be determined by the FIRST fetch() - * call for a given key. - * - * This is a known (fixable) shortcoming which will be addresed on when - * someone complains about it, as the fix would involve added complexity and - * may not be worth the costs for this edge case. - * - * since: 7.6.0 - */ - public fetch( - key: K, - options?: LRUCache.FetchOptions - ): Promise - - /** - * since: 7.6.0 - */ - public getRemainingTTL(key: K): LRUMilliseconds -} - -declare namespace LRUCache { - type DisposeReason = 'evict' | 'set' | 'delete' - - type SizeCalculator = (value: V, key: K) => LRUSize - type Disposer = ( - value: V, - key: K, - reason: DisposeReason - ) => void - type Fetcher = ( - key: K, - staleValue: V | undefined, - options: FetcherOptions - ) => Promise | V | void | undefined - - interface DeprecatedOptions { - /** - * alias for ttl - * - * @deprecated since 7.0 use options.ttl instead - */ - maxAge?: LRUMilliseconds - - /** - * alias for {@link sizeCalculation} - * - * @deprecated since 7.0 use {@link sizeCalculation} instead - */ - length?: SizeCalculator - - /** - * alias for allowStale - * - * @deprecated since 7.0 use options.allowStale instead - */ - stale?: boolean - } - - interface LimitedByCount { - /** - * The number of most recently used items to keep. - * Note that we may store fewer items than this if maxSize is hit. - */ - max: LRUCount - } - - type MaybeMaxEntrySizeLimit = - | { - /** - * The maximum allowed size for any single item in the cache. - * - * If a larger item is passed to {@link set} or returned by a - * {@link fetchMethod}, then it will not be stored in the cache. - */ - maxEntrySize: LRUSize - sizeCalculation?: SizeCalculator - } - | {} - - interface LimitedBySize { - /** - * If you wish to track item size, you must provide a maxSize - * note that we still will only keep up to max *actual items*, - * if max is set, so size tracking may cause fewer than max items - * to be stored. At the extreme, a single item of maxSize size - * will cause everything else in the cache to be dropped when it - * is added. Use with caution! - * - * Note also that size tracking can negatively impact performance, - * though for most cases, only minimally. - */ - maxSize: LRUSize - - /** - * Function to calculate size of items. Useful if storing strings or - * buffers or other items where memory size depends on the object itself. - * - * Items larger than {@link maxEntrySize} will not be stored in the cache. - * - * Note that when {@link maxSize} or {@link maxEntrySize} are set, every - * item added MUST have a size specified, either via a `sizeCalculation` in - * the constructor, or `sizeCalculation` or {@link size} options to - * {@link set}. - */ - sizeCalculation?: SizeCalculator - } - - interface LimitedByTTL { - /** - * Max time in milliseconds for items to live in cache before they are - * considered stale. Note that stale items are NOT preemptively removed - * by default, and MAY live in the cache, contributing to its LRU max, - * long after they have expired. - * - * Also, as this cache is optimized for LRU/MRU operations, some of - * the staleness/TTL checks will reduce performance, as they will incur - * overhead by deleting items. - * - * Must be an integer number of ms, defaults to 0, which means "no TTL" - */ - ttl: LRUMilliseconds - - /** - * Boolean flag to tell the cache to not update the TTL when - * setting a new value for an existing key (ie, when updating a value - * rather than inserting a new value). Note that the TTL value is - * _always_ set (if provided) when adding a new entry into the cache. - * - * @default false - * @since 7.4.0 - */ - noUpdateTTL?: boolean - - /** - * Minimum amount of time in ms in which to check for staleness. - * Defaults to 1, which means that the current time is checked - * at most once per millisecond. - * - * Set to 0 to check the current time every time staleness is tested. - * (This reduces performance, and is theoretically unnecessary.) - * - * Setting this to a higher value will improve performance somewhat - * while using ttl tracking, albeit at the expense of keeping stale - * items around a bit longer than their TTLs would indicate. - * - * @default 1 - * @since 7.1.0 - */ - ttlResolution?: LRUMilliseconds - - /** - * Preemptively remove stale items from the cache. - * Note that this may significantly degrade performance, - * especially if the cache is storing a large number of items. - * It is almost always best to just leave the stale items in - * the cache, and let them fall out as new items are added. - * - * Note that this means that {@link allowStale} is a bit pointless, - * as stale items will be deleted almost as soon as they expire. - * - * Use with caution! - * - * @default false - * @since 7.1.0 - */ - ttlAutopurge?: boolean - - /** - * Return stale items from {@link get} before disposing of them. - * Return stale values from {@link fetch} while performing a call - * to the {@link fetchMethod} in the background. - * - * @default false - */ - allowStale?: boolean - - /** - * Update the age of items on {@link get}, renewing their TTL - * - * @default false - */ - updateAgeOnGet?: boolean - - /** - * Do not delete stale items when they are retrieved with {@link get}. - * Note that the {@link get} return value will still be `undefined` unless - * allowStale is true. - * - * @default false - * @since 7.11.0 - */ - noDeleteOnStaleGet?: boolean - - /** - * Update the age of items on {@link has}, renewing their TTL - * - * @default false - */ - updateAgeOnHas?: boolean - } - - type SafetyBounds = - | LimitedByCount - | LimitedBySize - | LimitedByTTL - - // options shared by all three of the limiting scenarios - interface SharedOptions { - /** - * Function that is called on items when they are dropped from the cache. - * This can be handy if you want to close file descriptors or do other - * cleanup tasks when items are no longer accessible. Called with `key, - * value`. It's called before actually removing the item from the - * internal cache, so it is *NOT* safe to re-add them. - * Use {@link disposeAfter} if you wish to dispose items after they have - * been full removed, when it is safe to add them back to the cache. - */ - dispose?: Disposer - - /** - * The same as dispose, but called *after* the entry is completely - * removed and the cache is once again in a clean state. It is safe to - * add an item right back into the cache at this point. - * However, note that it is *very* easy to inadvertently create infinite - * recursion this way. - * - * @since 7.3.0 - */ - disposeAfter?: Disposer - - /** - * Set to true to suppress calling the dispose() function if the entry - * key is still accessible within the cache. - * This may be overridden by passing an options object to {@link set}. - * - * @default false - */ - noDisposeOnSet?: boolean - - /** - * Function that is used to make background asynchronous fetches. Called - * with `fetchMethod(key, staleValue, { signal, options, context })`. - * - * If `fetchMethod` is not provided, then {@link fetch} is - * equivalent to `Promise.resolve(cache.get(key))`. - * - * The `fetchMethod` should ONLY return `undefined` in cases where the - * abort controller has sent an abort signal. - * - * @since 7.6.0 - */ - fetchMethod?: LRUCache.Fetcher - - /** - * Set to true to suppress the deletion of stale data when a - * {@link fetchMethod} throws an error or returns a rejected promise - * - * This may be overridden in the {@link fetchMethod}. - * - * @default false - * @since 7.10.0 - */ - noDeleteOnFetchRejection?: boolean - - /** - * Set to true to allow returning stale data when a {@link fetchMethod} - * throws an error or returns a rejected promise. Note that this - * differs from using {@link allowStale} in that stale data will - * ONLY be returned in the case that the fetch fails, not any other - * times. - * - * This may be overridden in the {@link fetchMethod}. - * - * @default false - * @since 7.16.0 - */ - allowStaleOnFetchRejection?: boolean - - /** - * - * Set to true to ignore the `abort` event emitted by the `AbortSignal` - * object passed to {@link fetchMethod}, and still cache the - * resulting resolution value, as long as it is not `undefined`. - * - * When used on its own, this means aborted {@link fetch} calls are not - * immediately resolved or rejected when they are aborted, and instead take - * the full time to await. - * - * When used with {@link allowStaleOnFetchAbort}, aborted {@link fetch} - * calls will resolve immediately to their stale cached value or - * `undefined`, and will continue to process and eventually update the - * cache when they resolve, as long as the resulting value is not - * `undefined`, thus supporting a "return stale on timeout while - * refreshing" mechanism by passing `AbortSignal.timeout(n)` as the signal. - * - * **Note**: regardless of this setting, an `abort` event _is still emitted - * on the `AbortSignal` object_, so may result in invalid results when - * passed to other underlying APIs that use AbortSignals. - * - * This may be overridden in the {@link fetchMethod} or the call to - * {@link fetch}. - * - * @default false - * @since 7.17.0 - */ - ignoreFetchAbort?: boolean - - /** - * Set to true to return a stale value from the cache when the - * `AbortSignal` passed to the {@link fetchMethod} dispatches an `'abort'` - * event, whether user-triggered, or due to internal cache behavior. - * - * Unless {@link ignoreFetchAbort} is also set, the underlying - * {@link fetchMethod} will still be considered canceled, and its return - * value will be ignored and not cached. - * - * This may be overridden in the {@link fetchMethod} or the call to - * {@link fetch}. - * - * @default false - * @since 7.17.0 - */ - allowStaleOnFetchAbort?: boolean - - /** - * Set to any value in the constructor or {@link fetch} options to - * pass arbitrary data to the {@link fetchMethod} in the {@link context} - * options field. - * - * @since 7.12.0 - */ - fetchContext?: any - } - - type Options = SharedOptions & - DeprecatedOptions & - SafetyBounds & - MaybeMaxEntrySizeLimit - - /** - * options which override the options set in the LRUCache constructor - * when making calling {@link set}. - */ - interface SetOptions { - /** - * A value for the size of the entry, prevents calls to - * {@link sizeCalculation}. - * - * Items larger than {@link maxEntrySize} will not be stored in the cache. - * - * Note that when {@link maxSize} or {@link maxEntrySize} are set, every - * item added MUST have a size specified, either via a `sizeCalculation` in - * the constructor, or {@link sizeCalculation} or `size` options to - * {@link set}. - */ - size?: LRUSize - /** - * Overrides the {@link sizeCalculation} method set in the constructor. - * - * Items larger than {@link maxEntrySize} will not be stored in the cache. - * - * Note that when {@link maxSize} or {@link maxEntrySize} are set, every - * item added MUST have a size specified, either via a `sizeCalculation` in - * the constructor, or `sizeCalculation` or {@link size} options to - * {@link set}. - */ - sizeCalculation?: SizeCalculator - ttl?: LRUMilliseconds - start?: LRUMilliseconds - noDisposeOnSet?: boolean - noUpdateTTL?: boolean - status?: Status - } - - /** - * options which override the options set in the LRUCAche constructor - * when calling {@link has}. - */ - interface HasOptions { - updateAgeOnHas?: boolean - status: Status - } - - /** - * options which override the options set in the LRUCache constructor - * when calling {@link get}. - */ - interface GetOptions { - allowStale?: boolean - updateAgeOnGet?: boolean - noDeleteOnStaleGet?: boolean - status?: Status - } - - /** - * options which override the options set in the LRUCache constructor - * when calling {@link peek}. - */ - interface PeekOptions { - allowStale?: boolean - } - - /** - * Options object passed to the {@link fetchMethod} - * - * May be mutated by the {@link fetchMethod} to affect the behavior of the - * resulting {@link set} operation on resolution, or in the case of - * {@link noDeleteOnFetchRejection}, {@link ignoreFetchAbort}, and - * {@link allowStaleOnFetchRejection}, the handling of failure. - */ - interface FetcherFetchOptions { - allowStale?: boolean - updateAgeOnGet?: boolean - noDeleteOnStaleGet?: boolean - size?: LRUSize - sizeCalculation?: SizeCalculator - ttl?: LRUMilliseconds - noDisposeOnSet?: boolean - noUpdateTTL?: boolean - noDeleteOnFetchRejection?: boolean - allowStaleOnFetchRejection?: boolean - ignoreFetchAbort?: boolean - allowStaleOnFetchAbort?: boolean - status?: Status - } - - /** - * Status object that may be passed to {@link fetch}, {@link get}, - * {@link set}, and {@link has}. - */ - interface Status { - /** - * The status of a set() operation. - * - * - add: the item was not found in the cache, and was added - * - update: the item was in the cache, with the same value provided - * - replace: the item was in the cache, and replaced - * - miss: the item was not added to the cache for some reason - */ - set?: 'add' | 'update' | 'replace' | 'miss' - - /** - * the ttl stored for the item, or undefined if ttls are not used. - */ - ttl?: LRUMilliseconds - - /** - * the start time for the item, or undefined if ttls are not used. - */ - start?: LRUMilliseconds - - /** - * The timestamp used for TTL calculation - */ - now?: LRUMilliseconds - - /** - * the remaining ttl for the item, or undefined if ttls are not used. - */ - remainingTTL?: LRUMilliseconds - - /** - * The calculated size for the item, if sizes are used. - */ - size?: LRUSize - - /** - * A flag indicating that the item was not stored, due to exceeding the - * {@link maxEntrySize} - */ - maxEntrySizeExceeded?: true - - /** - * The old value, specified in the case of `set:'update'` or - * `set:'replace'` - */ - oldValue?: V - - /** - * The results of a {@link has} operation - * - * - hit: the item was found in the cache - * - stale: the item was found in the cache, but is stale - * - miss: the item was not found in the cache - */ - has?: 'hit' | 'stale' | 'miss' - - /** - * The status of a {@link fetch} operation. - * Note that this can change as the underlying fetch() moves through - * various states. - * - * - inflight: there is another fetch() for this key which is in process - * - get: there is no fetchMethod, so {@link get} was called. - * - miss: the item is not in cache, and will be fetched. - * - hit: the item is in the cache, and was resolved immediately. - * - stale: the item is in the cache, but stale. - * - refresh: the item is in the cache, and not stale, but - * {@link forceRefresh} was specified. - */ - fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh' - - /** - * The {@link fetchMethod} was called - */ - fetchDispatched?: true - - /** - * The cached value was updated after a successful call to fetchMethod - */ - fetchUpdated?: true - - /** - * The reason for a fetch() rejection. Either the error raised by the - * {@link fetchMethod}, or the reason for an AbortSignal. - */ - fetchError?: Error - - /** - * The fetch received an abort signal - */ - fetchAborted?: true - - /** - * The abort signal received was ignored, and the fetch was allowed to - * continue. - */ - fetchAbortIgnored?: true - - /** - * The fetchMethod promise resolved successfully - */ - fetchResolved?: true - - /** - * The fetchMethod promise was rejected - */ - fetchRejected?: true - - /** - * The status of a {@link get} operation. - * - * - fetching: The item is currently being fetched. If a previous value is - * present and allowed, that will be returned. - * - stale: The item is in the cache, and is stale. - * - hit: the item is in the cache - * - miss: the item is not in the cache - */ - get?: 'stale' | 'hit' | 'miss' - - /** - * A fetch or get operation returned a stale value. - */ - returnedStale?: true - } - - /** - * options which override the options set in the LRUCache constructor - * when calling {@link fetch}. - * - * This is the union of GetOptions and SetOptions, plus - * {@link noDeleteOnFetchRejection}, {@link allowStaleOnFetchRejection}, - * {@link forceRefresh}, and {@link fetchContext} - */ - interface FetchOptions extends FetcherFetchOptions { - forceRefresh?: boolean - fetchContext?: any - signal?: AbortSignal - status?: Status - } - - interface FetcherOptions { - signal: AbortSignal - options: FetcherFetchOptions - /** - * Object provided in the {@link fetchContext} option - */ - context: any - } - - interface Entry { - value: V - ttl?: LRUMilliseconds - size?: LRUSize - start?: LRUMilliseconds - } -} - -export = LRUCache diff --git a/deps/npm/node_modules/minimatch/dist/cjs/_parse.js b/deps/npm/node_modules/minimatch/dist/cjs/_parse.js new file mode 100644 index 00000000000000..4387a26171dfe8 --- /dev/null +++ b/deps/npm/node_modules/minimatch/dist/cjs/_parse.js @@ -0,0 +1,300 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parse = void 0; +// parse a single path portion +const brace_expressions_js_1 = require("./brace-expressions.js"); +const assert_valid_pattern_js_1 = require("./assert-valid-pattern.js"); +const globUnescape = (s) => s.replace(/\\(.)/g, '$1'); +const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +// "abc" -> { a:true, b:true, c:true } +const charSet = (s) => s.split('').reduce((set, c) => { + set[c] = true; + return set; +}, {}); +const plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)' }, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' }, +}; +// characters that need to be escaped in RegExp. +const reSpecials = charSet('().*{}+?[]^$\\!'); +// characters that indicate we have to add the pattern start +const addPatternStartSet = charSet('[.('); +// any single thing other than / +// don't need to escape / when using new RegExp() +const qmark = '[^/]'; +// * => any number of characters +const star = qmark + '*?'; +// TODO: take an offset and length, so we can sub-parse the extglobs +const parse = (options, pattern, debug) => { + (0, assert_valid_pattern_js_1.assertValidPattern)(pattern); + if (pattern === '') + return ''; + let re = ''; + let hasMagic = false; + let escaping = false; + // ? => one single character + const patternListStack = []; + const negativeLists = []; + let stateChar = false; + let uflag = false; + let pl; + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. However, if the pattern + // starts with ., then traversal patterns can match. + let dotTravAllowed = pattern.charAt(0) === '.'; + let dotFileAllowed = options.dot || dotTravAllowed; + const patternStart = () => dotTravAllowed + ? '' + : dotFileAllowed + ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' + : '(?!\\.)'; + const subPatternStart = (p) => p.charAt(0) === '.' + ? '' + : options.dot + ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' + : '(?!\\.)'; + const clearStateChar = () => { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star; + hasMagic = true; + break; + case '?': + re += qmark; + hasMagic = true; + break; + default: + re += '\\' + stateChar; + break; + } + debug('clearStateChar %j %j', stateChar, re); + stateChar = false; + } + }; + for (let i = 0, c; i < pattern.length && (c = pattern.charAt(i)); i++) { + debug('%s\t%s %s %j', pattern, i, re, c); + // skip over any that are escaped. + if (escaping) { + // completely not allowed, even escaped. + // should be impossible. + /* c8 ignore start */ + if (c === '/') { + return false; + } + /* c8 ignore stop */ + if (reSpecials[c]) { + re += '\\'; + } + re += c; + escaping = false; + continue; + } + switch (c) { + // Should already be path-split by now. + /* c8 ignore start */ + case '/': { + return false; + } + /* c8 ignore stop */ + case '\\': + clearStateChar(); + escaping = true; + continue; + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c); + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + debug('call clearStateChar %j', stateChar); + clearStateChar(); + stateChar = c; + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) + clearStateChar(); + continue; + case '(': { + if (!stateChar) { + re += '\\('; + continue; + } + const plEntry = { + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close, + }; + debug(pattern, '\t', plEntry); + patternListStack.push(plEntry); + // negation is (?:(?!(?:js)(?:))[^/]*) + re += plEntry.open; + // next entry starts with a dot maybe? + if (plEntry.start === 0 && plEntry.type !== '!') { + dotTravAllowed = true; + re += subPatternStart(pattern.slice(i + 1)); + } + debug('plType %j %j', stateChar, re); + stateChar = false; + continue; + } + case ')': { + const plEntry = patternListStack[patternListStack.length - 1]; + if (!plEntry) { + re += '\\)'; + continue; + } + patternListStack.pop(); + // closing an extglob + clearStateChar(); + hasMagic = true; + pl = plEntry; + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close; + if (pl.type === '!') { + negativeLists.push(Object.assign(pl, { reEnd: re.length })); + } + continue; + } + case '|': { + const plEntry = patternListStack[patternListStack.length - 1]; + if (!plEntry) { + re += '\\|'; + continue; + } + clearStateChar(); + re += '|'; + // next subpattern can start with a dot? + if (plEntry.start === 0 && plEntry.type !== '!') { + dotTravAllowed = true; + re += subPatternStart(pattern.slice(i + 1)); + } + continue; + } + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar(); + const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(pattern, i); + if (consumed) { + re += src; + uflag = uflag || needUflag; + i += consumed - 1; + hasMagic = hasMagic || magic; + } + else { + re += '\\['; + } + continue; + case ']': + re += '\\' + c; + continue; + default: + // swallow any state char that wasn't consumed + clearStateChar(); + re += regExpEscape(c); + break; + } // switch + } // for + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + let tail; + tail = re.slice(pl.reStart + pl.open.length); + debug(pattern, 'setting tail', re, pl); + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\'; + // should already be done + /* c8 ignore start */ + } + /* c8 ignore stop */ + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|'; + }); + debug('tail=%j\n %s', tail, tail, pl, re); + const t = pl.type === '*' ? star : pl.type === '?' ? qmark : '\\' + pl.type; + hasMagic = true; + re = re.slice(0, pl.reStart) + t + '\\(' + tail; + } + // handle trailing things that only matter at the very end. + clearStateChar(); + if (escaping) { + // trailing \\ + re += '\\\\'; + } + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + const addPatternStart = addPatternStartSet[re.charAt(0)]; + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (let n = negativeLists.length - 1; n > -1; n--) { + const nl = negativeLists[n]; + const nlBefore = re.slice(0, nl.reStart); + const nlFirst = re.slice(nl.reStart, nl.reEnd - 8); + let nlAfter = re.slice(nl.reEnd); + const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter; + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + const closeParensBefore = nlBefore.split(')').length; + const openParensBefore = nlBefore.split('(').length - closeParensBefore; + let cleanAfter = nlAfter; + for (let i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, ''); + } + nlAfter = cleanAfter; + const dollar = nlAfter === '' ? '(?:$|\\/)' : ''; + re = nlBefore + nlFirst + nlAfter + dollar + nlLast; + } + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re; + } + if (addPatternStart) { + re = patternStart() + re; + } + // if it's nocase, and the lcase/uppercase don't match, it's magic + if (options.nocase && !hasMagic && !options.nocaseMagicOnly) { + hasMagic = pattern.toUpperCase() !== pattern.toLowerCase(); + } + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(re); + } + return re; +}; +exports.parse = parse; +//# sourceMappingURL=_parse.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/cjs/assert-valid-pattern.js b/deps/npm/node_modules/minimatch/dist/cjs/assert-valid-pattern.js new file mode 100644 index 00000000000000..5fc86bbd0116c9 --- /dev/null +++ b/deps/npm/node_modules/minimatch/dist/cjs/assert-valid-pattern.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.assertValidPattern = void 0; +const MAX_PATTERN_LENGTH = 1024 * 64; +const assertValidPattern = (pattern) => { + if (typeof pattern !== 'string') { + throw new TypeError('invalid pattern'); + } + if (pattern.length > MAX_PATTERN_LENGTH) { + throw new TypeError('pattern is too long'); + } +}; +exports.assertValidPattern = assertValidPattern; +//# sourceMappingURL=assert-valid-pattern.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/cjs/brace-expressions.js b/deps/npm/node_modules/minimatch/dist/cjs/brace-expressions.js new file mode 100644 index 00000000000000..0e13eefc4cfee2 --- /dev/null +++ b/deps/npm/node_modules/minimatch/dist/cjs/brace-expressions.js @@ -0,0 +1,152 @@ +"use strict"; +// translate the various posix character classes into unicode properties +// this works across all unicode locales +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseClass = void 0; +// { : [, /u flag required, negated] +const posixClasses = { + '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true], + '[:alpha:]': ['\\p{L}\\p{Nl}', true], + '[:ascii:]': ['\\x' + '00-\\x' + '7f', false], + '[:blank:]': ['\\p{Zs}\\t', true], + '[:cntrl:]': ['\\p{Cc}', true], + '[:digit:]': ['\\p{Nd}', true], + '[:graph:]': ['\\p{Z}\\p{C}', true, true], + '[:lower:]': ['\\p{Ll}', true], + '[:print:]': ['\\p{C}', true], + '[:punct:]': ['\\p{P}', true], + '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true], + '[:upper:]': ['\\p{Lu}', true], + '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true], + '[:xdigit:]': ['A-Fa-f0-9', false], +}; +// only need to escape a few things inside of brace expressions +// escapes: [ \ ] - +const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&'); +// escape all regexp magic characters +const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); +// everything has already been escaped, we just have to join +const rangesToString = (ranges) => ranges.join(''); +// takes a glob string at a posix brace expression, and returns +// an equivalent regular expression source, and boolean indicating +// whether the /u flag needs to be applied, and the number of chars +// consumed to parse the character class. +// This also removes out of order ranges, and returns ($.) if the +// entire class just no good. +const parseClass = (glob, position) => { + const pos = position; + /* c8 ignore start */ + if (glob.charAt(pos) !== '[') { + throw new Error('not in a brace expression'); + } + /* c8 ignore stop */ + const ranges = []; + const negs = []; + let i = pos + 1; + let sawStart = false; + let uflag = false; + let escaping = false; + let negate = false; + let endPos = pos; + let rangeStart = ''; + WHILE: while (i < glob.length) { + const c = glob.charAt(i); + if ((c === '!' || c === '^') && i === pos + 1) { + negate = true; + i++; + continue; + } + if (c === ']' && sawStart && !escaping) { + endPos = i + 1; + break; + } + sawStart = true; + if (c === '\\') { + if (!escaping) { + escaping = true; + i++; + continue; + } + // escaped \ char, fall through and treat like normal char + } + if (c === '[' && !escaping) { + // either a posix class, a collation equivalent, or just a [ + for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) { + if (glob.startsWith(cls, i)) { + // invalid, [a-[] is fine, but not [a-[:alpha]] + if (rangeStart) { + return ['$.', false, glob.length - pos, true]; + } + i += cls.length; + if (neg) + negs.push(unip); + else + ranges.push(unip); + uflag = uflag || u; + continue WHILE; + } + } + } + // now it's just a normal character, effectively + escaping = false; + if (rangeStart) { + // throw this range away if it's not valid, but others + // can still match. + if (c > rangeStart) { + ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c)); + } + else if (c === rangeStart) { + ranges.push(braceEscape(c)); + } + rangeStart = ''; + i++; + continue; + } + // now might be the start of a range. + // can be either c-d or c-] or c] or c] at this point + if (glob.startsWith('-]', i + 1)) { + ranges.push(braceEscape(c + '-')); + i += 2; + continue; + } + if (glob.startsWith('-', i + 1)) { + rangeStart = c; + i += 2; + continue; + } + // not the start of a range, just a single character + ranges.push(braceEscape(c)); + i++; + } + if (endPos < i) { + // didn't see the end of the class, not a valid class, + // but might still be valid as a literal match. + return ['', false, 0, false]; + } + // if we got no ranges and no negates, then we have a range that + // cannot possibly match anything, and that poisons the whole glob + if (!ranges.length && !negs.length) { + return ['$.', false, glob.length - pos, true]; + } + // if we got one positive range, and it's a single character, then that's + // not actually a magic pattern, it's just that one literal character. + // we should not treat that as "magic", we should just return the literal + // character. [_] is a perfectly valid way to escape glob magic chars. + if (negs.length === 0 && + ranges.length === 1 && + /^\\?.$/.test(ranges[0]) && + !negate) { + const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]; + return [regexpEscape(r), false, endPos - pos, false]; + } + const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'; + const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'; + const comb = ranges.length && negs.length + ? '(' + sranges + '|' + snegs + ')' + : ranges.length + ? sranges + : snegs; + return [comb, uflag, endPos - pos, true]; +}; +exports.parseClass = parseClass; +//# sourceMappingURL=brace-expressions.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/cjs/escape.js b/deps/npm/node_modules/minimatch/dist/cjs/escape.js new file mode 100644 index 00000000000000..02a4f8a8e0a588 --- /dev/null +++ b/deps/npm/node_modules/minimatch/dist/cjs/escape.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.escape = void 0; +/** + * Escape all magic characters in a glob pattern. + * + * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape} + * option is used, then characters are escaped by wrapping in `[]`, because + * a magic character wrapped in a character class can only be satisfied by + * that exact character. In this mode, `\` is _not_ escaped, because it is + * not interpreted as a magic character, but instead as a path separator. + */ +const escape = (s, { windowsPathsNoEscape = false, } = {}) => { + // don't need to escape +@! because we escape the parens + // that make those magic, and escaping ! as [!] isn't valid, + // because [!]] is a valid glob class meaning not ']'. + return windowsPathsNoEscape + ? s.replace(/[?*()[\]]/g, '[$&]') + : s.replace(/[?*()[\]\\]/g, '\\$&'); +}; +exports.escape = escape; +//# sourceMappingURL=escape.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/cjs/extglob.js b/deps/npm/node_modules/minimatch/dist/cjs/extglob.js new file mode 100644 index 00000000000000..8d7607b7f7ead4 --- /dev/null +++ b/deps/npm/node_modules/minimatch/dist/cjs/extglob.js @@ -0,0 +1,4 @@ +"use strict"; +// translate an extglob into a regular expression +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=extglob.js.map \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/cjs/index-cjs.d.ts b/deps/npm/node_modules/minimatch/dist/cjs/index-cjs.d.ts deleted file mode 100644 index 29fdd1d95838fd..00000000000000 --- a/deps/npm/node_modules/minimatch/dist/cjs/index-cjs.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -declare const _default: { - (p: string, pattern: string, options?: import("./index.js").MinimatchOptions): boolean; - sep: string; - GLOBSTAR: typeof import("./index.js").GLOBSTAR; - filter: (pattern: string, options?: import("./index.js").MinimatchOptions) => (p: string) => boolean; - defaults: (def: import("./index.js").MinimatchOptions) => any; - braceExpand: (pattern: string, options?: import("./index.js").MinimatchOptions) => string[]; - makeRe: (pattern: string, options?: import("./index.js").MinimatchOptions) => false | import("./index.js").MMRegExp; - match: (list: string[], pattern: string, options?: import("./index.js").MinimatchOptions) => string[]; - Minimatch: typeof import("./index.js").Minimatch; -} & { - default: { - (p: string, pattern: string, options?: import("./index.js").MinimatchOptions): boolean; - sep: string; - GLOBSTAR: typeof import("./index.js").GLOBSTAR; - filter: (pattern: string, options?: import("./index.js").MinimatchOptions) => (p: string) => boolean; - defaults: (def: import("./index.js").MinimatchOptions) => any; - braceExpand: (pattern: string, options?: import("./index.js").MinimatchOptions) => string[]; - makeRe: (pattern: string, options?: import("./index.js").MinimatchOptions) => false | import("./index.js").MMRegExp; - match: (list: string[], pattern: string, options?: import("./index.js").MinimatchOptions) => string[]; - Minimatch: typeof import("./index.js").Minimatch; - }; - minimatch: { - (p: string, pattern: string, options?: import("./index.js").MinimatchOptions): boolean; - sep: string; - GLOBSTAR: typeof import("./index.js").GLOBSTAR; - filter: (pattern: string, options?: import("./index.js").MinimatchOptions) => (p: string) => boolean; - defaults: (def: import("./index.js").MinimatchOptions) => any; - braceExpand: (pattern: string, options?: import("./index.js").MinimatchOptions) => string[]; - makeRe: (pattern: string, options?: import("./index.js").MinimatchOptions) => false | import("./index.js").MMRegExp; - match: (list: string[], pattern: string, options?: import("./index.js").MinimatchOptions) => string[]; - Minimatch: typeof import("./index.js").Minimatch; - }; -}; -export = _default; diff --git a/deps/npm/node_modules/minimatch/dist/cjs/index-cjs.js.map b/deps/npm/node_modules/minimatch/dist/cjs/index-cjs.js.map deleted file mode 100644 index 1a054859a1341b..00000000000000 --- a/deps/npm/node_modules/minimatch/dist/cjs/index-cjs.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"index-cjs.js","sourceRoot":"","sources":["../../src/index-cjs.ts"],"names":[],"mappings":";;;;AAAA,0DAAkC;AAElC,iBAAS,MAAM,CAAC,MAAM,CAAC,kBAAS,EAAE,EAAE,OAAO,EAAE,kBAAS,EAAE,SAAS,EAAT,kBAAS,EAAE,CAAC,CAAA"} \ No newline at end of file diff --git a/deps/npm/node_modules/minimatch/dist/cjs/index.d.ts b/deps/npm/node_modules/minimatch/dist/cjs/index.d.ts deleted file mode 100644 index cca07a8280d896..00000000000000 --- a/deps/npm/node_modules/minimatch/dist/cjs/index.d.ts +++ /dev/null @@ -1,71 +0,0 @@ -export interface MinimatchOptions { - nobrace?: boolean; - nocomment?: boolean; - nonegate?: boolean; - debug?: boolean; - noglobstar?: boolean; - noext?: boolean; - nonull?: boolean; - windowsPathsNoEscape?: boolean; - allowWindowsEscape?: boolean; - partial?: boolean; - dot?: boolean; - nocase?: boolean; - nocaseMagicOnly?: boolean; - matchBase?: boolean; - flipNegate?: boolean; - preserveMultipleSlashes?: boolean; -} -export declare const minimatch: { - (p: string, pattern: string, options?: MinimatchOptions): boolean; - sep: string; - GLOBSTAR: typeof GLOBSTAR; - filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean; - defaults: (def: MinimatchOptions) => typeof minimatch; - braceExpand: (pattern: string, options?: MinimatchOptions) => string[]; - makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp; - match: (list: string[], pattern: string, options?: MinimatchOptions) => string[]; - Minimatch: typeof Minimatch; -}; -export default minimatch; -export declare const sep: string; -export declare const GLOBSTAR: unique symbol; -export declare const filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean; -export declare const defaults: (def: MinimatchOptions) => typeof minimatch; -export declare const braceExpand: (pattern: string, options?: MinimatchOptions) => string[]; -declare const SUBPARSE: unique symbol; -export declare const makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp; -export declare const match: (list: string[], pattern: string, options?: MinimatchOptions) => string[]; -export type MMRegExp = RegExp & { - _src?: string; - _glob?: string; -}; -type SubparseReturn = [string, boolean]; -type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR; -type ParseReturn = ParseReturnFiltered | false; -export declare class Minimatch { - options: MinimatchOptions; - set: ParseReturnFiltered[][]; - pattern: string; - windowsPathsNoEscape: boolean; - nonegate: boolean; - negate: boolean; - comment: boolean; - empty: boolean; - preserveMultipleSlashes: boolean; - partial: boolean; - globSet: string[]; - globParts: string[][]; - regexp: false | null | MMRegExp; - constructor(pattern: string, options?: MinimatchOptions); - debug(..._: any[]): void; - make(): void; - parseNegate(): void; - matchOne(file: string[], pattern: ParseReturn[], partial?: boolean): boolean; - braceExpand(): string[]; - parse(pattern: string, isSub?: typeof SUBPARSE): ParseReturn | SubparseReturn; - makeRe(): false | MMRegExp; - slashSplit(p: string): string[]; - match(f: string, partial?: boolean): boolean; - static defaults(def: MinimatchOptions): typeof Minimatch; -} diff --git a/deps/npm/node_modules/minimatch/dist/cjs/index.js b/deps/npm/node_modules/minimatch/dist/cjs/index.js index 63fc3bdd0b109a..3bb6c3dee58b86 100644 --- a/deps/npm/node_modules/minimatch/dist/cjs/index.js +++ b/deps/npm/node_modules/minimatch/dist/cjs/index.js @@ -3,7 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0; +exports.unescape = exports.escape = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0; +const brace_expansion_1 = __importDefault(require("brace-expansion")); +const brace_expressions_js_1 = require("./brace-expressions.js"); +const escape_js_1 = require("./escape.js"); +const unescape_js_1 = require("./unescape.js"); const minimatch = (p, pattern, options = {}) => { assertValidPattern(pattern); // shortcut: comments match nothing. @@ -66,20 +70,21 @@ const qmarksTestNoExtDot = ([$0]) => { return (f) => f.length === len && f !== '.' && f !== '..'; }; /* c8 ignore start */ -const platform = typeof process === 'object' && process +const defaultPlatform = (typeof process === 'object' && process ? (typeof process.env === 'object' && process.env && process.env.__MINIMATCH_TESTING_PLATFORM__) || process.platform - : 'posix'; -const isWindows = platform === 'win32'; -const path = isWindows ? { sep: '\\' } : { sep: '/' }; + : 'posix'); +const path = { + win32: { sep: '\\' }, + posix: { sep: '/' }, +}; /* c8 ignore stop */ -exports.sep = path.sep; +exports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep; exports.minimatch.sep = exports.sep; exports.GLOBSTAR = Symbol('globstar **'); exports.minimatch.GLOBSTAR = exports.GLOBSTAR; -const brace_expansion_1 = __importDefault(require("brace-expansion")); const plTypes = { '!': { open: '(?:(?!(?:', close: '))[^/]*?)' }, '?': { open: '(?:', close: ')?' }, @@ -127,6 +132,8 @@ const defaults = (def) => { return orig.defaults(ext(def, options)).Minimatch; } }, + unescape: (s, options = {}) => orig.unescape(s, ext(def, options)), + escape: (s, options = {}) => orig.escape(s, ext(def, options)), filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)), defaults: (options) => orig.defaults(ext(def, options)), makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)), @@ -180,7 +187,6 @@ const assertValidPattern = (pattern) => { // when it is the *only* thing in a path portion. Otherwise, any series // of * is equivalent to a single *. Globstar behavior is enabled by // default, and can be disabled by setting options.noglobstar. -const SUBPARSE = Symbol('subparse'); const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe(); exports.makeRe = makeRe; exports.minimatch.makeRe = exports.makeRe; @@ -196,9 +202,8 @@ exports.match = match; exports.minimatch.match = exports.match; // replace stuff like \* with * const globUnescape = (s) => s.replace(/\\(.)/g, '$1'); -const charUnescape = (s) => s.replace(/\\([^-\]])/g, '$1'); +const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/; const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); -const braExpEscape = (s) => s.replace(/[[\]\\]/g, '\\$&'); class Minimatch { options; set; @@ -212,12 +217,18 @@ class Minimatch { partial; globSet; globParts; + nocase; + isWindows; + platform; + windowsNoMagicRoot; regexp; constructor(pattern, options = {}) { assertValidPattern(pattern); options = options || {}; this.options = options; this.pattern = pattern; + this.platform = options.platform || defaultPlatform; + this.isWindows = this.platform === 'win32'; this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false; if (this.windowsPathsNoEscape) { @@ -230,12 +241,29 @@ class Minimatch { this.comment = false; this.empty = false; this.partial = !!options.partial; + this.nocase = !!this.options.nocase; + this.windowsNoMagicRoot = + options.windowsNoMagicRoot !== undefined + ? options.windowsNoMagicRoot + : !!(this.isWindows && this.nocase); this.globSet = []; this.globParts = []; this.set = []; // make the set of regexps etc. this.make(); } + hasMagic() { + if (this.options.magicalBraces && this.set.length > 1) { + return true; + } + for (const pattern of this.set) { + for (const part of pattern) { + if (typeof part !== 'string') + return true; + } + } + return false; + } debug(..._) { } make() { const pattern = this.pattern; @@ -252,73 +280,46 @@ class Minimatch { // step 1: figure out negation, etc. this.parseNegate(); // step 2: expand braces - this.globSet = this.braceExpand(); + this.globSet = [...new Set(this.braceExpand())]; if (options.debug) { this.debug = (...args) => console.error(...args); } this.debug(this.pattern, this.globSet); - // step 3: now we have a set, so turn each one into a series of path-portion - // matching patterns. + // step 3: now we have a set, so turn each one into a series of + // path-portion matching patterns. // These will be regexps, except in the case of "**", which is // set to the GLOBSTAR object for globstar behavior, // and will not contain any / characters + // + // First, we preprocess to make the glob pattern sets a bit simpler + // and deduped. There are some perf-killing patterns that can cause + // problems with a glob walk, but we can simplify them down a bit. const rawGlobParts = this.globSet.map(s => this.slashSplit(s)); - // consecutive globstars are an unncessary perf killer - // also, **/*/... is equivalent to */**/..., so swap all of those - // this turns a pattern like **/*/**/*/x into */*/**/x - // and a pattern like **/x/**/*/y becomes **/x/*/**/y - // the *later* we can push the **, the more efficient it is, - // because we can avoid having to do a recursive walk until - // the walked tree is as shallow as possible. - // Note that this is only true up to the last pattern, though, because - // a/*/** will only match a/b if b is a dir, but a/**/* will match a/b - // regardless, since it's "0 or more path segments" if it's not final. - if (this.options.noglobstar) { - // ** is * anyway - this.globParts = rawGlobParts; - } - else { - // do this swap BEFORE the reduce, so that we can turn a string - // of **/*/**/* into */*/**/** and then reduce the **'s into one - for (const parts of rawGlobParts) { - let swapped; - do { - swapped = false; - for (let i = 0; i < parts.length - 1; i++) { - if (parts[i] === '*' && parts[i - 1] === '**') { - parts[i] = '**'; - parts[i - 1] = '*'; - swapped = true; - } - } - } while (swapped); - } - this.globParts = rawGlobParts.map(parts => { - parts = parts.reduce((set, part) => { - const prev = set[set.length - 1]; - if (part === '**' && prev === '**') { - return set; - } - if (part === '..') { - if (prev && prev !== '..' && prev !== '.' && prev !== '**') { - set.pop(); - return set; - } - } - set.push(part); - return set; - }, []); - return parts.length === 0 ? [''] : parts; - }); - } + this.globParts = this.preprocess(rawGlobParts); this.debug(this.pattern, this.globParts); // glob --> regexps - let set = this.globParts.map((s, _, __) => s.map(ss => this.parse(ss))); + let set = this.globParts.map((s, _, __) => { + if (this.isWindows && this.windowsNoMagicRoot) { + // check if it's a drive or unc path. + const isUNC = s[0] === '' && + s[1] === '' && + (s[2] === '?' || !globMagic.test(s[2])) && + !globMagic.test(s[3]); + const isDrive = /^[a-z]:/i.test(s[0]); + if (isUNC) { + return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]; + } + else if (isDrive) { + return [s[0], ...s.slice(1).map(ss => this.parse(ss))]; + } + } + return s.map(ss => this.parse(ss)); + }); this.debug(this.pattern, set); // filter out everything that didn't compile properly. this.set = set.filter(s => s.indexOf(false) === -1); // do not treat the ? in UNC paths as magic - if (isWindows) { + if (this.isWindows) { for (let i = 0; i < this.set.length; i++) { const p = this.set[i]; if (p[0] === '' && @@ -332,6 +333,276 @@ class Minimatch { } this.debug(this.pattern, this.set); } + // various transforms to equivalent pattern sets that are + // faster to process in a filesystem walk. The goal is to + // eliminate what we can, and push all ** patterns as far + // to the right as possible, even if it increases the number + // of patterns that we have to process. + preprocess(globParts) { + // if we're not in globstar mode, then turn all ** into * + if (this.options.noglobstar) { + for (let i = 0; i < globParts.length; i++) { + for (let j = 0; j < globParts[i].length; j++) { + if (globParts[i][j] === '**') { + globParts[i][j] = '*'; + } + } + } + } + const { optimizationLevel = 1 } = this.options; + if (optimizationLevel >= 2) { + // aggressive optimization for the purpose of fs walking + globParts = this.firstPhasePreProcess(globParts); + globParts = this.secondPhasePreProcess(globParts); + } + else if (optimizationLevel >= 1) { + // just basic optimizations to remove some .. parts + globParts = this.levelOneOptimize(globParts); + } + else { + globParts = this.adjascentGlobstarOptimize(globParts); + } + return globParts; + } + // just get rid of adjascent ** portions + adjascentGlobstarOptimize(globParts) { + return globParts.map(parts => { + let gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + let i = gs; + while (parts[i + 1] === '**') { + i++; + } + if (i !== gs) { + parts.splice(gs, i - gs); + } + } + return parts; + }); + } + // get rid of adjascent ** and resolve .. portions + levelOneOptimize(globParts) { + return globParts.map(parts => { + parts = parts.reduce((set, part) => { + const prev = set[set.length - 1]; + if (part === '**' && prev === '**') { + return set; + } + if (part === '..') { + if (prev && prev !== '..' && prev !== '.' && prev !== '**') { + set.pop(); + return set; + } + } + set.push(part); + return set; + }, []); + return parts.length === 0 ? [''] : parts; + }); + } + levelTwoFileOptimize(parts) { + if (!Array.isArray(parts)) { + parts = this.slashSplit(parts); + } + let didSomething = false; + do { + didSomething = false; + //
    // -> 
    /
    +            if (!this.preserveMultipleSlashes) {
    +                for (let i = 1; i < parts.length - 1; i++) {
    +                    const p = parts[i];
    +                    // don't squeeze out UNC patterns
    +                    if (i === 1 && p === '' && parts[0] === '')
    +                        continue;
    +                    if (p === '.' || p === '') {
    +                        didSomething = true;
    +                        parts.splice(i, 1);
    +                        i--;
    +                    }
    +                }
    +                if (parts[0] === '.' &&
    +                    parts.length === 2 &&
    +                    (parts[1] === '.' || parts[1] === '')) {
    +                    didSomething = true;
    +                    parts.pop();
    +                }
    +            }
    +            // 
    /

    /../ ->

    /
    +            let dd = 0;
    +            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    +                const p = parts[dd - 1];
    +                if (p && p !== '.' && p !== '..' && p !== '**') {
    +                    didSomething = true;
    +                    parts.splice(dd - 1, 2);
    +                    dd -= 2;
    +                }
    +            }
    +        } while (didSomething);
    +        return parts.length === 0 ? [''] : parts;
    +    }
    +    // First phase: single-pattern processing
    +    // 
     is 1 or more portions
    +    //  is 1 or more portions
    +    // 

    is any portion other than ., .., '', or ** + // is . or '' + // + // **/.. is *brutal* for filesystem walking performance, because + // it effectively resets the recursive walk each time it occurs, + // and ** cannot be reduced out by a .. pattern part like a regexp + // or most strings (other than .., ., and '') can be. + // + //

    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} + //

    // -> 
    /
    +    // 
    /

    /../ ->

    /
    +    // **/**/ -> **/
    +    //
    +    // **/*/ -> */**/ <== not valid because ** doesn't follow
    +    // this WOULD be allowed if ** did follow symlinks, or * didn't
    +    firstPhasePreProcess(globParts) {
    +        let didSomething = false;
    +        do {
    +            didSomething = false;
    +            // 
    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} + for (let parts of globParts) { + let gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + let gss = gs; + while (parts[gss + 1] === '**') { + //

    /**/**/ -> 
    /**/
    +                        gss++;
    +                    }
    +                    // eg, if gs is 2 and gss is 4, that means we have 3 **
    +                    // parts, and can remove 2 of them.
    +                    if (gss > gs) {
    +                        parts.splice(gs + 1, gss - gs);
    +                    }
    +                    let next = parts[gs + 1];
    +                    const p = parts[gs + 2];
    +                    const p2 = parts[gs + 3];
    +                    if (next !== '..')
    +                        continue;
    +                    if (!p ||
    +                        p === '.' ||
    +                        p === '..' ||
    +                        !p2 ||
    +                        p2 === '.' ||
    +                        p2 === '..') {
    +                        continue;
    +                    }
    +                    didSomething = true;
    +                    // edit parts in place, and push the new one
    +                    parts.splice(gs, 1);
    +                    const other = parts.slice(0);
    +                    other[gs] = '**';
    +                    globParts.push(other);
    +                    gs--;
    +                }
    +                // 
    // -> 
    /
    +                if (!this.preserveMultipleSlashes) {
    +                    for (let i = 1; i < parts.length - 1; i++) {
    +                        const p = parts[i];
    +                        // don't squeeze out UNC patterns
    +                        if (i === 1 && p === '' && parts[0] === '')
    +                            continue;
    +                        if (p === '.' || p === '') {
    +                            didSomething = true;
    +                            parts.splice(i, 1);
    +                            i--;
    +                        }
    +                    }
    +                    if (parts[0] === '.' &&
    +                        parts.length === 2 &&
    +                        (parts[1] === '.' || parts[1] === '')) {
    +                        didSomething = true;
    +                        parts.pop();
    +                    }
    +                }
    +                // 
    /

    /../ ->

    /
    +                let dd = 0;
    +                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    +                    const p = parts[dd - 1];
    +                    if (p && p !== '.' && p !== '..' && p !== '**') {
    +                        didSomething = true;
    +                        const needDot = dd === 1 && parts[dd + 1] === '**';
    +                        const splin = needDot ? ['.'] : [];
    +                        parts.splice(dd - 1, 2, ...splin);
    +                        if (parts.length === 0)
    +                            parts.push('');
    +                        dd -= 2;
    +                    }
    +                }
    +            }
    +        } while (didSomething);
    +        return globParts;
    +    }
    +    // second phase: multi-pattern dedupes
    +    // {
    /*/,
    /

    /} ->

    /*/
    +    // {
    /,
    /} -> 
    /
    +    // {
    /**/,
    /} -> 
    /**/
    +    //
    +    // {
    /**/,
    /**/

    /} ->

    /**/
    +    // ^-- not valid because ** doens't follow symlinks
    +    secondPhasePreProcess(globParts) {
    +        for (let i = 0; i < globParts.length - 1; i++) {
    +            for (let j = i + 1; j < globParts.length; j++) {
    +                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
    +                if (!matched)
    +                    continue;
    +                globParts[i] = matched;
    +                globParts[j] = [];
    +            }
    +        }
    +        return globParts.filter(gs => gs.length);
    +    }
    +    partsMatch(a, b, emptyGSMatch = false) {
    +        let ai = 0;
    +        let bi = 0;
    +        let result = [];
    +        let which = '';
    +        while (ai < a.length && bi < b.length) {
    +            if (a[ai] === b[bi]) {
    +                result.push(which === 'b' ? b[bi] : a[ai]);
    +                ai++;
    +                bi++;
    +            }
    +            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
    +                result.push(a[ai]);
    +                ai++;
    +            }
    +            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
    +                result.push(b[bi]);
    +                bi++;
    +            }
    +            else if (a[ai] === '*' &&
    +                b[bi] &&
    +                (this.options.dot || !b[bi].startsWith('.')) &&
    +                b[bi] !== '**') {
    +                if (which === 'b')
    +                    return false;
    +                which = 'a';
    +                result.push(a[ai]);
    +                ai++;
    +                bi++;
    +            }
    +            else if (b[bi] === '*' &&
    +                a[ai] &&
    +                (this.options.dot || !a[ai].startsWith('.')) &&
    +                a[ai] !== '**') {
    +                if (which === 'a')
    +                    return false;
    +                which = 'b';
    +                result.push(b[bi]);
    +                ai++;
    +                bi++;
    +            }
    +            else {
    +                return false;
    +            }
    +        }
    +        // if we fall out of the loop, it means they two are identical
    +        // as long as their lengths match
    +        return a.length === b.length && result;
    +    }
         parseNegate() {
             if (this.nonegate)
                 return;
    @@ -355,7 +626,7 @@ class Minimatch {
             const options = this.options;
             // a UNC pattern like //?/c:/* can match a path like c:/x
             // and vice versa
    -        if (isWindows) {
    +        if (this.isWindows) {
                 const fileUNC = file[0] === '' &&
                     file[1] === '' &&
                     file[2] === '?' &&
    @@ -389,6 +660,12 @@ class Minimatch {
                     }
                 }
             }
    +        // resolve and reduce . and .. portions in the file as well.
    +        // dont' need to do the second phase, because it's only one string[]
    +        const { optimizationLevel = 1 } = this.options;
    +        if (optimizationLevel >= 2) {
    +            file = this.levelTwoFileOptimize(file);
    +        }
             this.debug('matchOne', this, { file, pattern });
             this.debug('matchOne', file.length, pattern.length);
             for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
    @@ -536,50 +813,44 @@ class Minimatch {
         braceExpand() {
             return (0, exports.braceExpand)(this.pattern, this.options);
         }
    -    parse(pattern, isSub) {
    +    parse(pattern) {
             assertValidPattern(pattern);
             const options = this.options;
             // shortcuts
    -        if (pattern === '**') {
    -            if (!options.noglobstar)
    -                return exports.GLOBSTAR;
    -            else
    -                pattern = '*';
    -        }
    +        if (pattern === '**')
    +            return exports.GLOBSTAR;
             if (pattern === '')
                 return '';
             // far and away, the most common glob pattern parts are
             // *, *.*, and *.  Add a fast check method for those.
             let m;
             let fastTest = null;
    -        if (isSub !== SUBPARSE) {
    -            if ((m = pattern.match(starRE))) {
    -                fastTest = options.dot ? starTestDot : starTest;
    -            }
    -            else if ((m = pattern.match(starDotExtRE))) {
    -                fastTest = (options.nocase
    -                    ? options.dot
    -                        ? starDotExtTestNocaseDot
    -                        : starDotExtTestNocase
    -                    : options.dot
    -                        ? starDotExtTestDot
    -                        : starDotExtTest)(m[1]);
    -            }
    -            else if ((m = pattern.match(qmarksRE))) {
    -                fastTest = (options.nocase
    -                    ? options.dot
    -                        ? qmarksTestNocaseDot
    -                        : qmarksTestNocase
    -                    : options.dot
    -                        ? qmarksTestDot
    -                        : qmarksTest)(m);
    -            }
    -            else if ((m = pattern.match(starDotStarRE))) {
    -                fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    -            }
    -            else if ((m = pattern.match(dotStarRE))) {
    -                fastTest = dotStarTest;
    -            }
    +        if ((m = pattern.match(starRE))) {
    +            fastTest = options.dot ? starTestDot : starTest;
    +        }
    +        else if ((m = pattern.match(starDotExtRE))) {
    +            fastTest = (options.nocase
    +                ? options.dot
    +                    ? starDotExtTestNocaseDot
    +                    : starDotExtTestNocase
    +                : options.dot
    +                    ? starDotExtTestDot
    +                    : starDotExtTest)(m[1]);
    +        }
    +        else if ((m = pattern.match(qmarksRE))) {
    +            fastTest = (options.nocase
    +                ? options.dot
    +                    ? qmarksTestNocaseDot
    +                    : qmarksTestNocase
    +                : options.dot
    +                    ? qmarksTestDot
    +                    : qmarksTest)(m);
    +        }
    +        else if ((m = pattern.match(starDotStarRE))) {
    +            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    +        }
    +        else if ((m = pattern.match(dotStarRE))) {
    +            fastTest = dotStarTest;
             }
             let re = '';
             let hasMagic = false;
    @@ -588,12 +859,8 @@ class Minimatch {
             const patternListStack = [];
             const negativeLists = [];
             let stateChar = false;
    -        let inClass = false;
    -        let reClassStart = -1;
    -        let classStart = -1;
    -        let cs;
    +        let uflag = false;
             let pl;
    -        let sp;
             // . and .. never match anything that doesn't start with .,
             // even when options.dot is set.  However, if the pattern
             // starts with ., then traversal patterns can match.
    @@ -656,10 +923,6 @@ class Minimatch {
                     }
                     /* c8 ignore stop */
                     case '\\':
    -                    if (inClass && pattern.charAt(i + 1) === '-') {
    -                        re += c;
    -                        continue;
    -                    }
                         clearStateChar();
                         escaping = true;
                         continue;
    @@ -671,15 +934,6 @@ class Minimatch {
                     case '@':
                     case '!':
                         this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c);
    -                    // all of those are literals inside a class, except that
    -                    // the glob [!a] means [^a] in regexp
    -                    if (inClass) {
    -                        this.debug('  in class');
    -                        if (c === '!' && i === classStart + 1)
    -                            c = '^';
    -                        re += c;
    -                        continue;
    -                    }
                         // if we already have a stateChar, then it means
                         // that there was something like ** or +? in there.
                         // Handle the stateChar, then proceed with this one.
    @@ -693,10 +947,6 @@ class Minimatch {
                             clearStateChar();
                         continue;
                     case '(': {
    -                    if (inClass) {
    -                        re += '(';
    -                        continue;
    -                    }
                         if (!stateChar) {
                             re += '\\(';
                             continue;
    @@ -723,7 +973,7 @@ class Minimatch {
                     }
                     case ')': {
                         const plEntry = patternListStack[patternListStack.length - 1];
    -                    if (inClass || !plEntry) {
    +                    if (!plEntry) {
                             re += '\\)';
                             continue;
                         }
    @@ -742,7 +992,7 @@ class Minimatch {
                     }
                     case '|': {
                         const plEntry = patternListStack[patternListStack.length - 1];
    -                    if (inClass || !plEntry) {
    +                    if (!plEntry) {
                             re += '\\|';
                             continue;
                         }
    @@ -759,67 +1009,27 @@ class Minimatch {
                     case '[':
                         // swallow any state-tracking char before the [
                         clearStateChar();
    -                    if (inClass) {
    -                        re += '\\' + c;
    -                        continue;
    +                    const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(pattern, i);
    +                    if (consumed) {
    +                        re += src;
    +                        uflag = uflag || needUflag;
    +                        i += consumed - 1;
    +                        hasMagic = hasMagic || magic;
    +                    }
    +                    else {
    +                        re += '\\[';
                         }
    -                    inClass = true;
    -                    classStart = i;
    -                    reClassStart = re.length;
    -                    re += c;
                         continue;
                     case ']':
    -                    //  a right bracket shall lose its special
    -                    //  meaning and represent itself in
    -                    //  a bracket expression if it occurs
    -                    //  first in the list.  -- POSIX.2 2.8.3.2
    -                    if (i === classStart + 1 || !inClass) {
    -                        re += '\\' + c;
    -                        continue;
    -                    }
    -                    // split where the last [ was, make sure we don't have
    -                    // an invalid re. if so, re-walk the contents of the
    -                    // would-be class to re-translate any characters that
    -                    // were passed through as-is
    -                    // TODO: It would probably be faster to determine this
    -                    // without a try/catch and a new RegExp, but it's tricky
    -                    // to do safely.  For now, this is safe and works.
    -                    cs = pattern.substring(classStart + 1, i);
    -                    try {
    -                        RegExp('[' + braExpEscape(charUnescape(cs)) + ']');
    -                        // looks good, finish up the class.
    -                        re += c;
    -                    }
    -                    catch (er) {
    -                        // out of order ranges in JS are errors, but in glob syntax,
    -                        // they're just a range that matches nothing.
    -                        re = re.substring(0, reClassStart) + '(?:$.)'; // match nothing ever
    -                    }
    -                    hasMagic = true;
    -                    inClass = false;
    +                    re += '\\' + c;
                         continue;
                     default:
                         // swallow any state char that wasn't consumed
                         clearStateChar();
    -                    if (reSpecials[c] && !(c === '^' && inClass)) {
    -                        re += '\\';
    -                    }
    -                    re += c;
    +                    re += regExpEscape(c);
                         break;
                 } // switch
             } // for
    -        // handle the case where we left a class open.
    -        // "[abc" is valid, equivalent to "\[abc"
    -        if (inClass) {
    -            // split where the last [ was, and escape it
    -            // this is a huge pita.  We now have to re-walk
    -            // the contents of the would-be class to re-translate
    -            // any characters that were passed through as-is
    -            cs = pattern.slice(classStart + 1);
    -            sp = this.parse(cs, SUBPARSE);
    -            re = re.substring(0, reClassStart) + '\\[' + sp[0];
    -            hasMagic = hasMagic || sp[1];
    -        }
             // handle the case where we had a +( thing at the *end*
             // of the pattern.
             // each pattern list stack adds 3 chars, and we need to go through
    @@ -882,7 +1092,7 @@ class Minimatch {
                     cleanAfter = cleanAfter.replace(/\)[+*?]?/, '');
                 }
                 nlAfter = cleanAfter;
    -            const dollar = nlAfter === '' && isSub !== SUBPARSE ? '(?:$|\\/)' : '';
    +            const dollar = nlAfter === '' ? '(?:$|\\/)' : '';
                 re = nlBefore + nlFirst + nlAfter + dollar + nlLast;
             }
             // if the re is not "" at this point, then we need to make sure
    @@ -894,10 +1104,6 @@ class Minimatch {
             if (addPatternStart) {
                 re = patternStart() + re;
             }
    -        // parsing just a piece of a larger pattern.
    -        if (isSub === SUBPARSE) {
    -            return [re, hasMagic];
    -        }
             // if it's nocase, and the lcase/uppercase don't match, it's magic
             if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {
                 hasMagic = pattern.toUpperCase() !== pattern.toLowerCase();
    @@ -906,9 +1112,9 @@ class Minimatch {
             // unescape anything in it, though, so that it'll be
             // an exact match against a file etc.
             if (!hasMagic) {
    -            return globUnescape(pattern);
    +            return globUnescape(re);
             }
    -        const flags = options.nocase ? 'i' : '';
    +        const flags = (options.nocase ? 'i' : '') + (uflag ? 'u' : '');
             try {
                 const ext = fastTest
                     ? {
    @@ -1018,7 +1224,7 @@ class Minimatch {
             if (this.preserveMultipleSlashes) {
                 return p.split('/');
             }
    -        else if (isWindows && /^\/\/[^\/]+/.test(p)) {
    +        else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
                 // add an extra '' for the one we lose
                 return ['', ...p.split(/\/+/)];
             }
    @@ -1041,8 +1247,8 @@ class Minimatch {
             }
             const options = this.options;
             // windows: need to use /, not \
    -        if (path.sep !== '/') {
    -            f = f.split(path.sep).join('/');
    +        if (this.isWindows) {
    +            f = f.split('\\').join('/');
             }
             // treat the test path as a set of pathparts.
             const ff = this.slashSplit(f);
    @@ -1086,5 +1292,13 @@ class Minimatch {
         }
     }
     exports.Minimatch = Minimatch;
    +/* c8 ignore start */
    +var escape_js_2 = require("./escape.js");
    +Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_2.escape; } });
    +var unescape_js_2 = require("./unescape.js");
    +Object.defineProperty(exports, "unescape", { enumerable: true, get: function () { return unescape_js_2.unescape; } });
    +/* c8 ignore stop */
     exports.minimatch.Minimatch = Minimatch;
    +exports.minimatch.escape = escape_js_1.escape;
    +exports.minimatch.unescape = unescape_js_1.unescape;
     //# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/cjs/index.js.map b/deps/npm/node_modules/minimatch/dist/cjs/index.js.map
    deleted file mode 100644
    index 0f561db44c2027..00000000000000
    --- a/deps/npm/node_modules/minimatch/dist/cjs/index.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAmBO,MAAM,SAAS,GAAG,CACvB,CAAS,EACT,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAE3B,oCAAoC;IACpC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACnD,OAAO,KAAK,CAAA;KACb;IAED,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC,CAAA;AAbY,QAAA,SAAS,aAarB;AAED,kBAAe,iBAAS,CAAA;AAExB,wDAAwD;AACxD,MAAM,YAAY,GAAG,uBAAuB,CAAA;AAC5C,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACvC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACzE,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC3C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC3E,CAAC,CAAA;AACD,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC9C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACrD,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,YAAY,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5E,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAE,EAAE,CACvC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5C,MAAM,SAAS,GAAG,SAAS,CAAA;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC/E,MAAM,MAAM,GAAG,OAAO,CAAA;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACpE,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AAC5E,MAAM,QAAQ,GAAG,wBAAwB,CAAA;AACzC,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9D,CAAC,CAAA;AACD,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AACnE,CAAC,CAAA;AAED,qBAAqB;AACrB,MAAM,QAAQ,GACZ,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO;IACpC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAC9B,OAAO,CAAC,GAAG;QACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC7C,OAAO,CAAC,QAAQ;IAClB,CAAC,CAAC,OAAO,CAAA;AACb,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAA;AACtC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AACrD,oBAAoB;AAEP,QAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;AAC3B,iBAAS,CAAC,GAAG,GAAG,WAAG,CAAA;AAEN,QAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAC7C,iBAAS,CAAC,QAAQ,GAAG,gBAAQ,CAAA;AAC7B,sEAAoC;AAEpC,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC9C,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACjC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACjC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACjC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;CACjC,CAAA;AAGD,gCAAgC;AAChC,iDAAiD;AACjD,MAAM,KAAK,GAAG,MAAM,CAAA;AAEpB,gCAAgC;AAChC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AAEzB,4DAA4D;AAC5D,+DAA+D;AAC/D,6CAA6C;AAC7C,MAAM,UAAU,GAAG,yCAAyC,CAAA;AAE5D,kCAAkC;AAClC,6CAA6C;AAC7C,MAAM,YAAY,GAAG,yBAAyB,CAAA;AAE9C,sCAAsC;AACtC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAC5B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAA6B,EAAE,CAAC,EAAE,EAAE;IACtD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACb,OAAO,GAAG,CAAA;AACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AAER,gDAAgD;AAChD,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE7C,4DAA4D;AAC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AAElC,MAAM,MAAM,GACjB,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACpD,CAAC,CAAS,EAAE,EAAE,CACZ,IAAA,iBAAS,EAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAHrB,QAAA,MAAM,UAGe;AAClC,iBAAS,CAAC,MAAM,GAAG,cAAM,CAAA;AAEzB,MAAM,GAAG,GAAG,CAAC,CAAmB,EAAE,IAAsB,EAAE,EAAE,EAAE,CAC5D,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAElB,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAoB,EAAE;IAClE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QAC/D,OAAO,iBAAS,CAAA;KACjB;IAED,MAAM,IAAI,GAAG,iBAAS,CAAA;IAEtB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACvE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;QACtB,SAAS,EAAE,MAAM,SAAU,SAAQ,IAAI,CAAC,SAAS;YAC/C,YAAY,OAAe,EAAE,UAA4B,EAAE;gBACzD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,OAAyB;gBACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;YACnD,CAAC;SACF;QAED,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,QAAQ,EAAE,CAAC,OAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzE,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,WAAW,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,KAAK,EAAE,CAAC,IAAc,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACzE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,gBAA2B;KACtC,CAAC,CAAA;AACJ,CAAC,CAAA;AArCY,QAAA,QAAQ,YAqCpB;AACD,iBAAS,CAAC,QAAQ,GAAG,gBAAQ,CAAA;AAE7B,mBAAmB;AACnB,qBAAqB;AACrB,mBAAmB;AACnB,8BAA8B;AAC9B,mCAAmC;AACnC,2CAA2C;AAC3C,EAAE;AACF,iCAAiC;AACjC,qBAAqB;AACrB,iBAAiB;AACV,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAE3B,wDAAwD;IACxD,wDAAwD;IACxD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACxD,+BAA+B;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAA;KACjB;IAED,OAAO,IAAA,yBAAM,EAAC,OAAO,CAAC,CAAA;AACxB,CAAC,CAAA;AAdY,QAAA,WAAW,eAcvB;AACD,iBAAS,CAAC,WAAW,GAAG,mBAAW,CAAA;AAEnC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AACpC,MAAM,kBAAkB,GAA2B,CACjD,OAAY,EACe,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;KACvC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE;QACvC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;KAC3C;AACH,CAAC,CAAA;AAED,yCAAyC;AACzC,kDAAkD;AAClD,oEAAoE;AACpE,oEAAoE;AACpE,6DAA6D;AAC7D,kEAAkE;AAClE,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,8DAA8D;AAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAE5B,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACxE,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;AAD7B,QAAA,MAAM,UACuB;AAC1C,iBAAS,CAAC,MAAM,GAAG,cAAM,CAAA;AAElB,MAAM,KAAK,GAAG,CACnB,IAAc,EACd,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACnB;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAXY,QAAA,KAAK,SAWjB;AACD,iBAAS,CAAC,KAAK,GAAG,aAAK,CAAA;AAEvB,+BAA+B;AAC/B,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC7D,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;AAClE,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAC/C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAsBjE,MAAa,SAAS;IACpB,OAAO,CAAkB;IACzB,GAAG,CAAyB;IAC5B,OAAO,CAAQ;IAEf,oBAAoB,CAAS;IAC7B,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,KAAK,CAAS;IACd,uBAAuB,CAAS;IAChC,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,SAAS,CAAY;IAErB,MAAM,CAAyB;IAC/B,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAE3B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,oBAAoB;YACvB,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAA;QACxE,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAChD;QACD,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAA;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;QAEhC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,+BAA+B;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,KAAK,CAAC,GAAG,CAAQ,IAAG,CAAC;IAErB,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,OAAM;SACP;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,OAAM;SACP;QAED,oCAAoC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,wBAAwB;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEjC,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;SACxD;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEtC,4EAA4E;QAC5E,qBAAqB;QACrB,8DAA8D;QAC9D,oDAAoD;QACpD,wCAAwC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9D,sDAAsD;QACtD,iEAAiE;QACjE,sDAAsD;QACtD,qDAAqD;QACrD,4DAA4D;QAC5D,2DAA2D;QAC3D,6CAA6C;QAC7C,sEAAsE;QACtE,sEAAsE;QACtE,sEAAsE;QACtE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,iBAAiB;YACjB,IAAI,CAAC,SAAS,GAAG,YAAY,CAAA;SAC9B;aAAM;YACL,+DAA+D;YAC/D,gEAAgE;YAChE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;gBAChC,IAAI,OAAgB,CAAA;gBACpB,GAAG;oBACD,OAAO,GAAG,KAAK,CAAA;oBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACzC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;4BAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;4BACf,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;4BAClB,OAAO,GAAG,IAAI,CAAA;yBACf;qBACF;iBACF,QAAQ,OAAO,EAAC;aAClB;YACD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,IAAI,EAAE,EAAE;oBAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAChC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;wBAClC,OAAO,GAAG,CAAA;qBACX;oBACD,IAAI,IAAI,KAAK,IAAI,EAAE;wBACjB,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE;4BAC1D,GAAG,CAAC,GAAG,EAAE,CAAA;4BACT,OAAO,GAAG,CAAA;yBACX;qBACF;oBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACd,OAAO,GAAG,CAAA;gBACZ,CAAC,EAAE,EAAE,CAAC,CAAA;gBACN,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC1C,CAAC,CAAC,CAAA;SACH;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAExC,mBAAmB;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAE7B,sDAAsD;QACtD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CACnB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACF,CAAA;QAE5B,2CAA2C;QAC3C,IAAI,SAAS,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACrB,IACE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;oBAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACxB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB;oBACA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;iBACX;aACF;SACF;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,YAAY,GAAG,CAAC,CAAA;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE;YACpE,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,YAAY,EAAE,CAAA;SACf;QAED,IAAI,YAAY;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,+CAA+C;IAC/C,yCAAyC;IACzC,uDAAuD;IACvD,mDAAmD;IACnD,mBAAmB;IACnB,QAAQ,CAAC,IAAc,EAAE,OAAsB,EAAE,UAAmB,KAAK;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,yDAAyD;QACzD,iBAAiB;QACjB,IAAI,SAAS,EAAE;YACb,MAAM,OAAO,GACX,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBACf,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAClB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC9B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAE9B,IAAI,OAAO,IAAI,UAAU,EAAE;gBACzB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAW,CAAA;gBAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAW,CAAA;gBAC/B,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;oBACzC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;iBACb;aACF;iBAAM,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACpD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAW,CAAA;gBAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;oBACzC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;oBACf,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBAC3B;aACF;iBAAM,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACpD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;oBACjD,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;oBACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBACrB;aACF;SACF;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAEnD,KACE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EACzD,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAClB,EAAE,EAAE,EAAE,EAAE,EAAE,EACV;YACA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAC3B,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAEzB,wBAAwB;YACxB,wCAAwC;YACxC,qBAAqB;YACrB,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,OAAO,KAAK,CAAA;aACb;YACD,oBAAoB;YAEpB,IAAI,CAAC,KAAK,gBAAQ,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAEvC,OAAO;gBACP,yCAAyC;gBACzC,cAAc;gBACd,cAAc;gBACd,cAAc;gBACd,QAAQ;gBACR,iDAAiD;gBACjD,wDAAwD;gBACxD,yBAAyB;gBACzB,sDAAsD;gBACtD,6BAA6B;gBAC7B,EAAE;gBACF,mCAAmC;gBACnC,gBAAgB;gBAChB,eAAe;gBACf,kCAAkC;gBAClC,oBAAoB;gBACpB,mBAAmB;gBACnB,qCAAqC;gBACrC,mCAAmC;gBACnC,iCAAiC;gBACjC,kCAAkC;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAA;gBACX,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACf,IAAI,EAAE,KAAK,EAAE,EAAE;oBACb,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;oBAC3B,8CAA8C;oBAC9C,yBAAyB;oBACzB,2CAA2C;oBAC3C,sBAAsB;oBACtB,sDAAsD;oBACtD,uBAAuB;oBACvB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;wBACpB,IACE,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;4BAChB,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI;4BACjB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;4BAE5C,OAAO,KAAK,CAAA;qBACf;oBACD,OAAO,IAAI,CAAA;iBACZ;gBAED,mDAAmD;gBACnD,OAAO,EAAE,GAAG,EAAE,EAAE;oBACd,IAAI,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;oBAExB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;oBAEhE,qDAAqD;oBACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;wBAC7D,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;wBACtD,iBAAiB;wBACjB,OAAO,IAAI,CAAA;qBACZ;yBAAM;wBACL,kCAAkC;wBAClC,iDAAiD;wBACjD,IACE,SAAS,KAAK,GAAG;4BACjB,SAAS,KAAK,IAAI;4BAClB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAC7C;4BACA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;4BAClD,MAAK;yBACN;wBAED,uCAAuC;wBACvC,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;wBACtD,EAAE,EAAE,CAAA;qBACL;iBACF;gBAED,sBAAsB;gBACtB,mEAAmE;gBACnE,qBAAqB;gBACrB,IAAI,OAAO,EAAE;oBACX,kBAAkB;oBAClB,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;oBAC7D,IAAI,EAAE,KAAK,EAAE,EAAE;wBACb,OAAO,IAAI,CAAA;qBACZ;iBACF;gBACD,oBAAoB;gBACpB,OAAO,KAAK,CAAA;aACb;YAED,0BAA0B;YAC1B,gDAAgD;YAChD,qDAAqD;YACrD,IAAI,GAAY,CAAA;YAChB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBACzB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;gBACb,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACtC;iBAAM;gBACL,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACf,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACvC;YAED,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAA;SACvB;QAED,oDAAoD;QACpD,oDAAoD;QACpD,2CAA2C;QAC3C,kDAAkD;QAClD,oDAAoD;QACpD,uDAAuD;QACvD,oDAAoD;QACpD,yDAAyD;QACzD,6BAA6B;QAC7B,yCAAyC;QAEzC,gEAAgE;QAChE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1B,oDAAoD;YACpD,gBAAgB;YAChB,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,+CAA+C;YAC/C,iDAAiD;YACjD,uBAAuB;YACvB,OAAO,OAAO,CAAA;SACf;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,4CAA4C;YAC5C,oDAAoD;YACpD,iDAAiD;YACjD,wBAAwB;YACxB,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAEvC,qBAAqB;SACtB;aAAM;YACL,yBAAyB;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;SACxB;QACD,oBAAoB;IACtB,CAAC;IAED,WAAW;QACT,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CACH,OAAe,EACf,KAAuB;QAEvB,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,YAAY;QACZ,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,OAAO,gBAAQ,CAAA;;gBACnC,OAAO,GAAG,GAAG,CAAA;SACnB;QACD,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,CAAA;QAE7B,uDAAuD;QACvD,0DAA0D;QAC1D,IAAI,CAA0B,CAAA;QAC9B,IAAI,QAAQ,GAAoC,IAAI,CAAA;QACpD,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;gBAC/B,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;aAChD;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE;gBAC5C,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;oBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;wBACX,CAAC,CAAC,uBAAuB;wBACzB,CAAC,CAAC,oBAAoB;oBACxB,CAAC,CAAC,OAAO,CAAC,GAAG;wBACb,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,cAAc,CACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aACR;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;gBACxC,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;oBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;wBACX,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,gBAAgB;oBACpB,CAAC,CAAC,OAAO,CAAC,GAAG;wBACb,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,UAAU,CACf,CAAC,CAAC,CAAC,CAAA;aACL;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;gBAC7C,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAA;aAC9D;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;gBACzC,QAAQ,GAAG,WAAW,CAAA;aACvB;SACF;QAED,IAAI,EAAE,GAAG,EAAE,CAAA;QACX,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,4BAA4B;QAC5B,MAAM,gBAAgB,GAAuB,EAAE,CAAA;QAC/C,MAAM,aAAa,GAA+B,EAAE,CAAA;QACpD,IAAI,SAAS,GAAsB,KAAK,CAAA;QACxC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC,CAAA;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;QACnB,IAAI,EAAU,CAAA;QACd,IAAI,EAAgC,CAAA;QACpC,IAAI,EAAkB,CAAA;QACtB,2DAA2D;QAC3D,yDAAyD;QACzD,oDAAoD;QACpD,IAAI,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;QAC9C,IAAI,cAAc,GAAG,OAAO,CAAC,GAAG,IAAI,cAAc,CAAA;QAClD,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,cAAc;YACZ,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE,CACpC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YACjB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,SAAS,CAAA;QAEf,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,SAAS,EAAE;gBACb,uCAAuC;gBACvC,qCAAqC;gBACrC,QAAQ,SAAS,EAAE;oBACjB,KAAK,GAAG;wBACN,EAAE,IAAI,IAAI,CAAA;wBACV,QAAQ,GAAG,IAAI,CAAA;wBACf,MAAK;oBACP,KAAK,GAAG;wBACN,EAAE,IAAI,KAAK,CAAA;wBACX,QAAQ,GAAG,IAAI,CAAA;wBACf,MAAK;oBACP;wBACE,EAAE,IAAI,IAAI,GAAG,SAAS,CAAA;wBACtB,MAAK;iBACR;gBACD,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;gBACjD,SAAS,GAAG,KAAK,CAAA;aAClB;QACH,CAAC,CAAA;QAED,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAS,EACpB,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC7C,CAAC,EAAE,EACH;YACA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAE7C,kCAAkC;YAClC,IAAI,QAAQ,EAAE;gBACZ,wCAAwC;gBACxC,wBAAwB;gBACxB,qBAAqB;gBACrB,IAAI,CAAC,KAAK,GAAG,EAAE;oBACb,OAAO,KAAK,CAAA;iBACb;gBACD,oBAAoB;gBAEpB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBACjB,EAAE,IAAI,IAAI,CAAA;iBACX;gBACD,EAAE,IAAI,CAAC,CAAA;gBACP,QAAQ,GAAG,KAAK,CAAA;gBAChB,SAAQ;aACT;YAED,QAAQ,CAAC,EAAE;gBACT,uCAAuC;gBACvC,qBAAqB;gBACrB,KAAK,GAAG,CAAC,CAAC;oBACR,OAAO,KAAK,CAAA;iBACb;gBACD,oBAAoB;gBAEpB,KAAK,IAAI;oBACP,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;wBAC5C,EAAE,IAAI,CAAC,CAAA;wBACP,SAAQ;qBACT;oBAED,cAAc,EAAE,CAAA;oBAChB,QAAQ,GAAG,IAAI,CAAA;oBACf,SAAQ;gBAEV,+BAA+B;gBAC/B,2BAA2B;gBAC3B,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;oBAE3D,wDAAwD;oBACxD,qCAAqC;oBACrC,IAAI,OAAO,EAAE;wBACX,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;wBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC;4BAAE,CAAC,GAAG,GAAG,CAAA;wBAC9C,EAAE,IAAI,CAAC,CAAA;wBACP,SAAQ;qBACT;oBAED,gDAAgD;oBAChD,mDAAmD;oBACnD,oDAAoD;oBACpD,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA;oBAC/C,cAAc,EAAE,CAAA;oBAChB,SAAS,GAAG,CAAC,CAAA;oBACb,0DAA0D;oBAC1D,+DAA+D;oBAC/D,yBAAyB;oBACzB,IAAI,OAAO,CAAC,KAAK;wBAAE,cAAc,EAAE,CAAA;oBACnC,SAAQ;gBAEV,KAAK,GAAG,CAAC,CAAC;oBACR,IAAI,OAAO,EAAE;wBACX,EAAE,IAAI,GAAG,CAAA;wBACT,SAAQ;qBACT;oBAED,IAAI,CAAC,SAAS,EAAE;wBACd,EAAE,IAAI,KAAK,CAAA;wBACX,SAAQ;qBACT;oBAED,MAAM,OAAO,GAAqB;wBAChC,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,CAAC,GAAG,CAAC;wBACZ,OAAO,EAAE,EAAE,CAAC,MAAM;wBAClB,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI;wBAC7B,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK;qBAChC,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;oBACvC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC9B,4CAA4C;oBAC5C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAA;oBAClB,sCAAsC;oBACtC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE;wBAC/C,cAAc,GAAG,IAAI,CAAA;wBACrB,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;qBAC5C;oBACD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;oBACzC,SAAS,GAAG,KAAK,CAAA;oBACjB,SAAQ;iBACT;gBAED,KAAK,GAAG,CAAC,CAAC;oBACR,MAAM,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC7D,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;wBACvB,EAAE,IAAI,KAAK,CAAA;wBACX,SAAQ;qBACT;oBACD,gBAAgB,CAAC,GAAG,EAAE,CAAA;oBAEtB,qBAAqB;oBACrB,cAAc,EAAE,CAAA;oBAChB,QAAQ,GAAG,IAAI,CAAA;oBACf,EAAE,GAAG,OAAO,CAAA;oBACZ,8BAA8B;oBAC9B,qCAAqC;oBACrC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAA;oBACd,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,EAAE;wBACnB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;qBAC5D;oBACD,SAAQ;iBACT;gBAED,KAAK,GAAG,CAAC,CAAC;oBACR,MAAM,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC7D,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;wBACvB,EAAE,IAAI,KAAK,CAAA;wBACX,SAAQ;qBACT;oBAED,cAAc,EAAE,CAAA;oBAChB,EAAE,IAAI,GAAG,CAAA;oBACT,wCAAwC;oBACxC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE;wBAC/C,cAAc,GAAG,IAAI,CAAA;wBACrB,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;qBAC5C;oBACD,SAAQ;iBACT;gBAED,+CAA+C;gBAC/C,KAAK,GAAG;oBACN,+CAA+C;oBAC/C,cAAc,EAAE,CAAA;oBAEhB,IAAI,OAAO,EAAE;wBACX,EAAE,IAAI,IAAI,GAAG,CAAC,CAAA;wBACd,SAAQ;qBACT;oBAED,OAAO,GAAG,IAAI,CAAA;oBACd,UAAU,GAAG,CAAC,CAAA;oBACd,YAAY,GAAG,EAAE,CAAC,MAAM,CAAA;oBACxB,EAAE,IAAI,CAAC,CAAA;oBACP,SAAQ;gBAEV,KAAK,GAAG;oBACN,0CAA0C;oBAC1C,mCAAmC;oBACnC,qCAAqC;oBACrC,0CAA0C;oBAC1C,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;wBACpC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAA;wBACd,SAAQ;qBACT;oBAED,sDAAsD;oBACtD,oDAAoD;oBACpD,qDAAqD;oBACrD,4BAA4B;oBAC5B,sDAAsD;oBACtD,wDAAwD;oBACxD,kDAAkD;oBAClD,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;oBACzC,IAAI;wBACF,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;wBAClD,mCAAmC;wBACnC,EAAE,IAAI,CAAC,CAAA;qBACR;oBAAC,OAAO,EAAE,EAAE;wBACX,4DAA4D;wBAC5D,6CAA6C;wBAC7C,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAA,CAAC,qBAAqB;qBACpE;oBACD,QAAQ,GAAG,IAAI,CAAA;oBACf,OAAO,GAAG,KAAK,CAAA;oBACf,SAAQ;gBAEV;oBACE,8CAA8C;oBAC9C,cAAc,EAAE,CAAA;oBAEhB,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,EAAE;wBAC5C,EAAE,IAAI,IAAI,CAAA;qBACX;oBAED,EAAE,IAAI,CAAC,CAAA;oBACP,MAAK;aACR,CAAC,SAAS;SACZ,CAAC,MAAM;QAER,8CAA8C;QAC9C,yCAAyC;QACzC,IAAI,OAAO,EAAE;YACX,4CAA4C;YAC5C,+CAA+C;YAC/C,qDAAqD;YACrD,gDAAgD;YAChD,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;YAClC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAmB,CAAA;YAC/C,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YAClD,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;SAC7B;QAED,uDAAuD;QACvD,kBAAkB;QAClB,kEAAkE;QAClE,wEAAwE;QACxE,mEAAmE;QACnE,qCAAqC;QACrC,KAAK,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE;YACjE,IAAI,IAAY,CAAA;YAChB,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAChD,+DAA+D;YAC/D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;gBAC7D,IAAI,CAAC,EAAE,EAAE;oBACP,6CAA6C;oBAC7C,EAAE,GAAG,IAAI,CAAA;oBACT,yBAAyB;oBACzB,qBAAqB;iBACtB;gBACD,oBAAoB;gBAEpB,iEAAiE;gBACjE,mEAAmE;gBACnE,qEAAqE;gBACrE,yDAAyD;gBACzD,EAAE;gBACF,wCAAwC;gBACxC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAChD,MAAM,CAAC,GACL,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAA;YAEnE,QAAQ,GAAG,IAAI,CAAA;YACf,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAA;SAChD;QAED,2DAA2D;QAC3D,cAAc,EAAE,CAAA;QAChB,IAAI,QAAQ,EAAE;YACZ,cAAc;YACd,EAAE,IAAI,MAAM,CAAA;SACb;QAED,2DAA2D;QAC3D,iDAAiD;QACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAExD,wDAAwD;QACxD,4DAA4D;QAC5D,yDAAyD;QACzD,0DAA0D;QAC1D,eAAe;QACf,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YAE3B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAClD,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;YAChC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;YAEzD,gEAAgE;YAChE,wEAAwE;YACxE,+BAA+B;YAC/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;YACpD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAA;YACvE,IAAI,UAAU,GAAG,OAAO,CAAA;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;gBACzC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;aAChD;YACD,OAAO,GAAG,UAAU,CAAA;YAEpB,MAAM,MAAM,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;YAEtE,EAAE,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;SACpD;QAED,+DAA+D;QAC/D,+CAA+C;QAC/C,oDAAoD;QACpD,IAAI,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE;YACzB,EAAE,GAAG,OAAO,GAAG,EAAE,CAAA;SAClB;QAED,IAAI,eAAe,EAAE;YACnB,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,CAAA;SACzB;QAED,4CAA4C;QAC5C,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;SACtB;QAED,kEAAkE;QAClE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC3D,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAA;SAC3D;QAED,2CAA2C;QAC3C,oDAAoD;QACpD,qCAAqC;QACrC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;SAC7B;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACvC,IAAI;YACF,MAAM,GAAG,GAAG,QAAQ;gBAClB,CAAC,CAAC;oBACE,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,QAAQ;iBACf;gBACH,CAAC,CAAC;oBACE,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,EAAE;iBACT,CAAA;YACL,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;YAC5D,qBAAqB;SACtB;QAAC,OAAO,EAAE,EAAE;YACX,uBAAuB;YACvB,+DAA+D;YAC/D,+DAA+D;YAC/D,kEAAkE;YAClE,iCAAiC;YACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;YAChC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;SACxB;QACD,oBAAoB;IACtB,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,MAAM,CAAA;QAE5D,mDAAmD;QACnD,4BAA4B;QAC5B,EAAE;QACF,wDAAwD;QACxD,yDAAyD;QACzD,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAEpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;YACnB,OAAO,IAAI,CAAC,MAAM,CAAA;SACnB;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,YAAY,CAAA;QAChB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvC,kCAAkC;QAClC,kDAAkD;QAClD,sEAAsE;QACtE,iDAAiD;QACjD,8DAA8D;QAC9D,mCAAmC;QACnC,IAAI,EAAE,GAAG,GAAG;aACT,GAAG,CAAC,OAAO,CAAC,EAAE;YACb,MAAM,EAAE,GAAiC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACvD,OAAO,CAAC,KAAK,QAAQ;gBACnB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC,KAAK,gBAAQ;oBAChB,CAAC,CAAC,gBAAQ;oBACV,CAAC,CAAC,CAAC,CAAC,IAAI,CACqB,CAAA;YACjC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,IAAI,CAAC,KAAK,gBAAQ,IAAI,IAAI,KAAK,gBAAQ,EAAE;oBACvC,OAAM;iBACP;gBACD,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAQ,EAAE;wBAC3C,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;qBACjD;yBAAM;wBACL,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;qBAChB;iBACF;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;oBAC7B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;iBAC9C;qBAAM,IAAI,IAAI,KAAK,gBAAQ,EAAE;oBAC5B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;oBACzD,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAQ,CAAA;iBACrB;YACH,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,4BAA4B;QAC5B,gDAAgD;QAChD,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAA;QAEvB,gDAAgD;QAChD,IAAI,IAAI,CAAC,MAAM;YAAE,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;QAE1C,IAAI;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YACnC,qBAAqB;SACtB;QAAC,OAAO,EAAE,EAAE;YACX,uBAAuB;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;SACpB;QACD,oBAAoB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,mDAAmD;QACnD,6DAA6D;QAC7D,8CAA8C;QAC9C,0CAA0C;QAC1C,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACpB;aAAM,IAAI,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC7C,sCAAsC;YACtC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;SAC/B;aAAM;YACL,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SACtB;IACH,CAAC;IAED,KAAK,CAAC,CAAS,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,8CAA8C;QAC9C,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,KAAK,CAAA;SACb;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,EAAE,CAAA;SAChB;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAE;YACxB,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,gCAAgC;QAChC,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;YACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAChC;QAED,6CAA6C;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAErC,0DAA0D;QAC1D,2DAA2D;QAC3D,mCAAmC;QACnC,uCAAuC;QAEvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAEpC,0EAA0E;QAC1E,IAAI,QAAQ,GAAW,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpD,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;aACjB;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7C,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;aAClB;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,GAAG,EAAE;gBACP,IAAI,OAAO,CAAC,UAAU,EAAE;oBACtB,OAAO,IAAI,CAAA;iBACZ;gBACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;aACpB;SACF;QAED,2DAA2D;QAC3D,8BAA8B;QAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO,KAAK,CAAA;SACb;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAqB;QACnC,OAAO,iBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAA;IAC1C,CAAC;CACF;AAt+BD,8BAs+BC;AAED,iBAAS,CAAC,SAAS,GAAG,SAAS,CAAA"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/cjs/parse.js b/deps/npm/node_modules/minimatch/dist/cjs/parse.js
    new file mode 100644
    index 00000000000000..2fff625bcbb6e9
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/cjs/parse.js
    @@ -0,0 +1,650 @@
    +"use strict";
    +// parse a single path portion
    +Object.defineProperty(exports, "__esModule", { value: true });
    +exports.AST = void 0;
    +const brace_expressions_1 = require("./brace-expressions");
    +const types = new Set(['!', '?', '+', '*', '@']);
    +const isExtglobType = (c) => types.has(c);
    +// characters that indicate a start of pattern needs the "no dots" bit
    +const addPatternStart = new Set(['[', '.']);
    +const justDots = new Set(['..', '.']);
    +const reSpecials = new Set('().*{}+?[]^$\\!');
    +const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    +// any single thing other than /
    +// don't need to escape / when using new RegExp()
    +const qmark = '[^/]';
    +// * => any number of characters
    +const star = qmark + '*?';
    +class AST {
    +    type;
    +    #root;
    +    #parts = [];
    +    #parent;
    +    #parentIndex;
    +    #negs;
    +    #filledNegs = false;
    +    #options;
    +    constructor(type, parent, options = {}) {
    +        this.type = type;
    +        this.#parent = parent;
    +        this.#root = this.#parent ? this.#parent.#root : this;
    +        this.#options = this.#root === this ? options : this.#root.#options;
    +        this.#negs = this.#root === this ? [] : this.#root.#negs;
    +        if (type === '!' && !this.#root.#filledNegs)
    +            this.#negs.push(this);
    +        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
    +    }
    +    fillNegs() {
    +        if (this !== this.#root) {
    +            this.#root.fillNegs();
    +            return this;
    +        }
    +        if (this.#filledNegs)
    +            return this;
    +        this.#filledNegs = true;
    +        let n;
    +        while ((n = this.#negs.pop())) {
    +            if (n.type !== '!')
    +                continue;
    +            // walk up the tree, appending everthing that comes AFTER parentIndex
    +            let p = n;
    +            let pp = p.#parent;
    +            while (pp) {
    +                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
    +                    for (const part of n.#parts) {
    +                        /* c8 ignore start */
    +                        if (typeof part === 'string') {
    +                            throw new Error('string part in extglob AST??');
    +                        }
    +                        /* c8 ignore stop */
    +                        part.copyIn(pp.#parts[i]);
    +                    }
    +                }
    +                p = pp;
    +                pp = p.#parent;
    +            }
    +        }
    +        return this;
    +    }
    +    push(...parts) {
    +        for (const p of parts) {
    +            if (p === '')
    +                continue;
    +            /* c8 ignore start */
    +            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
    +                throw new Error('invalid part: ' + p);
    +            }
    +            /* c8 ignore stop */
    +            this.#parts.push(p);
    +        }
    +    }
    +    toJSON() {
    +        const ret = this.type === null ? this.#parts.slice() : [this.type, ...this.#parts];
    +        if (this.isStart() && !this.type)
    +            ret.unshift([]);
    +        if (this.isEnd() &&
    +            (this === this.#root ||
    +                (this.#root.#filledNegs && this.#parent?.type === '!'))) {
    +            ret.push({});
    +        }
    +        return ret;
    +    }
    +    isStart() {
    +        if (this.#root === this)
    +            return true;
    +        // if (this.type) return !!this.#parent?.isStart()
    +        if (!this.#parent?.isStart())
    +            return false;
    +        return this.#parentIndex === 0;
    +    }
    +    isEnd() {
    +        if (this.#root === this)
    +            return true;
    +        if (this.#parent?.type === '!')
    +            return true;
    +        if (!this.#parent?.isEnd())
    +            return false;
    +        if (!this.type)
    +            return this.#parent?.isEnd();
    +        return (this.#parentIndex === (this.#parent ? this.#parent.#parts.length : 0) - 1);
    +    }
    +    copyIn(part) {
    +        if (typeof part === 'string')
    +            this.push(part);
    +        else
    +            this.push(part.clone(this));
    +    }
    +    clone(parent) {
    +        const c = new AST(this.type, parent);
    +        for (const p of this.#parts) {
    +            c.copyIn(p);
    +        }
    +        return c;
    +    }
    +    static #parseAST(str, ast, pos, opt) {
    +        let escaping = false;
    +        if (ast.type === null) {
    +            // outside of a extglob, append until we find a start
    +            let i = pos;
    +            let acc = '';
    +            while (i < str.length) {
    +                const c = str.charAt(i++);
    +                // still accumulate escapes at this point, but we do ignore
    +                // starts that are escaped
    +                if (escaping || c === '\\') {
    +                    escaping = !escaping;
    +                    acc += c;
    +                    continue;
    +                }
    +                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
    +                    ast.push(acc);
    +                    acc = '';
    +                    const ext = new AST(c, ast);
    +                    i = AST.#parseAST(str, ext, i, opt);
    +                    ast.push(ext);
    +                    continue;
    +                }
    +                acc += c;
    +            }
    +            ast.push(acc);
    +            return i;
    +        }
    +        // some kind of extglob, pos is at the (
    +        // find the next | or )
    +        let i = pos + 1;
    +        let part = new AST(null, ast);
    +        const parts = [];
    +        let acc = '';
    +        while (i < str.length) {
    +            const c = str.charAt(i++);
    +            // still accumulate escapes at this point, but we do ignore
    +            // starts that are escaped
    +            if (escaping || c === '\\') {
    +                escaping = !escaping;
    +                acc += c;
    +                continue;
    +            }
    +            if (isExtglobType(c) && str.charAt(i) === '(') {
    +                part.push(acc);
    +                acc = '';
    +                const ext = new AST(c, part);
    +                part.push(ext);
    +                i = AST.#parseAST(str, ext, i, opt);
    +                continue;
    +            }
    +            if (c === '|') {
    +                part.push(acc);
    +                acc = '';
    +                parts.push(part);
    +                part = new AST(null, ast);
    +                continue;
    +            }
    +            if (c === ')') {
    +                part.push(acc);
    +                acc = '';
    +                ast.push(...parts, part);
    +                return i;
    +            }
    +            acc += c;
    +        }
    +        // if we got here, it was a malformed extglob! not an extglob, but
    +        // maybe something else in there.
    +        ast.type = null;
    +        ast.#parts = [str.substring(pos)];
    +        return i;
    +    }
    +    static fromGlob(pattern, options = {}) {
    +        const ast = new AST(null, undefined, options);
    +        AST.#parseAST(pattern, ast, 0, options);
    +        console.log('parsed', pattern, JSON.stringify(ast));
    +        return ast;
    +    }
    +    toRegExpSource() {
    +        if (this.#root === this)
    +            this.fillNegs();
    +        if (!this.type) {
    +            const src = this.#parts
    +                .map(p => {
    +                if (typeof p === 'string')
    +                    return AST.#parseGlob(p, this.#options);
    +                else
    +                    return p.toRegExpSource();
    +            })
    +                .join('');
    +            let start = '';
    +            if (this.isStart() && typeof this.#parts[0] === 'string') {
    +                // '.' and '..' cannot match unless the pattern is that exactly
    +                const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
    +                if (dotTravAllowed) {
    +                    start = '(?:^|\\/)';
    +                }
    +                else {
    +                    const dotsAllowed = this.#options.dot ||
    +                        // no need to prevent dots if it can't match a dot, or if a sub-pattern
    +                        // will be preventing it anyway.
    +                        !addPatternStart.has(src.charAt(0));
    +                    start = dotsAllowed ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' : '(?!\\.)';
    +                }
    +            }
    +            let end = '';
    +            if (this.isEnd() &&
    +                (this === this.#root ||
    +                    (this.#root.#filledNegs && this.#parent?.type === '!'))) {
    +                end = '(?:$|\\/)';
    +            }
    +            return start + src + end;
    +        }
    +        // some kind of extglob
    +        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';
    +        const body = this.#parts
    +            .map(p => {
    +            /* c8 ignore start */
    +            if (typeof p === 'string') {
    +                throw new Error('string type in extglob ast??');
    +            }
    +            /* c8 ignore stop */
    +            return p.toRegExpSource();
    +        })
    +            .join('|');
    +        const close = this.type === '!'
    +            ? '))[^/]*?)'
    +            : this.type === '@'
    +                ? ')'
    +                : `)${this.type}`;
    +        return start + body + close;
    +    }
    +    static #parseGlob(glob, options) {
    +        let escaping = false;
    +        let re = '';
    +        let uflag = false;
    +        let hasMagic = false;
    +        for (let i = 0; i < glob.length; i++) {
    +            const c = glob.charAt(i);
    +            if (escaping) {
    +                escaping = false;
    +                re += (reSpecials.has(c) ? '\\' : '') + c;
    +                continue;
    +            }
    +            if (c === '\\') {
    +                if (i === glob.length - 1) {
    +                    re += '\\\\';
    +                }
    +                else {
    +                    escaping = true;
    +                }
    +                continue;
    +            }
    +            if (c === '[') {
    +                const [src, needUflag, consumed, magic] = (0, brace_expressions_1.parseClass)(glob, i);
    +                if (consumed) {
    +                    re += src;
    +                    uflag = uflag || needUflag;
    +                    i += consumed - 1;
    +                    hasMagic = hasMagic || magic;
    +                    continue;
    +                }
    +            }
    +            if (c === '*') {
    +                re += star;
    +                hasMagic = true;
    +                continue;
    +            }
    +            if (c === '?') {
    +                re += qmark;
    +                hasMagic = true;
    +                continue;
    +            }
    +            re += regExpEscape(c);
    +        }
    +        return re;
    +    }
    +}
    +exports.AST = AST;
    +const pattern = 'a@(i|w!(x|y)z+(l|m)|j)';
    +const ast = AST.fromGlob(pattern).fillNegs();
    +console.log('negged', pattern, JSON.stringify(ast));
    +console.log('to re src', pattern, ast.toRegExpSource());
    +// // the type (exttype or null for strings), and array of children tokens
    +//
    +// // append everything after a negative extglob to each of the parts
    +// // of the negative extglob node.  So, eg, [a, [!, x, y], z]
    +//
    +// //
    +// //
    +// //
    +// //
    +//
    +// const globUnescape = (s: string) => s.replace(/\\(.)/g, '$1')
    +// const regExpEscape = (s: string) =>
    +//   s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
    +//
    +// // "abc" -> { a:true, b:true, c:true }
    +// const charSet = (s: string) =>
    +//   s.split('').reduce((set: { [k: string]: boolean }, c) => {
    +//     set[c] = true
    +//     return set
    +//   }, {})
    +//
    +// // characters that need to be escaped in RegExp.
    +// const reSpecials = charSet('().*{}+?[]^$\\!')
    +//
    +// // characters that indicate we have to add the pattern start
    +// const addPatternStartSet = charSet('[.(')
    +//
    +// // any single thing other than /
    +// // don't need to escape / when using new RegExp()
    +// const qmark = '[^/]'
    +//
    +// // * => any number of characters
    +// const star = qmark + '*?'
    +//
    +// // TODO: take an offset and length, so we can sub-parse the extglobs
    +// const parse = (
    +//   options: MinimatchOptions,
    +//   pattern: string,
    +//   debug: (...a: any[]) => void
    +// ): false | string => {
    +//   assertValidPattern(pattern)
    +//
    +//   if (pattern === '') return ''
    +//
    +//   let re = ''
    +//   let hasMagic = false
    +//   let escaping = false
    +//   // ? => one single character
    +//   let uflag = false
    +//
    +//   // . and .. never match anything that doesn't start with .,
    +//   // even when options.dot is set.  However, if the pattern
    +//   // starts with ., then traversal patterns can match.
    +//   let dotTravAllowed = pattern.charAt(0) === '.'
    +//   let dotFileAllowed = options.dot || dotTravAllowed
    +//   const patternStart = () =>
    +//     dotTravAllowed
    +//       ? ''
    +//       : dotFileAllowed
    +//       ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))'
    +//       : '(?!\\.)'
    +//   const subPatternStart = (p: string) =>
    +//     p.charAt(0) === '.'
    +//       ? ''
    +//       : options.dot
    +//       ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))'
    +//       : '(?!\\.)'
    +//
    +//   const clearStateChar = () => {
    +//     if (stateChar) {
    +//       // we had some state-tracking character
    +//       // that wasn't consumed by this pass.
    +//       switch (stateChar) {
    +//         case '*':
    +//           re += star
    +//           hasMagic = true
    +//           break
    +//         case '?':
    +//           re += qmark
    +//           hasMagic = true
    +//           break
    +//         default:
    +//           re += '\\' + stateChar
    +//           break
    +//       }
    +//       debug('clearStateChar %j %j', stateChar, re)
    +//       stateChar = false
    +//     }
    +//   }
    +//
    +//   for (
    +//     let i = 0, c: string;
    +//     i < pattern.length && (c = pattern.charAt(i));
    +//     i++
    +//   ) {
    +//     debug('%s\t%s %s %j', pattern, i, re, c)
    +//
    +//     // skip over any that are escaped.
    +//     if (escaping) {
    +//       // completely not allowed, even escaped.
    +//       // should be impossible.
    +//       /* c8 ignore start */
    +//       if (c === '/') {
    +//         return false
    +//       }
    +//       /* c8 ignore stop */
    +//
    +//       if (reSpecials[c]) {
    +//         re += '\\'
    +//       }
    +//       re += c
    +//       escaping = false
    +//       continue
    +//     }
    +//
    +//     switch (c) {
    +//       // Should already be path-split by now.
    +//       /* c8 ignore start */
    +//       case '/': {
    +//         return false
    +//       }
    +//       /* c8 ignore stop */
    +//
    +//       case '\\':
    +//         clearStateChar()
    +//         escaping = true
    +//         continue
    +//
    +//       // the various stateChar values
    +//       // for the "extglob" stuff.
    +//       case '?':
    +//       case '*':
    +//       case '+':
    +//       case '@':
    +//       case '!':
    +//         debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
    +//
    +//         // if we already have a stateChar, then it means
    +//         // that there was something like ** or +? in there.
    +//         // Handle the stateChar, then proceed with this one.
    +//         debug('call clearStateChar %j', stateChar)
    +//         clearStateChar()
    +//         stateChar = c
    +//         // if extglob is disabled, then +(asdf|foo) isn't a thing.
    +//         // just clear the statechar *now*, rather than even diving into
    +//         // the patternList stuff.
    +//         if (options.noext) clearStateChar()
    +//         continue
    +//
    +//       case '(': {
    +//         if (!stateChar) {
    +//           re += '\\('
    +//           continue
    +//         }
    +//
    +//         const plEntry: PatternListEntry = {
    +//           type: stateChar,
    +//           start: i - 1,
    +//           reStart: re.length,
    +//           open: plTypes[stateChar].open,
    +//           close: plTypes[stateChar].close,
    +//         }
    +//         debug(pattern, '\t', plEntry)
    +//         patternListStack.push(plEntry)
    +//         // negation is (?:(?!(?:js)(?:))[^/]*)
    +//         re += plEntry.open
    +//         // next entry starts with a dot maybe?
    +//         if (plEntry.start === 0 && plEntry.type !== '!') {
    +//           dotTravAllowed = true
    +//           re += subPatternStart(pattern.slice(i + 1))
    +//         }
    +//         debug('plType %j %j', stateChar, re)
    +//         stateChar = false
    +//         continue
    +//       }
    +//
    +//       case ')': {
    +//         const plEntry = patternListStack[patternListStack.length - 1]
    +//         if (!plEntry) {
    +//           re += '\\)'
    +//           continue
    +//         }
    +//         patternListStack.pop()
    +//
    +//         // closing an extglob
    +//         clearStateChar()
    +//         hasMagic = true
    +//         pl = plEntry
    +//         // negation is (?:(?!js)[^/]*)
    +//         // The others are (?:)
    +//         re += pl.close
    +//         if (pl.type === '!') {
    +//           negativeLists.push(Object.assign(pl, { reEnd: re.length }))
    +//         }
    +//         continue
    +//       }
    +//
    +//       case '|': {
    +//         const plEntry = patternListStack[patternListStack.length - 1]
    +//         if (!plEntry) {
    +//           re += '\\|'
    +//           continue
    +//         }
    +//
    +//         clearStateChar()
    +//         re += '|'
    +//         // next subpattern can start with a dot?
    +//         if (plEntry.start === 0 && plEntry.type !== '!') {
    +//           dotTravAllowed = true
    +//           re += subPatternStart(pattern.slice(i + 1))
    +//         }
    +//         continue
    +//       }
    +//
    +//       // these are mostly the same in regexp and glob
    +//       case '[':
    +//         // swallow any state-tracking char before the [
    +//         clearStateChar()
    +//         const [src, needUflag, consumed, magic] = parseClass(pattern, i)
    +//         if (consumed) {
    +//           re += src
    +//           uflag = uflag || needUflag
    +//           i += consumed - 1
    +//           hasMagic = hasMagic || magic
    +//         } else {
    +//           re += '\\['
    +//         }
    +//         continue
    +//
    +//       case ']':
    +//         re += '\\' + c
    +//         continue
    +//
    +//       default:
    +//         // swallow any state char that wasn't consumed
    +//         clearStateChar()
    +//
    +//         re += regExpEscape(c)
    +//         break
    +//     } // switch
    +//   } // for
    +//
    +//   // handle the case where we had a +( thing at the *end*
    +//   // of the pattern.
    +//   // each pattern list stack adds 3 chars, and we need to go through
    +//   // and escape any | chars that were passed through as-is for the regexp.
    +//   // Go through and escape them, taking care not to double-escape any
    +//   // | chars that were already escaped.
    +//   for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
    +//     let tail: string
    +//     tail = re.slice(pl.reStart + pl.open.length)
    +//     debug(pattern, 'setting tail', re, pl)
    +//     // maybe some even number of \, then maybe 1 \, followed by a |
    +//     tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => {
    +//       if (!$2) {
    +//         // the | isn't already escaped, so escape it.
    +//         $2 = '\\'
    +//         // should already be done
    +//         /* c8 ignore start */
    +//       }
    +//       /* c8 ignore stop */
    +//
    +//       // need to escape all those slashes *again*, without escaping the
    +//       // one that we need for escaping the | character.  As it works out,
    +//       // escaping an even number of slashes can be done by simply repeating
    +//       // it exactly after itself.  That's why this trick works.
    +//       //
    +//       // I am sorry that you have to see this.
    +//       return $1 + $1 + $2 + '|'
    +//     })
    +//
    +//     debug('tail=%j\n   %s', tail, tail, pl, re)
    +//     const t = pl.type === '*' ? star : pl.type === '?' ? qmark : '\\' + pl.type
    +//
    +//     hasMagic = true
    +//     re = re.slice(0, pl.reStart) + t + '\\(' + tail
    +//   }
    +//
    +//   // handle trailing things that only matter at the very end.
    +//   clearStateChar()
    +//   if (escaping) {
    +//     // trailing \\
    +//     re += '\\\\'
    +//   }
    +//
    +//   // only need to apply the nodot start if the re starts with
    +//   // something that could conceivably capture a dot
    +//   const addPatternStart = addPatternStartSet[re.charAt(0)]
    +//
    +//   // Hack to work around lack of negative lookbehind in JS
    +//   // A pattern like: *.!(x).!(y|z) needs to ensure that a name
    +//   // like 'a.xyz.yz' doesn't match.  So, the first negative
    +//   // lookahead, has to look ALL the way ahead, to the end of
    +//   // the pattern.
    +//   for (let n = negativeLists.length - 1; n > -1; n--) {
    +//     const nl = negativeLists[n]
    +//
    +//     const nlBefore = re.slice(0, nl.reStart)
    +//     const nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
    +//     let nlAfter = re.slice(nl.reEnd)
    +//     const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter
    +//
    +//     // Handle nested stuff like *(*.js|!(*.json)), where open parens
    +//     // mean that we should *not* include the ) in the bit that is considered
    +//     // "after" the negated section.
    +//     const closeParensBefore = nlBefore.split(')').length
    +//     const openParensBefore = nlBefore.split('(').length - closeParensBefore
    +//     let cleanAfter = nlAfter
    +//     for (let i = 0; i < openParensBefore; i++) {
    +//       cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
    +//     }
    +//     nlAfter = cleanAfter
    +//
    +//     const dollar = nlAfter === '' ? '(?:$|\\/)' : ''
    +//
    +//     re = nlBefore + nlFirst + nlAfter + dollar + nlLast
    +//   }
    +//
    +//   // if the re is not "" at this point, then we need to make sure
    +//   // it doesn't match against an empty path part.
    +//   // Otherwise a/* will match a/, which it should not.
    +//   if (re !== '' && hasMagic) {
    +//     re = '(?=.)' + re
    +//   }
    +//
    +//   if (addPatternStart) {
    +//     re = patternStart() + re
    +//   }
    +//
    +//   // if it's nocase, and the lcase/uppercase don't match, it's magic
    +//   if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {
    +//     hasMagic = pattern.toUpperCase() !== pattern.toLowerCase()
    +//   }
    +//
    +//   // skip the regexp for non-magical patterns
    +//   // unescape anything in it, though, so that it'll be
    +//   // an exact match against a file etc.
    +//   if (!hasMagic) {
    +//     return globUnescape(re)
    +//   }
    +//
    +//   return re
    +// }
    +//# sourceMappingURL=parse.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/cjs/unescape.js b/deps/npm/node_modules/minimatch/dist/cjs/unescape.js
    new file mode 100644
    index 00000000000000..47c36bcee5a02a
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/cjs/unescape.js
    @@ -0,0 +1,24 @@
    +"use strict";
    +Object.defineProperty(exports, "__esModule", { value: true });
    +exports.unescape = void 0;
    +/**
    + * Un-escape a string that has been escaped with {@link escape}.
    + *
    + * If the {@link windowsPathsNoEscape} option is used, then square-brace
    + * escapes are removed, but not backslash escapes.  For example, it will turn
    + * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
    + * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
    + *
    + * When `windowsPathsNoEscape` is not set, then both brace escapes and
    + * backslash escapes are removed.
    + *
    + * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
    + * or unescaped.
    + */
    +const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
    +    return windowsPathsNoEscape
    +        ? s.replace(/\[([^\/\\])\]/g, '$1')
    +        : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
    +};
    +exports.unescape = unescape;
    +//# sourceMappingURL=unescape.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/_parse.js b/deps/npm/node_modules/minimatch/dist/mjs/_parse.js
    new file mode 100644
    index 00000000000000..db6a28ab08a74e
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/_parse.js
    @@ -0,0 +1,296 @@
    +// parse a single path portion
    +import { parseClass } from './brace-expressions.js';
    +import { assertValidPattern } from './assert-valid-pattern.js';
    +const globUnescape = (s) => s.replace(/\\(.)/g, '$1');
    +const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    +// "abc" -> { a:true, b:true, c:true }
    +const charSet = (s) => s.split('').reduce((set, c) => {
    +    set[c] = true;
    +    return set;
    +}, {});
    +const plTypes = {
    +    '!': { open: '(?:(?!(?:', close: '))[^/]*?)' },
    +    '?': { open: '(?:', close: ')?' },
    +    '+': { open: '(?:', close: ')+' },
    +    '*': { open: '(?:', close: ')*' },
    +    '@': { open: '(?:', close: ')' },
    +};
    +// characters that need to be escaped in RegExp.
    +const reSpecials = charSet('().*{}+?[]^$\\!');
    +// characters that indicate we have to add the pattern start
    +const addPatternStartSet = charSet('[.(');
    +// any single thing other than /
    +// don't need to escape / when using new RegExp()
    +const qmark = '[^/]';
    +// * => any number of characters
    +const star = qmark + '*?';
    +// TODO: take an offset and length, so we can sub-parse the extglobs
    +export const parse = (options, pattern, debug) => {
    +    assertValidPattern(pattern);
    +    if (pattern === '')
    +        return '';
    +    let re = '';
    +    let hasMagic = false;
    +    let escaping = false;
    +    // ? => one single character
    +    const patternListStack = [];
    +    const negativeLists = [];
    +    let stateChar = false;
    +    let uflag = false;
    +    let pl;
    +    // . and .. never match anything that doesn't start with .,
    +    // even when options.dot is set.  However, if the pattern
    +    // starts with ., then traversal patterns can match.
    +    let dotTravAllowed = pattern.charAt(0) === '.';
    +    let dotFileAllowed = options.dot || dotTravAllowed;
    +    const patternStart = () => dotTravAllowed
    +        ? ''
    +        : dotFileAllowed
    +            ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))'
    +            : '(?!\\.)';
    +    const subPatternStart = (p) => p.charAt(0) === '.'
    +        ? ''
    +        : options.dot
    +            ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))'
    +            : '(?!\\.)';
    +    const clearStateChar = () => {
    +        if (stateChar) {
    +            // we had some state-tracking character
    +            // that wasn't consumed by this pass.
    +            switch (stateChar) {
    +                case '*':
    +                    re += star;
    +                    hasMagic = true;
    +                    break;
    +                case '?':
    +                    re += qmark;
    +                    hasMagic = true;
    +                    break;
    +                default:
    +                    re += '\\' + stateChar;
    +                    break;
    +            }
    +            debug('clearStateChar %j %j', stateChar, re);
    +            stateChar = false;
    +        }
    +    };
    +    for (let i = 0, c; i < pattern.length && (c = pattern.charAt(i)); i++) {
    +        debug('%s\t%s %s %j', pattern, i, re, c);
    +        // skip over any that are escaped.
    +        if (escaping) {
    +            // completely not allowed, even escaped.
    +            // should be impossible.
    +            /* c8 ignore start */
    +            if (c === '/') {
    +                return false;
    +            }
    +            /* c8 ignore stop */
    +            if (reSpecials[c]) {
    +                re += '\\';
    +            }
    +            re += c;
    +            escaping = false;
    +            continue;
    +        }
    +        switch (c) {
    +            // Should already be path-split by now.
    +            /* c8 ignore start */
    +            case '/': {
    +                return false;
    +            }
    +            /* c8 ignore stop */
    +            case '\\':
    +                clearStateChar();
    +                escaping = true;
    +                continue;
    +            // the various stateChar values
    +            // for the "extglob" stuff.
    +            case '?':
    +            case '*':
    +            case '+':
    +            case '@':
    +            case '!':
    +                debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c);
    +                // if we already have a stateChar, then it means
    +                // that there was something like ** or +? in there.
    +                // Handle the stateChar, then proceed with this one.
    +                debug('call clearStateChar %j', stateChar);
    +                clearStateChar();
    +                stateChar = c;
    +                // if extglob is disabled, then +(asdf|foo) isn't a thing.
    +                // just clear the statechar *now*, rather than even diving into
    +                // the patternList stuff.
    +                if (options.noext)
    +                    clearStateChar();
    +                continue;
    +            case '(': {
    +                if (!stateChar) {
    +                    re += '\\(';
    +                    continue;
    +                }
    +                const plEntry = {
    +                    type: stateChar,
    +                    start: i - 1,
    +                    reStart: re.length,
    +                    open: plTypes[stateChar].open,
    +                    close: plTypes[stateChar].close,
    +                };
    +                debug(pattern, '\t', plEntry);
    +                patternListStack.push(plEntry);
    +                // negation is (?:(?!(?:js)(?:))[^/]*)
    +                re += plEntry.open;
    +                // next entry starts with a dot maybe?
    +                if (plEntry.start === 0 && plEntry.type !== '!') {
    +                    dotTravAllowed = true;
    +                    re += subPatternStart(pattern.slice(i + 1));
    +                }
    +                debug('plType %j %j', stateChar, re);
    +                stateChar = false;
    +                continue;
    +            }
    +            case ')': {
    +                const plEntry = patternListStack[patternListStack.length - 1];
    +                if (!plEntry) {
    +                    re += '\\)';
    +                    continue;
    +                }
    +                patternListStack.pop();
    +                // closing an extglob
    +                clearStateChar();
    +                hasMagic = true;
    +                pl = plEntry;
    +                // negation is (?:(?!js)[^/]*)
    +                // The others are (?:)
    +                re += pl.close;
    +                if (pl.type === '!') {
    +                    negativeLists.push(Object.assign(pl, { reEnd: re.length }));
    +                }
    +                continue;
    +            }
    +            case '|': {
    +                const plEntry = patternListStack[patternListStack.length - 1];
    +                if (!plEntry) {
    +                    re += '\\|';
    +                    continue;
    +                }
    +                clearStateChar();
    +                re += '|';
    +                // next subpattern can start with a dot?
    +                if (plEntry.start === 0 && plEntry.type !== '!') {
    +                    dotTravAllowed = true;
    +                    re += subPatternStart(pattern.slice(i + 1));
    +                }
    +                continue;
    +            }
    +            // these are mostly the same in regexp and glob
    +            case '[':
    +                // swallow any state-tracking char before the [
    +                clearStateChar();
    +                const [src, needUflag, consumed, magic] = parseClass(pattern, i);
    +                if (consumed) {
    +                    re += src;
    +                    uflag = uflag || needUflag;
    +                    i += consumed - 1;
    +                    hasMagic = hasMagic || magic;
    +                }
    +                else {
    +                    re += '\\[';
    +                }
    +                continue;
    +            case ']':
    +                re += '\\' + c;
    +                continue;
    +            default:
    +                // swallow any state char that wasn't consumed
    +                clearStateChar();
    +                re += regExpEscape(c);
    +                break;
    +        } // switch
    +    } // for
    +    // handle the case where we had a +( thing at the *end*
    +    // of the pattern.
    +    // each pattern list stack adds 3 chars, and we need to go through
    +    // and escape any | chars that were passed through as-is for the regexp.
    +    // Go through and escape them, taking care not to double-escape any
    +    // | chars that were already escaped.
    +    for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
    +        let tail;
    +        tail = re.slice(pl.reStart + pl.open.length);
    +        debug(pattern, 'setting tail', re, pl);
    +        // maybe some even number of \, then maybe 1 \, followed by a |
    +        tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => {
    +            if (!$2) {
    +                // the | isn't already escaped, so escape it.
    +                $2 = '\\';
    +                // should already be done
    +                /* c8 ignore start */
    +            }
    +            /* c8 ignore stop */
    +            // need to escape all those slashes *again*, without escaping the
    +            // one that we need for escaping the | character.  As it works out,
    +            // escaping an even number of slashes can be done by simply repeating
    +            // it exactly after itself.  That's why this trick works.
    +            //
    +            // I am sorry that you have to see this.
    +            return $1 + $1 + $2 + '|';
    +        });
    +        debug('tail=%j\n   %s', tail, tail, pl, re);
    +        const t = pl.type === '*' ? star : pl.type === '?' ? qmark : '\\' + pl.type;
    +        hasMagic = true;
    +        re = re.slice(0, pl.reStart) + t + '\\(' + tail;
    +    }
    +    // handle trailing things that only matter at the very end.
    +    clearStateChar();
    +    if (escaping) {
    +        // trailing \\
    +        re += '\\\\';
    +    }
    +    // only need to apply the nodot start if the re starts with
    +    // something that could conceivably capture a dot
    +    const addPatternStart = addPatternStartSet[re.charAt(0)];
    +    // Hack to work around lack of negative lookbehind in JS
    +    // A pattern like: *.!(x).!(y|z) needs to ensure that a name
    +    // like 'a.xyz.yz' doesn't match.  So, the first negative
    +    // lookahead, has to look ALL the way ahead, to the end of
    +    // the pattern.
    +    for (let n = negativeLists.length - 1; n > -1; n--) {
    +        const nl = negativeLists[n];
    +        const nlBefore = re.slice(0, nl.reStart);
    +        const nlFirst = re.slice(nl.reStart, nl.reEnd - 8);
    +        let nlAfter = re.slice(nl.reEnd);
    +        const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter;
    +        // Handle nested stuff like *(*.js|!(*.json)), where open parens
    +        // mean that we should *not* include the ) in the bit that is considered
    +        // "after" the negated section.
    +        const closeParensBefore = nlBefore.split(')').length;
    +        const openParensBefore = nlBefore.split('(').length - closeParensBefore;
    +        let cleanAfter = nlAfter;
    +        for (let i = 0; i < openParensBefore; i++) {
    +            cleanAfter = cleanAfter.replace(/\)[+*?]?/, '');
    +        }
    +        nlAfter = cleanAfter;
    +        const dollar = nlAfter === '' ? '(?:$|\\/)' : '';
    +        re = nlBefore + nlFirst + nlAfter + dollar + nlLast;
    +    }
    +    // if the re is not "" at this point, then we need to make sure
    +    // it doesn't match against an empty path part.
    +    // Otherwise a/* will match a/, which it should not.
    +    if (re !== '' && hasMagic) {
    +        re = '(?=.)' + re;
    +    }
    +    if (addPatternStart) {
    +        re = patternStart() + re;
    +    }
    +    // if it's nocase, and the lcase/uppercase don't match, it's magic
    +    if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {
    +        hasMagic = pattern.toUpperCase() !== pattern.toLowerCase();
    +    }
    +    // skip the regexp for non-magical patterns
    +    // unescape anything in it, though, so that it'll be
    +    // an exact match against a file etc.
    +    if (!hasMagic) {
    +        return globUnescape(re);
    +    }
    +    return re;
    +};
    +//# sourceMappingURL=_parse.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/assert-valid-pattern.js b/deps/npm/node_modules/minimatch/dist/mjs/assert-valid-pattern.js
    new file mode 100644
    index 00000000000000..7b534fc30200bb
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/assert-valid-pattern.js
    @@ -0,0 +1,10 @@
    +const MAX_PATTERN_LENGTH = 1024 * 64;
    +export const assertValidPattern = (pattern) => {
    +    if (typeof pattern !== 'string') {
    +        throw new TypeError('invalid pattern');
    +    }
    +    if (pattern.length > MAX_PATTERN_LENGTH) {
    +        throw new TypeError('pattern is too long');
    +    }
    +};
    +//# sourceMappingURL=assert-valid-pattern.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/brace-expressions.js b/deps/npm/node_modules/minimatch/dist/mjs/brace-expressions.js
    new file mode 100644
    index 00000000000000..c629d6ae816e27
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/brace-expressions.js
    @@ -0,0 +1,148 @@
    +// translate the various posix character classes into unicode properties
    +// this works across all unicode locales
    +// { : [, /u flag required, negated]
    +const posixClasses = {
    +    '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true],
    +    '[:alpha:]': ['\\p{L}\\p{Nl}', true],
    +    '[:ascii:]': ['\\x' + '00-\\x' + '7f', false],
    +    '[:blank:]': ['\\p{Zs}\\t', true],
    +    '[:cntrl:]': ['\\p{Cc}', true],
    +    '[:digit:]': ['\\p{Nd}', true],
    +    '[:graph:]': ['\\p{Z}\\p{C}', true, true],
    +    '[:lower:]': ['\\p{Ll}', true],
    +    '[:print:]': ['\\p{C}', true],
    +    '[:punct:]': ['\\p{P}', true],
    +    '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true],
    +    '[:upper:]': ['\\p{Lu}', true],
    +    '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true],
    +    '[:xdigit:]': ['A-Fa-f0-9', false],
    +};
    +// only need to escape a few things inside of brace expressions
    +// escapes: [ \ ] -
    +const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&');
    +// escape all regexp magic characters
    +const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    +// everything has already been escaped, we just have to join
    +const rangesToString = (ranges) => ranges.join('');
    +// takes a glob string at a posix brace expression, and returns
    +// an equivalent regular expression source, and boolean indicating
    +// whether the /u flag needs to be applied, and the number of chars
    +// consumed to parse the character class.
    +// This also removes out of order ranges, and returns ($.) if the
    +// entire class just no good.
    +export const parseClass = (glob, position) => {
    +    const pos = position;
    +    /* c8 ignore start */
    +    if (glob.charAt(pos) !== '[') {
    +        throw new Error('not in a brace expression');
    +    }
    +    /* c8 ignore stop */
    +    const ranges = [];
    +    const negs = [];
    +    let i = pos + 1;
    +    let sawStart = false;
    +    let uflag = false;
    +    let escaping = false;
    +    let negate = false;
    +    let endPos = pos;
    +    let rangeStart = '';
    +    WHILE: while (i < glob.length) {
    +        const c = glob.charAt(i);
    +        if ((c === '!' || c === '^') && i === pos + 1) {
    +            negate = true;
    +            i++;
    +            continue;
    +        }
    +        if (c === ']' && sawStart && !escaping) {
    +            endPos = i + 1;
    +            break;
    +        }
    +        sawStart = true;
    +        if (c === '\\') {
    +            if (!escaping) {
    +                escaping = true;
    +                i++;
    +                continue;
    +            }
    +            // escaped \ char, fall through and treat like normal char
    +        }
    +        if (c === '[' && !escaping) {
    +            // either a posix class, a collation equivalent, or just a [
    +            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
    +                if (glob.startsWith(cls, i)) {
    +                    // invalid, [a-[] is fine, but not [a-[:alpha]]
    +                    if (rangeStart) {
    +                        return ['$.', false, glob.length - pos, true];
    +                    }
    +                    i += cls.length;
    +                    if (neg)
    +                        negs.push(unip);
    +                    else
    +                        ranges.push(unip);
    +                    uflag = uflag || u;
    +                    continue WHILE;
    +                }
    +            }
    +        }
    +        // now it's just a normal character, effectively
    +        escaping = false;
    +        if (rangeStart) {
    +            // throw this range away if it's not valid, but others
    +            // can still match.
    +            if (c > rangeStart) {
    +                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));
    +            }
    +            else if (c === rangeStart) {
    +                ranges.push(braceEscape(c));
    +            }
    +            rangeStart = '';
    +            i++;
    +            continue;
    +        }
    +        // now might be the start of a range.
    +        // can be either c-d or c-] or c] or c] at this point
    +        if (glob.startsWith('-]', i + 1)) {
    +            ranges.push(braceEscape(c + '-'));
    +            i += 2;
    +            continue;
    +        }
    +        if (glob.startsWith('-', i + 1)) {
    +            rangeStart = c;
    +            i += 2;
    +            continue;
    +        }
    +        // not the start of a range, just a single character
    +        ranges.push(braceEscape(c));
    +        i++;
    +    }
    +    if (endPos < i) {
    +        // didn't see the end of the class, not a valid class,
    +        // but might still be valid as a literal match.
    +        return ['', false, 0, false];
    +    }
    +    // if we got no ranges and no negates, then we have a range that
    +    // cannot possibly match anything, and that poisons the whole glob
    +    if (!ranges.length && !negs.length) {
    +        return ['$.', false, glob.length - pos, true];
    +    }
    +    // if we got one positive range, and it's a single character, then that's
    +    // not actually a magic pattern, it's just that one literal character.
    +    // we should not treat that as "magic", we should just return the literal
    +    // character. [_] is a perfectly valid way to escape glob magic chars.
    +    if (negs.length === 0 &&
    +        ranges.length === 1 &&
    +        /^\\?.$/.test(ranges[0]) &&
    +        !negate) {
    +        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
    +        return [regexpEscape(r), false, endPos - pos, false];
    +    }
    +    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
    +    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
    +    const comb = ranges.length && negs.length
    +        ? '(' + sranges + '|' + snegs + ')'
    +        : ranges.length
    +            ? sranges
    +            : snegs;
    +    return [comb, uflag, endPos - pos, true];
    +};
    +//# sourceMappingURL=brace-expressions.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/escape.js b/deps/npm/node_modules/minimatch/dist/mjs/escape.js
    new file mode 100644
    index 00000000000000..16f7c8c7bdc646
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/escape.js
    @@ -0,0 +1,18 @@
    +/**
    + * Escape all magic characters in a glob pattern.
    + *
    + * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
    + * option is used, then characters are escaped by wrapping in `[]`, because
    + * a magic character wrapped in a character class can only be satisfied by
    + * that exact character.  In this mode, `\` is _not_ escaped, because it is
    + * not interpreted as a magic character, but instead as a path separator.
    + */
    +export const escape = (s, { windowsPathsNoEscape = false, } = {}) => {
    +    // don't need to escape +@! because we escape the parens
    +    // that make those magic, and escaping ! as [!] isn't valid,
    +    // because [!]] is a valid glob class meaning not ']'.
    +    return windowsPathsNoEscape
    +        ? s.replace(/[?*()[\]]/g, '[$&]')
    +        : s.replace(/[?*()[\]\\]/g, '\\$&');
    +};
    +//# sourceMappingURL=escape.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/extglob.js b/deps/npm/node_modules/minimatch/dist/mjs/extglob.js
    new file mode 100644
    index 00000000000000..4033f4d60e34d5
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/extglob.js
    @@ -0,0 +1,3 @@
    +// translate an extglob into a regular expression
    +export {};
    +//# sourceMappingURL=extglob.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/index.d.ts b/deps/npm/node_modules/minimatch/dist/mjs/index.d.ts
    deleted file mode 100644
    index cca07a8280d896..00000000000000
    --- a/deps/npm/node_modules/minimatch/dist/mjs/index.d.ts
    +++ /dev/null
    @@ -1,71 +0,0 @@
    -export interface MinimatchOptions {
    -    nobrace?: boolean;
    -    nocomment?: boolean;
    -    nonegate?: boolean;
    -    debug?: boolean;
    -    noglobstar?: boolean;
    -    noext?: boolean;
    -    nonull?: boolean;
    -    windowsPathsNoEscape?: boolean;
    -    allowWindowsEscape?: boolean;
    -    partial?: boolean;
    -    dot?: boolean;
    -    nocase?: boolean;
    -    nocaseMagicOnly?: boolean;
    -    matchBase?: boolean;
    -    flipNegate?: boolean;
    -    preserveMultipleSlashes?: boolean;
    -}
    -export declare const minimatch: {
    -    (p: string, pattern: string, options?: MinimatchOptions): boolean;
    -    sep: string;
    -    GLOBSTAR: typeof GLOBSTAR;
    -    filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean;
    -    defaults: (def: MinimatchOptions) => typeof minimatch;
    -    braceExpand: (pattern: string, options?: MinimatchOptions) => string[];
    -    makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp;
    -    match: (list: string[], pattern: string, options?: MinimatchOptions) => string[];
    -    Minimatch: typeof Minimatch;
    -};
    -export default minimatch;
    -export declare const sep: string;
    -export declare const GLOBSTAR: unique symbol;
    -export declare const filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean;
    -export declare const defaults: (def: MinimatchOptions) => typeof minimatch;
    -export declare const braceExpand: (pattern: string, options?: MinimatchOptions) => string[];
    -declare const SUBPARSE: unique symbol;
    -export declare const makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp;
    -export declare const match: (list: string[], pattern: string, options?: MinimatchOptions) => string[];
    -export type MMRegExp = RegExp & {
    -    _src?: string;
    -    _glob?: string;
    -};
    -type SubparseReturn = [string, boolean];
    -type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR;
    -type ParseReturn = ParseReturnFiltered | false;
    -export declare class Minimatch {
    -    options: MinimatchOptions;
    -    set: ParseReturnFiltered[][];
    -    pattern: string;
    -    windowsPathsNoEscape: boolean;
    -    nonegate: boolean;
    -    negate: boolean;
    -    comment: boolean;
    -    empty: boolean;
    -    preserveMultipleSlashes: boolean;
    -    partial: boolean;
    -    globSet: string[];
    -    globParts: string[][];
    -    regexp: false | null | MMRegExp;
    -    constructor(pattern: string, options?: MinimatchOptions);
    -    debug(..._: any[]): void;
    -    make(): void;
    -    parseNegate(): void;
    -    matchOne(file: string[], pattern: ParseReturn[], partial?: boolean): boolean;
    -    braceExpand(): string[];
    -    parse(pattern: string, isSub?: typeof SUBPARSE): ParseReturn | SubparseReturn;
    -    makeRe(): false | MMRegExp;
    -    slashSplit(p: string): string[];
    -    match(f: string, partial?: boolean): boolean;
    -    static defaults(def: MinimatchOptions): typeof Minimatch;
    -}
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/index.js b/deps/npm/node_modules/minimatch/dist/mjs/index.js
    index 59ac1968b5ded3..34d53abafc8ea4 100644
    --- a/deps/npm/node_modules/minimatch/dist/mjs/index.js
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/index.js
    @@ -1,3 +1,7 @@
    +import expand from 'brace-expansion';
    +import { parseClass } from './brace-expressions.js';
    +import { escape } from './escape.js';
    +import { unescape } from './unescape.js';
     export const minimatch = (p, pattern, options = {}) => {
         assertValidPattern(pattern);
         // shortcut: comments match nothing.
    @@ -59,20 +63,21 @@ const qmarksTestNoExtDot = ([$0]) => {
         return (f) => f.length === len && f !== '.' && f !== '..';
     };
     /* c8 ignore start */
    -const platform = typeof process === 'object' && process
    +const defaultPlatform = (typeof process === 'object' && process
         ? (typeof process.env === 'object' &&
             process.env &&
             process.env.__MINIMATCH_TESTING_PLATFORM__) ||
             process.platform
    -    : 'posix';
    -const isWindows = platform === 'win32';
    -const path = isWindows ? { sep: '\\' } : { sep: '/' };
    +    : 'posix');
    +const path = {
    +    win32: { sep: '\\' },
    +    posix: { sep: '/' },
    +};
     /* c8 ignore stop */
    -export const sep = path.sep;
    +export const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;
     minimatch.sep = sep;
     export const GLOBSTAR = Symbol('globstar **');
     minimatch.GLOBSTAR = GLOBSTAR;
    -import expand from 'brace-expansion';
     const plTypes = {
         '!': { open: '(?:(?!(?:', close: '))[^/]*?)' },
         '?': { open: '(?:', close: ')?' },
    @@ -119,6 +124,8 @@ export const defaults = (def) => {
                     return orig.defaults(ext(def, options)).Minimatch;
                 }
             },
    +        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
    +        escape: (s, options = {}) => orig.escape(s, ext(def, options)),
             filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
             defaults: (options) => orig.defaults(ext(def, options)),
             makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
    @@ -170,7 +177,6 @@ const assertValidPattern = (pattern) => {
     // when it is the *only* thing in a path portion.  Otherwise, any series
     // of * is equivalent to a single *.  Globstar behavior is enabled by
     // default, and can be disabled by setting options.noglobstar.
    -const SUBPARSE = Symbol('subparse');
     export const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
     minimatch.makeRe = makeRe;
     export const match = (list, pattern, options = {}) => {
    @@ -184,9 +190,8 @@ export const match = (list, pattern, options = {}) => {
     minimatch.match = match;
     // replace stuff like \* with *
     const globUnescape = (s) => s.replace(/\\(.)/g, '$1');
    -const charUnescape = (s) => s.replace(/\\([^-\]])/g, '$1');
    +const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
     const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    -const braExpEscape = (s) => s.replace(/[[\]\\]/g, '\\$&');
     export class Minimatch {
         options;
         set;
    @@ -200,12 +205,18 @@ export class Minimatch {
         partial;
         globSet;
         globParts;
    +    nocase;
    +    isWindows;
    +    platform;
    +    windowsNoMagicRoot;
         regexp;
         constructor(pattern, options = {}) {
             assertValidPattern(pattern);
             options = options || {};
             this.options = options;
             this.pattern = pattern;
    +        this.platform = options.platform || defaultPlatform;
    +        this.isWindows = this.platform === 'win32';
             this.windowsPathsNoEscape =
                 !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
             if (this.windowsPathsNoEscape) {
    @@ -218,12 +229,29 @@ export class Minimatch {
             this.comment = false;
             this.empty = false;
             this.partial = !!options.partial;
    +        this.nocase = !!this.options.nocase;
    +        this.windowsNoMagicRoot =
    +            options.windowsNoMagicRoot !== undefined
    +                ? options.windowsNoMagicRoot
    +                : !!(this.isWindows && this.nocase);
             this.globSet = [];
             this.globParts = [];
             this.set = [];
             // make the set of regexps etc.
             this.make();
         }
    +    hasMagic() {
    +        if (this.options.magicalBraces && this.set.length > 1) {
    +            return true;
    +        }
    +        for (const pattern of this.set) {
    +            for (const part of pattern) {
    +                if (typeof part !== 'string')
    +                    return true;
    +            }
    +        }
    +        return false;
    +    }
         debug(..._) { }
         make() {
             const pattern = this.pattern;
    @@ -240,73 +268,46 @@ export class Minimatch {
             // step 1: figure out negation, etc.
             this.parseNegate();
             // step 2: expand braces
    -        this.globSet = this.braceExpand();
    +        this.globSet = [...new Set(this.braceExpand())];
             if (options.debug) {
                 this.debug = (...args) => console.error(...args);
             }
             this.debug(this.pattern, this.globSet);
    -        // step 3: now we have a set, so turn each one into a series of path-portion
    -        // matching patterns.
    +        // step 3: now we have a set, so turn each one into a series of
    +        // path-portion matching patterns.
             // These will be regexps, except in the case of "**", which is
             // set to the GLOBSTAR object for globstar behavior,
             // and will not contain any / characters
    +        //
    +        // First, we preprocess to make the glob pattern sets a bit simpler
    +        // and deduped.  There are some perf-killing patterns that can cause
    +        // problems with a glob walk, but we can simplify them down a bit.
             const rawGlobParts = this.globSet.map(s => this.slashSplit(s));
    -        // consecutive globstars are an unncessary perf killer
    -        // also, **/*/... is equivalent to */**/..., so swap all of those
    -        // this turns a pattern like **/*/**/*/x into */*/**/x
    -        // and a pattern like **/x/**/*/y becomes **/x/*/**/y
    -        // the *later* we can push the **, the more efficient it is,
    -        // because we can avoid having to do a recursive walk until
    -        // the walked tree is as shallow as possible.
    -        // Note that this is only true up to the last pattern, though, because
    -        // a/*/** will only match a/b if b is a dir, but a/**/* will match a/b
    -        // regardless, since it's "0 or more path segments" if it's not final.
    -        if (this.options.noglobstar) {
    -            // ** is * anyway
    -            this.globParts = rawGlobParts;
    -        }
    -        else {
    -            // do this swap BEFORE the reduce, so that we can turn a string
    -            // of **/*/**/* into */*/**/** and then reduce the **'s into one
    -            for (const parts of rawGlobParts) {
    -                let swapped;
    -                do {
    -                    swapped = false;
    -                    for (let i = 0; i < parts.length - 1; i++) {
    -                        if (parts[i] === '*' && parts[i - 1] === '**') {
    -                            parts[i] = '**';
    -                            parts[i - 1] = '*';
    -                            swapped = true;
    -                        }
    -                    }
    -                } while (swapped);
    -            }
    -            this.globParts = rawGlobParts.map(parts => {
    -                parts = parts.reduce((set, part) => {
    -                    const prev = set[set.length - 1];
    -                    if (part === '**' && prev === '**') {
    -                        return set;
    -                    }
    -                    if (part === '..') {
    -                        if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
    -                            set.pop();
    -                            return set;
    -                        }
    -                    }
    -                    set.push(part);
    -                    return set;
    -                }, []);
    -                return parts.length === 0 ? [''] : parts;
    -            });
    -        }
    +        this.globParts = this.preprocess(rawGlobParts);
             this.debug(this.pattern, this.globParts);
             // glob --> regexps
    -        let set = this.globParts.map((s, _, __) => s.map(ss => this.parse(ss)));
    +        let set = this.globParts.map((s, _, __) => {
    +            if (this.isWindows && this.windowsNoMagicRoot) {
    +                // check if it's a drive or unc path.
    +                const isUNC = s[0] === '' &&
    +                    s[1] === '' &&
    +                    (s[2] === '?' || !globMagic.test(s[2])) &&
    +                    !globMagic.test(s[3]);
    +                const isDrive = /^[a-z]:/i.test(s[0]);
    +                if (isUNC) {
    +                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
    +                }
    +                else if (isDrive) {
    +                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
    +                }
    +            }
    +            return s.map(ss => this.parse(ss));
    +        });
             this.debug(this.pattern, set);
             // filter out everything that didn't compile properly.
             this.set = set.filter(s => s.indexOf(false) === -1);
             // do not treat the ? in UNC paths as magic
    -        if (isWindows) {
    +        if (this.isWindows) {
                 for (let i = 0; i < this.set.length; i++) {
                     const p = this.set[i];
                     if (p[0] === '' &&
    @@ -320,6 +321,276 @@ export class Minimatch {
             }
             this.debug(this.pattern, this.set);
         }
    +    // various transforms to equivalent pattern sets that are
    +    // faster to process in a filesystem walk.  The goal is to
    +    // eliminate what we can, and push all ** patterns as far
    +    // to the right as possible, even if it increases the number
    +    // of patterns that we have to process.
    +    preprocess(globParts) {
    +        // if we're not in globstar mode, then turn all ** into *
    +        if (this.options.noglobstar) {
    +            for (let i = 0; i < globParts.length; i++) {
    +                for (let j = 0; j < globParts[i].length; j++) {
    +                    if (globParts[i][j] === '**') {
    +                        globParts[i][j] = '*';
    +                    }
    +                }
    +            }
    +        }
    +        const { optimizationLevel = 1 } = this.options;
    +        if (optimizationLevel >= 2) {
    +            // aggressive optimization for the purpose of fs walking
    +            globParts = this.firstPhasePreProcess(globParts);
    +            globParts = this.secondPhasePreProcess(globParts);
    +        }
    +        else if (optimizationLevel >= 1) {
    +            // just basic optimizations to remove some .. parts
    +            globParts = this.levelOneOptimize(globParts);
    +        }
    +        else {
    +            globParts = this.adjascentGlobstarOptimize(globParts);
    +        }
    +        return globParts;
    +    }
    +    // just get rid of adjascent ** portions
    +    adjascentGlobstarOptimize(globParts) {
    +        return globParts.map(parts => {
    +            let gs = -1;
    +            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
    +                let i = gs;
    +                while (parts[i + 1] === '**') {
    +                    i++;
    +                }
    +                if (i !== gs) {
    +                    parts.splice(gs, i - gs);
    +                }
    +            }
    +            return parts;
    +        });
    +    }
    +    // get rid of adjascent ** and resolve .. portions
    +    levelOneOptimize(globParts) {
    +        return globParts.map(parts => {
    +            parts = parts.reduce((set, part) => {
    +                const prev = set[set.length - 1];
    +                if (part === '**' && prev === '**') {
    +                    return set;
    +                }
    +                if (part === '..') {
    +                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
    +                        set.pop();
    +                        return set;
    +                    }
    +                }
    +                set.push(part);
    +                return set;
    +            }, []);
    +            return parts.length === 0 ? [''] : parts;
    +        });
    +    }
    +    levelTwoFileOptimize(parts) {
    +        if (!Array.isArray(parts)) {
    +            parts = this.slashSplit(parts);
    +        }
    +        let didSomething = false;
    +        do {
    +            didSomething = false;
    +            // 
    // -> 
    /
    +            if (!this.preserveMultipleSlashes) {
    +                for (let i = 1; i < parts.length - 1; i++) {
    +                    const p = parts[i];
    +                    // don't squeeze out UNC patterns
    +                    if (i === 1 && p === '' && parts[0] === '')
    +                        continue;
    +                    if (p === '.' || p === '') {
    +                        didSomething = true;
    +                        parts.splice(i, 1);
    +                        i--;
    +                    }
    +                }
    +                if (parts[0] === '.' &&
    +                    parts.length === 2 &&
    +                    (parts[1] === '.' || parts[1] === '')) {
    +                    didSomething = true;
    +                    parts.pop();
    +                }
    +            }
    +            // 
    /

    /../ ->

    /
    +            let dd = 0;
    +            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    +                const p = parts[dd - 1];
    +                if (p && p !== '.' && p !== '..' && p !== '**') {
    +                    didSomething = true;
    +                    parts.splice(dd - 1, 2);
    +                    dd -= 2;
    +                }
    +            }
    +        } while (didSomething);
    +        return parts.length === 0 ? [''] : parts;
    +    }
    +    // First phase: single-pattern processing
    +    // 
     is 1 or more portions
    +    //  is 1 or more portions
    +    // 

    is any portion other than ., .., '', or ** + // is . or '' + // + // **/.. is *brutal* for filesystem walking performance, because + // it effectively resets the recursive walk each time it occurs, + // and ** cannot be reduced out by a .. pattern part like a regexp + // or most strings (other than .., ., and '') can be. + // + //

    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} + //

    // -> 
    /
    +    // 
    /

    /../ ->

    /
    +    // **/**/ -> **/
    +    //
    +    // **/*/ -> */**/ <== not valid because ** doesn't follow
    +    // this WOULD be allowed if ** did follow symlinks, or * didn't
    +    firstPhasePreProcess(globParts) {
    +        let didSomething = false;
    +        do {
    +            didSomething = false;
    +            // 
    /**/../

    /

    / -> {

    /../

    /

    /,

    /**/

    /

    /} + for (let parts of globParts) { + let gs = -1; + while (-1 !== (gs = parts.indexOf('**', gs + 1))) { + let gss = gs; + while (parts[gss + 1] === '**') { + //

    /**/**/ -> 
    /**/
    +                        gss++;
    +                    }
    +                    // eg, if gs is 2 and gss is 4, that means we have 3 **
    +                    // parts, and can remove 2 of them.
    +                    if (gss > gs) {
    +                        parts.splice(gs + 1, gss - gs);
    +                    }
    +                    let next = parts[gs + 1];
    +                    const p = parts[gs + 2];
    +                    const p2 = parts[gs + 3];
    +                    if (next !== '..')
    +                        continue;
    +                    if (!p ||
    +                        p === '.' ||
    +                        p === '..' ||
    +                        !p2 ||
    +                        p2 === '.' ||
    +                        p2 === '..') {
    +                        continue;
    +                    }
    +                    didSomething = true;
    +                    // edit parts in place, and push the new one
    +                    parts.splice(gs, 1);
    +                    const other = parts.slice(0);
    +                    other[gs] = '**';
    +                    globParts.push(other);
    +                    gs--;
    +                }
    +                // 
    // -> 
    /
    +                if (!this.preserveMultipleSlashes) {
    +                    for (let i = 1; i < parts.length - 1; i++) {
    +                        const p = parts[i];
    +                        // don't squeeze out UNC patterns
    +                        if (i === 1 && p === '' && parts[0] === '')
    +                            continue;
    +                        if (p === '.' || p === '') {
    +                            didSomething = true;
    +                            parts.splice(i, 1);
    +                            i--;
    +                        }
    +                    }
    +                    if (parts[0] === '.' &&
    +                        parts.length === 2 &&
    +                        (parts[1] === '.' || parts[1] === '')) {
    +                        didSomething = true;
    +                        parts.pop();
    +                    }
    +                }
    +                // 
    /

    /../ ->

    /
    +                let dd = 0;
    +                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
    +                    const p = parts[dd - 1];
    +                    if (p && p !== '.' && p !== '..' && p !== '**') {
    +                        didSomething = true;
    +                        const needDot = dd === 1 && parts[dd + 1] === '**';
    +                        const splin = needDot ? ['.'] : [];
    +                        parts.splice(dd - 1, 2, ...splin);
    +                        if (parts.length === 0)
    +                            parts.push('');
    +                        dd -= 2;
    +                    }
    +                }
    +            }
    +        } while (didSomething);
    +        return globParts;
    +    }
    +    // second phase: multi-pattern dedupes
    +    // {
    /*/,
    /

    /} ->

    /*/
    +    // {
    /,
    /} -> 
    /
    +    // {
    /**/,
    /} -> 
    /**/
    +    //
    +    // {
    /**/,
    /**/

    /} ->

    /**/
    +    // ^-- not valid because ** doens't follow symlinks
    +    secondPhasePreProcess(globParts) {
    +        for (let i = 0; i < globParts.length - 1; i++) {
    +            for (let j = i + 1; j < globParts.length; j++) {
    +                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
    +                if (!matched)
    +                    continue;
    +                globParts[i] = matched;
    +                globParts[j] = [];
    +            }
    +        }
    +        return globParts.filter(gs => gs.length);
    +    }
    +    partsMatch(a, b, emptyGSMatch = false) {
    +        let ai = 0;
    +        let bi = 0;
    +        let result = [];
    +        let which = '';
    +        while (ai < a.length && bi < b.length) {
    +            if (a[ai] === b[bi]) {
    +                result.push(which === 'b' ? b[bi] : a[ai]);
    +                ai++;
    +                bi++;
    +            }
    +            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
    +                result.push(a[ai]);
    +                ai++;
    +            }
    +            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
    +                result.push(b[bi]);
    +                bi++;
    +            }
    +            else if (a[ai] === '*' &&
    +                b[bi] &&
    +                (this.options.dot || !b[bi].startsWith('.')) &&
    +                b[bi] !== '**') {
    +                if (which === 'b')
    +                    return false;
    +                which = 'a';
    +                result.push(a[ai]);
    +                ai++;
    +                bi++;
    +            }
    +            else if (b[bi] === '*' &&
    +                a[ai] &&
    +                (this.options.dot || !a[ai].startsWith('.')) &&
    +                a[ai] !== '**') {
    +                if (which === 'a')
    +                    return false;
    +                which = 'b';
    +                result.push(b[bi]);
    +                ai++;
    +                bi++;
    +            }
    +            else {
    +                return false;
    +            }
    +        }
    +        // if we fall out of the loop, it means they two are identical
    +        // as long as their lengths match
    +        return a.length === b.length && result;
    +    }
         parseNegate() {
             if (this.nonegate)
                 return;
    @@ -343,7 +614,7 @@ export class Minimatch {
             const options = this.options;
             // a UNC pattern like //?/c:/* can match a path like c:/x
             // and vice versa
    -        if (isWindows) {
    +        if (this.isWindows) {
                 const fileUNC = file[0] === '' &&
                     file[1] === '' &&
                     file[2] === '?' &&
    @@ -377,6 +648,12 @@ export class Minimatch {
                     }
                 }
             }
    +        // resolve and reduce . and .. portions in the file as well.
    +        // dont' need to do the second phase, because it's only one string[]
    +        const { optimizationLevel = 1 } = this.options;
    +        if (optimizationLevel >= 2) {
    +            file = this.levelTwoFileOptimize(file);
    +        }
             this.debug('matchOne', this, { file, pattern });
             this.debug('matchOne', file.length, pattern.length);
             for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
    @@ -524,50 +801,44 @@ export class Minimatch {
         braceExpand() {
             return braceExpand(this.pattern, this.options);
         }
    -    parse(pattern, isSub) {
    +    parse(pattern) {
             assertValidPattern(pattern);
             const options = this.options;
             // shortcuts
    -        if (pattern === '**') {
    -            if (!options.noglobstar)
    -                return GLOBSTAR;
    -            else
    -                pattern = '*';
    -        }
    +        if (pattern === '**')
    +            return GLOBSTAR;
             if (pattern === '')
                 return '';
             // far and away, the most common glob pattern parts are
             // *, *.*, and *.  Add a fast check method for those.
             let m;
             let fastTest = null;
    -        if (isSub !== SUBPARSE) {
    -            if ((m = pattern.match(starRE))) {
    -                fastTest = options.dot ? starTestDot : starTest;
    -            }
    -            else if ((m = pattern.match(starDotExtRE))) {
    -                fastTest = (options.nocase
    -                    ? options.dot
    -                        ? starDotExtTestNocaseDot
    -                        : starDotExtTestNocase
    -                    : options.dot
    -                        ? starDotExtTestDot
    -                        : starDotExtTest)(m[1]);
    -            }
    -            else if ((m = pattern.match(qmarksRE))) {
    -                fastTest = (options.nocase
    -                    ? options.dot
    -                        ? qmarksTestNocaseDot
    -                        : qmarksTestNocase
    -                    : options.dot
    -                        ? qmarksTestDot
    -                        : qmarksTest)(m);
    -            }
    -            else if ((m = pattern.match(starDotStarRE))) {
    -                fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    -            }
    -            else if ((m = pattern.match(dotStarRE))) {
    -                fastTest = dotStarTest;
    -            }
    +        if ((m = pattern.match(starRE))) {
    +            fastTest = options.dot ? starTestDot : starTest;
    +        }
    +        else if ((m = pattern.match(starDotExtRE))) {
    +            fastTest = (options.nocase
    +                ? options.dot
    +                    ? starDotExtTestNocaseDot
    +                    : starDotExtTestNocase
    +                : options.dot
    +                    ? starDotExtTestDot
    +                    : starDotExtTest)(m[1]);
    +        }
    +        else if ((m = pattern.match(qmarksRE))) {
    +            fastTest = (options.nocase
    +                ? options.dot
    +                    ? qmarksTestNocaseDot
    +                    : qmarksTestNocase
    +                : options.dot
    +                    ? qmarksTestDot
    +                    : qmarksTest)(m);
    +        }
    +        else if ((m = pattern.match(starDotStarRE))) {
    +            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
    +        }
    +        else if ((m = pattern.match(dotStarRE))) {
    +            fastTest = dotStarTest;
             }
             let re = '';
             let hasMagic = false;
    @@ -576,12 +847,8 @@ export class Minimatch {
             const patternListStack = [];
             const negativeLists = [];
             let stateChar = false;
    -        let inClass = false;
    -        let reClassStart = -1;
    -        let classStart = -1;
    -        let cs;
    +        let uflag = false;
             let pl;
    -        let sp;
             // . and .. never match anything that doesn't start with .,
             // even when options.dot is set.  However, if the pattern
             // starts with ., then traversal patterns can match.
    @@ -644,10 +911,6 @@ export class Minimatch {
                     }
                     /* c8 ignore stop */
                     case '\\':
    -                    if (inClass && pattern.charAt(i + 1) === '-') {
    -                        re += c;
    -                        continue;
    -                    }
                         clearStateChar();
                         escaping = true;
                         continue;
    @@ -659,15 +922,6 @@ export class Minimatch {
                     case '@':
                     case '!':
                         this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c);
    -                    // all of those are literals inside a class, except that
    -                    // the glob [!a] means [^a] in regexp
    -                    if (inClass) {
    -                        this.debug('  in class');
    -                        if (c === '!' && i === classStart + 1)
    -                            c = '^';
    -                        re += c;
    -                        continue;
    -                    }
                         // if we already have a stateChar, then it means
                         // that there was something like ** or +? in there.
                         // Handle the stateChar, then proceed with this one.
    @@ -681,10 +935,6 @@ export class Minimatch {
                             clearStateChar();
                         continue;
                     case '(': {
    -                    if (inClass) {
    -                        re += '(';
    -                        continue;
    -                    }
                         if (!stateChar) {
                             re += '\\(';
                             continue;
    @@ -711,7 +961,7 @@ export class Minimatch {
                     }
                     case ')': {
                         const plEntry = patternListStack[patternListStack.length - 1];
    -                    if (inClass || !plEntry) {
    +                    if (!plEntry) {
                             re += '\\)';
                             continue;
                         }
    @@ -730,7 +980,7 @@ export class Minimatch {
                     }
                     case '|': {
                         const plEntry = patternListStack[patternListStack.length - 1];
    -                    if (inClass || !plEntry) {
    +                    if (!plEntry) {
                             re += '\\|';
                             continue;
                         }
    @@ -747,67 +997,27 @@ export class Minimatch {
                     case '[':
                         // swallow any state-tracking char before the [
                         clearStateChar();
    -                    if (inClass) {
    -                        re += '\\' + c;
    -                        continue;
    +                    const [src, needUflag, consumed, magic] = parseClass(pattern, i);
    +                    if (consumed) {
    +                        re += src;
    +                        uflag = uflag || needUflag;
    +                        i += consumed - 1;
    +                        hasMagic = hasMagic || magic;
    +                    }
    +                    else {
    +                        re += '\\[';
                         }
    -                    inClass = true;
    -                    classStart = i;
    -                    reClassStart = re.length;
    -                    re += c;
                         continue;
                     case ']':
    -                    //  a right bracket shall lose its special
    -                    //  meaning and represent itself in
    -                    //  a bracket expression if it occurs
    -                    //  first in the list.  -- POSIX.2 2.8.3.2
    -                    if (i === classStart + 1 || !inClass) {
    -                        re += '\\' + c;
    -                        continue;
    -                    }
    -                    // split where the last [ was, make sure we don't have
    -                    // an invalid re. if so, re-walk the contents of the
    -                    // would-be class to re-translate any characters that
    -                    // were passed through as-is
    -                    // TODO: It would probably be faster to determine this
    -                    // without a try/catch and a new RegExp, but it's tricky
    -                    // to do safely.  For now, this is safe and works.
    -                    cs = pattern.substring(classStart + 1, i);
    -                    try {
    -                        RegExp('[' + braExpEscape(charUnescape(cs)) + ']');
    -                        // looks good, finish up the class.
    -                        re += c;
    -                    }
    -                    catch (er) {
    -                        // out of order ranges in JS are errors, but in glob syntax,
    -                        // they're just a range that matches nothing.
    -                        re = re.substring(0, reClassStart) + '(?:$.)'; // match nothing ever
    -                    }
    -                    hasMagic = true;
    -                    inClass = false;
    +                    re += '\\' + c;
                         continue;
                     default:
                         // swallow any state char that wasn't consumed
                         clearStateChar();
    -                    if (reSpecials[c] && !(c === '^' && inClass)) {
    -                        re += '\\';
    -                    }
    -                    re += c;
    +                    re += regExpEscape(c);
                         break;
                 } // switch
             } // for
    -        // handle the case where we left a class open.
    -        // "[abc" is valid, equivalent to "\[abc"
    -        if (inClass) {
    -            // split where the last [ was, and escape it
    -            // this is a huge pita.  We now have to re-walk
    -            // the contents of the would-be class to re-translate
    -            // any characters that were passed through as-is
    -            cs = pattern.slice(classStart + 1);
    -            sp = this.parse(cs, SUBPARSE);
    -            re = re.substring(0, reClassStart) + '\\[' + sp[0];
    -            hasMagic = hasMagic || sp[1];
    -        }
             // handle the case where we had a +( thing at the *end*
             // of the pattern.
             // each pattern list stack adds 3 chars, and we need to go through
    @@ -870,7 +1080,7 @@ export class Minimatch {
                     cleanAfter = cleanAfter.replace(/\)[+*?]?/, '');
                 }
                 nlAfter = cleanAfter;
    -            const dollar = nlAfter === '' && isSub !== SUBPARSE ? '(?:$|\\/)' : '';
    +            const dollar = nlAfter === '' ? '(?:$|\\/)' : '';
                 re = nlBefore + nlFirst + nlAfter + dollar + nlLast;
             }
             // if the re is not "" at this point, then we need to make sure
    @@ -882,10 +1092,6 @@ export class Minimatch {
             if (addPatternStart) {
                 re = patternStart() + re;
             }
    -        // parsing just a piece of a larger pattern.
    -        if (isSub === SUBPARSE) {
    -            return [re, hasMagic];
    -        }
             // if it's nocase, and the lcase/uppercase don't match, it's magic
             if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {
                 hasMagic = pattern.toUpperCase() !== pattern.toLowerCase();
    @@ -894,9 +1100,9 @@ export class Minimatch {
             // unescape anything in it, though, so that it'll be
             // an exact match against a file etc.
             if (!hasMagic) {
    -            return globUnescape(pattern);
    +            return globUnescape(re);
             }
    -        const flags = options.nocase ? 'i' : '';
    +        const flags = (options.nocase ? 'i' : '') + (uflag ? 'u' : '');
             try {
                 const ext = fastTest
                     ? {
    @@ -1006,7 +1212,7 @@ export class Minimatch {
             if (this.preserveMultipleSlashes) {
                 return p.split('/');
             }
    -        else if (isWindows && /^\/\/[^\/]+/.test(p)) {
    +        else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
                 // add an extra '' for the one we lose
                 return ['', ...p.split(/\/+/)];
             }
    @@ -1029,8 +1235,8 @@ export class Minimatch {
             }
             const options = this.options;
             // windows: need to use /, not \
    -        if (path.sep !== '/') {
    -            f = f.split(path.sep).join('/');
    +        if (this.isWindows) {
    +            f = f.split('\\').join('/');
             }
             // treat the test path as a set of pathparts.
             const ff = this.slashSplit(f);
    @@ -1073,5 +1279,11 @@ export class Minimatch {
             return minimatch.defaults(def).Minimatch;
         }
     }
    +/* c8 ignore start */
    +export { escape } from './escape.js';
    +export { unescape } from './unescape.js';
    +/* c8 ignore stop */
     minimatch.Minimatch = Minimatch;
    +minimatch.escape = escape;
    +minimatch.unescape = unescape;
     //# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/index.js.map b/deps/npm/node_modules/minimatch/dist/mjs/index.js.map
    deleted file mode 100644
    index 854172c5bd0f01..00000000000000
    --- a/deps/npm/node_modules/minimatch/dist/mjs/index.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,CAAS,EACT,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAE3B,oCAAoC;IACpC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACnD,OAAO,KAAK,CAAA;KACb;IAED,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,eAAe,SAAS,CAAA;AAExB,wDAAwD;AACxD,MAAM,YAAY,GAAG,uBAAuB,CAAA;AAC5C,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACvC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACzE,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC3C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC3E,CAAC,CAAA;AACD,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC9C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACrD,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,YAAY,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5E,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAE,EAAE,CACvC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5C,MAAM,SAAS,GAAG,SAAS,CAAA;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC/E,MAAM,MAAM,GAAG,OAAO,CAAA;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACpE,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AAC5E,MAAM,QAAQ,GAAG,wBAAwB,CAAA;AACzC,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9D,CAAC,CAAA;AACD,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AACnE,CAAC,CAAA;AAED,qBAAqB;AACrB,MAAM,QAAQ,GACZ,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO;IACpC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAC9B,OAAO,CAAC,GAAG;QACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC7C,OAAO,CAAC,QAAQ;IAClB,CAAC,CAAC,OAAO,CAAA;AACb,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAA;AACtC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AACrD,oBAAoB;AAEpB,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;AAC3B,SAAS,CAAC,GAAG,GAAG,GAAG,CAAA;AAEnB,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAC7C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AAC7B,OAAO,MAAM,MAAM,iBAAiB,CAAA;AAEpC,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IAC9C,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACjC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACjC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;IACjC,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;CACjC,CAAA;AAGD,gCAAgC;AAChC,iDAAiD;AACjD,MAAM,KAAK,GAAG,MAAM,CAAA;AAEpB,gCAAgC;AAChC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AAEzB,4DAA4D;AAC5D,+DAA+D;AAC/D,6CAA6C;AAC7C,MAAM,UAAU,GAAG,yCAAyC,CAAA;AAE5D,kCAAkC;AAClC,6CAA6C;AAC7C,MAAM,YAAY,GAAG,yBAAyB,CAAA;AAE9C,sCAAsC;AACtC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAC5B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,GAA6B,EAAE,CAAC,EAAE,EAAE;IACtD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;IACb,OAAO,GAAG,CAAA;AACZ,CAAC,EAAE,EAAE,CAAC,CAAA;AAER,gDAAgD;AAChD,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE7C,4DAA4D;AAC5D,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACpD,CAAC,CAAS,EAAE,EAAE,CACZ,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAClC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;AAEzB,MAAM,GAAG,GAAG,CAAC,CAAmB,EAAE,IAAsB,EAAE,EAAE,EAAE,CAC5D,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAoB,EAAE;IAClE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QAC/D,OAAO,SAAS,CAAA;KACjB;IAED,MAAM,IAAI,GAAG,SAAS,CAAA;IAEtB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACvE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;QACtB,SAAS,EAAE,MAAM,SAAU,SAAQ,IAAI,CAAC,SAAS;YAC/C,YAAY,OAAe,EAAE,UAA4B,EAAE;gBACzD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,OAAyB;gBACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;YACnD,CAAC;SACF;QAED,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,QAAQ,EAAE,CAAC,OAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzE,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,WAAW,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,KAAK,EAAE,CAAC,IAAc,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACzE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,QAA2B;KACtC,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AAE7B,mBAAmB;AACnB,qBAAqB;AACrB,mBAAmB;AACnB,8BAA8B;AAC9B,mCAAmC;AACnC,2CAA2C;AAC3C,EAAE;AACF,iCAAiC;AACjC,qBAAqB;AACrB,iBAAiB;AACjB,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAE3B,wDAAwD;IACxD,wDAAwD;IACxD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACxD,+BAA+B;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAA;KACjB;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;AACxB,CAAC,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AAEnC,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AACpC,MAAM,kBAAkB,GAA2B,CACjD,OAAY,EACe,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;KACvC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE;QACvC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;KAC3C;AACH,CAAC,CAAA;AAED,yCAAyC;AACzC,kDAAkD;AAClD,oEAAoE;AACpE,oEAAoE;AACpE,6DAA6D;AAC7D,kEAAkE;AAClE,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,8DAA8D;AAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AAEnC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACxE,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;AAC1C,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;AAEzB,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAAc,EACd,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACnB;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AACD,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;AAEvB,+BAA+B;AAC/B,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAC7D,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;AAClE,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAC/C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAsBjE,MAAM,OAAO,SAAS;IACpB,OAAO,CAAkB;IACzB,GAAG,CAAyB;IAC5B,OAAO,CAAQ;IAEf,oBAAoB,CAAS;IAC7B,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,KAAK,CAAS;IACd,uBAAuB,CAAS;IAChC,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,SAAS,CAAY;IAErB,MAAM,CAAyB;IAC/B,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAE3B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,oBAAoB;YACvB,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAA;QACxE,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAChD;QACD,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAA;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;QAEhC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,+BAA+B;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,KAAK,CAAC,GAAG,CAAQ,IAAG,CAAC;IAErB,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,OAAM;SACP;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,OAAM;SACP;QAED,oCAAoC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,wBAAwB;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAEjC,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;SACxD;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEtC,4EAA4E;QAC5E,qBAAqB;QACrB,8DAA8D;QAC9D,oDAAoD;QACpD,wCAAwC;QACxC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAE9D,sDAAsD;QACtD,iEAAiE;QACjE,sDAAsD;QACtD,qDAAqD;QACrD,4DAA4D;QAC5D,2DAA2D;QAC3D,6CAA6C;QAC7C,sEAAsE;QACtE,sEAAsE;QACtE,sEAAsE;QACtE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,iBAAiB;YACjB,IAAI,CAAC,SAAS,GAAG,YAAY,CAAA;SAC9B;aAAM;YACL,+DAA+D;YAC/D,gEAAgE;YAChE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE;gBAChC,IAAI,OAAgB,CAAA;gBACpB,GAAG;oBACD,OAAO,GAAG,KAAK,CAAA;oBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACzC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;4BAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;4BACf,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;4BAClB,OAAO,GAAG,IAAI,CAAA;yBACf;qBACF;iBACF,QAAQ,OAAO,EAAC;aAClB;YACD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;gBACxC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,IAAI,EAAE,EAAE;oBAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAChC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;wBAClC,OAAO,GAAG,CAAA;qBACX;oBACD,IAAI,IAAI,KAAK,IAAI,EAAE;wBACjB,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE;4BAC1D,GAAG,CAAC,GAAG,EAAE,CAAA;4BACT,OAAO,GAAG,CAAA;yBACX;qBACF;oBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACd,OAAO,GAAG,CAAA;gBACZ,CAAC,EAAE,EAAE,CAAC,CAAA;gBACN,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;YAC1C,CAAC,CAAC,CAAA;SACH;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAExC,mBAAmB;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAEvE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAE7B,sDAAsD;QACtD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CACnB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACF,CAAA;QAE5B,2CAA2C;QAC3C,IAAI,SAAS,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACrB,IACE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;oBAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACxB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB;oBACA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;iBACX;aACF;SACF;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,YAAY,GAAG,CAAC,CAAA;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE;YACpE,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,YAAY,EAAE,CAAA;SACf;QAED,IAAI,YAAY;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,+CAA+C;IAC/C,yCAAyC;IACzC,uDAAuD;IACvD,mDAAmD;IACnD,mBAAmB;IACnB,QAAQ,CAAC,IAAc,EAAE,OAAsB,EAAE,UAAmB,KAAK;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,yDAAyD;QACzD,iBAAiB;QACjB,IAAI,SAAS,EAAE;YACb,MAAM,OAAO,GACX,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBACf,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC3B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC3B,MAAM,UAAU,GACd,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAClB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC9B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAE9B,IAAI,OAAO,IAAI,UAAU,EAAE;gBACzB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAW,CAAA;gBAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAW,CAAA;gBAC/B,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;oBACzC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;iBACb;aACF;iBAAM,IAAI,UAAU,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACpD,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAW,CAAA;gBAC/B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;oBACzC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;oBACf,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBAC3B;aACF;iBAAM,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;gBACpD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;gBAClB,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;oBACjD,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;oBACf,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;iBACrB;aACF;SACF;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAEnD,KACE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EACzD,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAClB,EAAE,EAAE,EAAE,EAAE,EAAE,EACV;YACA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAC3B,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAEzB,wBAAwB;YACxB,wCAAwC;YACxC,qBAAqB;YACrB,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,OAAO,KAAK,CAAA;aACb;YACD,oBAAoB;YAEpB,IAAI,CAAC,KAAK,QAAQ,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAEvC,OAAO;gBACP,yCAAyC;gBACzC,cAAc;gBACd,cAAc;gBACd,cAAc;gBACd,QAAQ;gBACR,iDAAiD;gBACjD,wDAAwD;gBACxD,yBAAyB;gBACzB,sDAAsD;gBACtD,6BAA6B;gBAC7B,EAAE;gBACF,mCAAmC;gBACnC,gBAAgB;gBAChB,eAAe;gBACf,kCAAkC;gBAClC,oBAAoB;gBACpB,mBAAmB;gBACnB,qCAAqC;gBACrC,mCAAmC;gBACnC,iCAAiC;gBACjC,kCAAkC;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAA;gBACX,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACf,IAAI,EAAE,KAAK,EAAE,EAAE;oBACb,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;oBAC3B,8CAA8C;oBAC9C,yBAAyB;oBACzB,2CAA2C;oBAC3C,sBAAsB;oBACtB,sDAAsD;oBACtD,uBAAuB;oBACvB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;wBACpB,IACE,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;4BAChB,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI;4BACjB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;4BAE5C,OAAO,KAAK,CAAA;qBACf;oBACD,OAAO,IAAI,CAAA;iBACZ;gBAED,mDAAmD;gBACnD,OAAO,EAAE,GAAG,EAAE,EAAE;oBACd,IAAI,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;oBAExB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;oBAEhE,qDAAqD;oBACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;wBAC7D,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;wBACtD,iBAAiB;wBACjB,OAAO,IAAI,CAAA;qBACZ;yBAAM;wBACL,kCAAkC;wBAClC,iDAAiD;wBACjD,IACE,SAAS,KAAK,GAAG;4BACjB,SAAS,KAAK,IAAI;4BAClB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAC7C;4BACA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;4BAClD,MAAK;yBACN;wBAED,uCAAuC;wBACvC,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;wBACtD,EAAE,EAAE,CAAA;qBACL;iBACF;gBAED,sBAAsB;gBACtB,mEAAmE;gBACnE,qBAAqB;gBACrB,IAAI,OAAO,EAAE;oBACX,kBAAkB;oBAClB,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;oBAC7D,IAAI,EAAE,KAAK,EAAE,EAAE;wBACb,OAAO,IAAI,CAAA;qBACZ;iBACF;gBACD,oBAAoB;gBACpB,OAAO,KAAK,CAAA;aACb;YAED,0BAA0B;YAC1B,gDAAgD;YAChD,qDAAqD;YACrD,IAAI,GAAY,CAAA;YAChB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBACzB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;gBACb,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACtC;iBAAM;gBACL,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACf,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACvC;YAED,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAA;SACvB;QAED,oDAAoD;QACpD,oDAAoD;QACpD,2CAA2C;QAC3C,kDAAkD;QAClD,oDAAoD;QACpD,uDAAuD;QACvD,oDAAoD;QACpD,yDAAyD;QACzD,6BAA6B;QAC7B,yCAAyC;QAEzC,gEAAgE;QAChE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1B,oDAAoD;YACpD,gBAAgB;YAChB,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,+CAA+C;YAC/C,iDAAiD;YACjD,uBAAuB;YACvB,OAAO,OAAO,CAAA;SACf;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,4CAA4C;YAC5C,oDAAoD;YACpD,iDAAiD;YACjD,wBAAwB;YACxB,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAEvC,qBAAqB;SACtB;aAAM;YACL,yBAAyB;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;SACxB;QACD,oBAAoB;IACtB,CAAC;IAED,WAAW;QACT,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CACH,OAAe,EACf,KAAuB;QAEvB,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,YAAY;QACZ,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,UAAU;gBAAE,OAAO,QAAQ,CAAA;;gBACnC,OAAO,GAAG,GAAG,CAAA;SACnB;QACD,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,CAAA;QAE7B,uDAAuD;QACvD,0DAA0D;QAC1D,IAAI,CAA0B,CAAA;QAC9B,IAAI,QAAQ,GAAoC,IAAI,CAAA;QACpD,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;gBAC/B,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;aAChD;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE;gBAC5C,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;oBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;wBACX,CAAC,CAAC,uBAAuB;wBACzB,CAAC,CAAC,oBAAoB;oBACxB,CAAC,CAAC,OAAO,CAAC,GAAG;wBACb,CAAC,CAAC,iBAAiB;wBACnB,CAAC,CAAC,cAAc,CACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aACR;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;gBACxC,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;oBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;wBACX,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,gBAAgB;oBACpB,CAAC,CAAC,OAAO,CAAC,GAAG;wBACb,CAAC,CAAC,aAAa;wBACf,CAAC,CAAC,UAAU,CACf,CAAC,CAAC,CAAC,CAAA;aACL;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;gBAC7C,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAA;aAC9D;iBAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;gBACzC,QAAQ,GAAG,WAAW,CAAA;aACvB;SACF;QAED,IAAI,EAAE,GAAG,EAAE,CAAA;QACX,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,4BAA4B;QAC5B,MAAM,gBAAgB,GAAuB,EAAE,CAAA;QAC/C,MAAM,aAAa,GAA+B,EAAE,CAAA;QACpD,IAAI,SAAS,GAAsB,KAAK,CAAA;QACxC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC,CAAA;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;QACnB,IAAI,EAAU,CAAA;QACd,IAAI,EAAgC,CAAA;QACpC,IAAI,EAAkB,CAAA;QACtB,2DAA2D;QAC3D,yDAAyD;QACzD,oDAAoD;QACpD,IAAI,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;QAC9C,IAAI,cAAc,GAAG,OAAO,CAAC,GAAG,IAAI,cAAc,CAAA;QAClD,MAAM,YAAY,GAAG,GAAG,EAAE,CACxB,cAAc;YACZ,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE,CACpC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YACjB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,gCAAgC;gBAClC,CAAC,CAAC,SAAS,CAAA;QAEf,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,SAAS,EAAE;gBACb,uCAAuC;gBACvC,qCAAqC;gBACrC,QAAQ,SAAS,EAAE;oBACjB,KAAK,GAAG;wBACN,EAAE,IAAI,IAAI,CAAA;wBACV,QAAQ,GAAG,IAAI,CAAA;wBACf,MAAK;oBACP,KAAK,GAAG;wBACN,EAAE,IAAI,KAAK,CAAA;wBACX,QAAQ,GAAG,IAAI,CAAA;wBACf,MAAK;oBACP;wBACE,EAAE,IAAI,IAAI,GAAG,SAAS,CAAA;wBACtB,MAAK;iBACR;gBACD,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;gBACjD,SAAS,GAAG,KAAK,CAAA;aAClB;QACH,CAAC,CAAA;QAED,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAS,EACpB,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAC7C,CAAC,EAAE,EACH;YACA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAE7C,kCAAkC;YAClC,IAAI,QAAQ,EAAE;gBACZ,wCAAwC;gBACxC,wBAAwB;gBACxB,qBAAqB;gBACrB,IAAI,CAAC,KAAK,GAAG,EAAE;oBACb,OAAO,KAAK,CAAA;iBACb;gBACD,oBAAoB;gBAEpB,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;oBACjB,EAAE,IAAI,IAAI,CAAA;iBACX;gBACD,EAAE,IAAI,CAAC,CAAA;gBACP,QAAQ,GAAG,KAAK,CAAA;gBAChB,SAAQ;aACT;YAED,QAAQ,CAAC,EAAE;gBACT,uCAAuC;gBACvC,qBAAqB;gBACrB,KAAK,GAAG,CAAC,CAAC;oBACR,OAAO,KAAK,CAAA;iBACb;gBACD,oBAAoB;gBAEpB,KAAK,IAAI;oBACP,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;wBAC5C,EAAE,IAAI,CAAC,CAAA;wBACP,SAAQ;qBACT;oBAED,cAAc,EAAE,CAAA;oBAChB,QAAQ,GAAG,IAAI,CAAA;oBACf,SAAQ;gBAEV,+BAA+B;gBAC/B,2BAA2B;gBAC3B,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG,CAAC;gBACT,KAAK,GAAG;oBACN,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;oBAE3D,wDAAwD;oBACxD,qCAAqC;oBACrC,IAAI,OAAO,EAAE;wBACX,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;wBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC;4BAAE,CAAC,GAAG,GAAG,CAAA;wBAC9C,EAAE,IAAI,CAAC,CAAA;wBACP,SAAQ;qBACT;oBAED,gDAAgD;oBAChD,mDAAmD;oBACnD,oDAAoD;oBACpD,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAA;oBAC/C,cAAc,EAAE,CAAA;oBAChB,SAAS,GAAG,CAAC,CAAA;oBACb,0DAA0D;oBAC1D,+DAA+D;oBAC/D,yBAAyB;oBACzB,IAAI,OAAO,CAAC,KAAK;wBAAE,cAAc,EAAE,CAAA;oBACnC,SAAQ;gBAEV,KAAK,GAAG,CAAC,CAAC;oBACR,IAAI,OAAO,EAAE;wBACX,EAAE,IAAI,GAAG,CAAA;wBACT,SAAQ;qBACT;oBAED,IAAI,CAAC,SAAS,EAAE;wBACd,EAAE,IAAI,KAAK,CAAA;wBACX,SAAQ;qBACT;oBAED,MAAM,OAAO,GAAqB;wBAChC,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,CAAC,GAAG,CAAC;wBACZ,OAAO,EAAE,EAAE,CAAC,MAAM;wBAClB,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI;wBAC7B,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK;qBAChC,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;oBACvC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBAC9B,4CAA4C;oBAC5C,EAAE,IAAI,OAAO,CAAC,IAAI,CAAA;oBAClB,sCAAsC;oBACtC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE;wBAC/C,cAAc,GAAG,IAAI,CAAA;wBACrB,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;qBAC5C;oBACD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;oBACzC,SAAS,GAAG,KAAK,CAAA;oBACjB,SAAQ;iBACT;gBAED,KAAK,GAAG,CAAC,CAAC;oBACR,MAAM,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC7D,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;wBACvB,EAAE,IAAI,KAAK,CAAA;wBACX,SAAQ;qBACT;oBACD,gBAAgB,CAAC,GAAG,EAAE,CAAA;oBAEtB,qBAAqB;oBACrB,cAAc,EAAE,CAAA;oBAChB,QAAQ,GAAG,IAAI,CAAA;oBACf,EAAE,GAAG,OAAO,CAAA;oBACZ,8BAA8B;oBAC9B,qCAAqC;oBACrC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAA;oBACd,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,EAAE;wBACnB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;qBAC5D;oBACD,SAAQ;iBACT;gBAED,KAAK,GAAG,CAAC,CAAC;oBACR,MAAM,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;oBAC7D,IAAI,OAAO,IAAI,CAAC,OAAO,EAAE;wBACvB,EAAE,IAAI,KAAK,CAAA;wBACX,SAAQ;qBACT;oBAED,cAAc,EAAE,CAAA;oBAChB,EAAE,IAAI,GAAG,CAAA;oBACT,wCAAwC;oBACxC,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE;wBAC/C,cAAc,GAAG,IAAI,CAAA;wBACrB,EAAE,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;qBAC5C;oBACD,SAAQ;iBACT;gBAED,+CAA+C;gBAC/C,KAAK,GAAG;oBACN,+CAA+C;oBAC/C,cAAc,EAAE,CAAA;oBAEhB,IAAI,OAAO,EAAE;wBACX,EAAE,IAAI,IAAI,GAAG,CAAC,CAAA;wBACd,SAAQ;qBACT;oBAED,OAAO,GAAG,IAAI,CAAA;oBACd,UAAU,GAAG,CAAC,CAAA;oBACd,YAAY,GAAG,EAAE,CAAC,MAAM,CAAA;oBACxB,EAAE,IAAI,CAAC,CAAA;oBACP,SAAQ;gBAEV,KAAK,GAAG;oBACN,0CAA0C;oBAC1C,mCAAmC;oBACnC,qCAAqC;oBACrC,0CAA0C;oBAC1C,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE;wBACpC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAA;wBACd,SAAQ;qBACT;oBAED,sDAAsD;oBACtD,oDAAoD;oBACpD,qDAAqD;oBACrD,4BAA4B;oBAC5B,sDAAsD;oBACtD,wDAAwD;oBACxD,kDAAkD;oBAClD,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;oBACzC,IAAI;wBACF,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;wBAClD,mCAAmC;wBACnC,EAAE,IAAI,CAAC,CAAA;qBACR;oBAAC,OAAO,EAAE,EAAE;wBACX,4DAA4D;wBAC5D,6CAA6C;wBAC7C,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAA,CAAC,qBAAqB;qBACpE;oBACD,QAAQ,GAAG,IAAI,CAAA;oBACf,OAAO,GAAG,KAAK,CAAA;oBACf,SAAQ;gBAEV;oBACE,8CAA8C;oBAC9C,cAAc,EAAE,CAAA;oBAEhB,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,EAAE;wBAC5C,EAAE,IAAI,IAAI,CAAA;qBACX;oBAED,EAAE,IAAI,CAAC,CAAA;oBACP,MAAK;aACR,CAAC,SAAS;SACZ,CAAC,MAAM;QAER,8CAA8C;QAC9C,yCAAyC;QACzC,IAAI,OAAO,EAAE;YACX,4CAA4C;YAC5C,+CAA+C;YAC/C,qDAAqD;YACrD,gDAAgD;YAChD,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAA;YAClC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,CAAmB,CAAA;YAC/C,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YAClD,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;SAC7B;QAED,uDAAuD;QACvD,kBAAkB;QAClB,kEAAkE;QAClE,wEAAwE;QACxE,mEAAmE;QACnE,qCAAqC;QACrC,KAAK,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,EAAE;YACjE,IAAI,IAAY,CAAA;YAChB,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAChD,+DAA+D;YAC/D,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;gBAC7D,IAAI,CAAC,EAAE,EAAE;oBACP,6CAA6C;oBAC7C,EAAE,GAAG,IAAI,CAAA;oBACT,yBAAyB;oBACzB,qBAAqB;iBACtB;gBACD,oBAAoB;gBAEpB,iEAAiE;gBACjE,mEAAmE;gBACnE,qEAAqE;gBACrE,yDAAyD;gBACzD,EAAE;gBACF,wCAAwC;gBACxC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;YAC3B,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAChD,MAAM,CAAC,GACL,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAA;YAEnE,QAAQ,GAAG,IAAI,CAAA;YACf,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAA;SAChD;QAED,2DAA2D;QAC3D,cAAc,EAAE,CAAA;QAChB,IAAI,QAAQ,EAAE;YACZ,cAAc;YACd,EAAE,IAAI,MAAM,CAAA;SACb;QAED,2DAA2D;QAC3D,iDAAiD;QACjD,MAAM,eAAe,GAAG,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAExD,wDAAwD;QACxD,4DAA4D;QAC5D,yDAAyD;QACzD,0DAA0D;QAC1D,eAAe;QACf,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClD,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YAE3B,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAClD,IAAI,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;YAChC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;YAEzD,gEAAgE;YAChE,wEAAwE;YACxE,+BAA+B;YAC/B,MAAM,iBAAiB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAA;YACpD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,iBAAiB,CAAA;YACvE,IAAI,UAAU,GAAG,OAAO,CAAA;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,EAAE,CAAC,EAAE,EAAE;gBACzC,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;aAChD;YACD,OAAO,GAAG,UAAU,CAAA;YAEpB,MAAM,MAAM,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;YAEtE,EAAE,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;SACpD;QAED,+DAA+D;QAC/D,+CAA+C;QAC/C,oDAAoD;QACpD,IAAI,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE;YACzB,EAAE,GAAG,OAAO,GAAG,EAAE,CAAA;SAClB;QAED,IAAI,eAAe,EAAE;YACnB,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,CAAA;SACzB;QAED,4CAA4C;QAC5C,IAAI,KAAK,KAAK,QAAQ,EAAE;YACtB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;SACtB;QAED,kEAAkE;QAClE,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC3D,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAA;SAC3D;QAED,2CAA2C;QAC3C,oDAAoD;QACpD,qCAAqC;QACrC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA;SAC7B;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACvC,IAAI;YACF,MAAM,GAAG,GAAG,QAAQ;gBAClB,CAAC,CAAC;oBACE,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,EAAE;oBACR,IAAI,EAAE,QAAQ;iBACf;gBACH,CAAC,CAAC;oBACE,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,EAAE;iBACT,CAAA;YACL,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;YAC5D,qBAAqB;SACtB;QAAC,OAAO,EAAE,EAAE;YACX,uBAAuB;YACvB,+DAA+D;YAC/D,+DAA+D;YAC/D,kEAAkE;YAClE,iCAAiC;YACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;YAChC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;SACxB;QACD,oBAAoB;IACtB,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,MAAM,CAAA;QAE5D,mDAAmD;QACnD,4BAA4B;QAC5B,EAAE;QACF,wDAAwD;QACxD,yDAAyD;QACzD,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAEpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;YACnB,OAAO,IAAI,CAAC,MAAM,CAAA;SACnB;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,YAAY,CAAA;QAChB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAEvC,kCAAkC;QAClC,kDAAkD;QAClD,sEAAsE;QACtE,iDAAiD;QACjD,8DAA8D;QAC9D,mCAAmC;QACnC,IAAI,EAAE,GAAG,GAAG;aACT,GAAG,CAAC,OAAO,CAAC,EAAE;YACb,MAAM,EAAE,GAAiC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACvD,OAAO,CAAC,KAAK,QAAQ;gBACnB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;gBACjB,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAChB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,CAAC,CAAC,IAAI,CACqB,CAAA;YACjC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,IAAI,CAAC,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACvC,OAAM;iBACP;gBACD,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE;wBAC3C,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;qBACjD;yBAAM;wBACL,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;qBAChB;iBACF;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;oBAC7B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;iBAC9C;qBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;oBAC5B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;oBACzD,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAA;iBACrB;YACH,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,4BAA4B;QAC5B,gDAAgD;QAChD,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,IAAI,CAAA;QAEvB,gDAAgD;QAChD,IAAI,IAAI,CAAC,MAAM;YAAE,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;QAE1C,IAAI;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;YACnC,qBAAqB;SACtB;QAAC,OAAO,EAAE,EAAE;YACX,uBAAuB;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;SACpB;QACD,oBAAoB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,mDAAmD;QACnD,6DAA6D;QAC7D,8CAA8C;QAC9C,0CAA0C;QAC1C,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACpB;aAAM,IAAI,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC7C,sCAAsC;YACtC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;SAC/B;aAAM;YACL,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SACtB;IACH,CAAC;IAED,KAAK,CAAC,CAAS,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,8CAA8C;QAC9C,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,KAAK,CAAA;SACb;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,EAAE,CAAA;SAChB;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAE;YACxB,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,gCAAgC;QAChC,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,EAAE;YACpB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAChC;QAED,6CAA6C;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAErC,0DAA0D;QAC1D,2DAA2D;QAC3D,mCAAmC;QACnC,uCAAuC;QAEvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAEpC,0EAA0E;QAC1E,IAAI,QAAQ,GAAW,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpD,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;aACjB;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7C,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;aAClB;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,GAAG,EAAE;gBACP,IAAI,OAAO,CAAC,UAAU,EAAE;oBACtB,OAAO,IAAI,CAAA;iBACZ;gBACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;aACpB;SACF;QAED,2DAA2D;QAC3D,8BAA8B;QAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO,KAAK,CAAA;SACb;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAqB;QACnC,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAA;IAC1C,CAAC;CACF;AAED,SAAS,CAAC,SAAS,GAAG,SAAS,CAAA"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/parse.js b/deps/npm/node_modules/minimatch/dist/mjs/parse.js
    new file mode 100644
    index 00000000000000..70a26dee58f30b
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/parse.js
    @@ -0,0 +1,646 @@
    +// parse a single path portion
    +import { parseClass } from './brace-expressions';
    +const types = new Set(['!', '?', '+', '*', '@']);
    +const isExtglobType = (c) => types.has(c);
    +// characters that indicate a start of pattern needs the "no dots" bit
    +const addPatternStart = new Set(['[', '.']);
    +const justDots = new Set(['..', '.']);
    +const reSpecials = new Set('().*{}+?[]^$\\!');
    +const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
    +// any single thing other than /
    +// don't need to escape / when using new RegExp()
    +const qmark = '[^/]';
    +// * => any number of characters
    +const star = qmark + '*?';
    +export class AST {
    +    type;
    +    #root;
    +    #parts = [];
    +    #parent;
    +    #parentIndex;
    +    #negs;
    +    #filledNegs = false;
    +    #options;
    +    constructor(type, parent, options = {}) {
    +        this.type = type;
    +        this.#parent = parent;
    +        this.#root = this.#parent ? this.#parent.#root : this;
    +        this.#options = this.#root === this ? options : this.#root.#options;
    +        this.#negs = this.#root === this ? [] : this.#root.#negs;
    +        if (type === '!' && !this.#root.#filledNegs)
    +            this.#negs.push(this);
    +        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
    +    }
    +    fillNegs() {
    +        if (this !== this.#root) {
    +            this.#root.fillNegs();
    +            return this;
    +        }
    +        if (this.#filledNegs)
    +            return this;
    +        this.#filledNegs = true;
    +        let n;
    +        while ((n = this.#negs.pop())) {
    +            if (n.type !== '!')
    +                continue;
    +            // walk up the tree, appending everthing that comes AFTER parentIndex
    +            let p = n;
    +            let pp = p.#parent;
    +            while (pp) {
    +                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
    +                    for (const part of n.#parts) {
    +                        /* c8 ignore start */
    +                        if (typeof part === 'string') {
    +                            throw new Error('string part in extglob AST??');
    +                        }
    +                        /* c8 ignore stop */
    +                        part.copyIn(pp.#parts[i]);
    +                    }
    +                }
    +                p = pp;
    +                pp = p.#parent;
    +            }
    +        }
    +        return this;
    +    }
    +    push(...parts) {
    +        for (const p of parts) {
    +            if (p === '')
    +                continue;
    +            /* c8 ignore start */
    +            if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
    +                throw new Error('invalid part: ' + p);
    +            }
    +            /* c8 ignore stop */
    +            this.#parts.push(p);
    +        }
    +    }
    +    toJSON() {
    +        const ret = this.type === null ? this.#parts.slice() : [this.type, ...this.#parts];
    +        if (this.isStart() && !this.type)
    +            ret.unshift([]);
    +        if (this.isEnd() &&
    +            (this === this.#root ||
    +                (this.#root.#filledNegs && this.#parent?.type === '!'))) {
    +            ret.push({});
    +        }
    +        return ret;
    +    }
    +    isStart() {
    +        if (this.#root === this)
    +            return true;
    +        // if (this.type) return !!this.#parent?.isStart()
    +        if (!this.#parent?.isStart())
    +            return false;
    +        return this.#parentIndex === 0;
    +    }
    +    isEnd() {
    +        if (this.#root === this)
    +            return true;
    +        if (this.#parent?.type === '!')
    +            return true;
    +        if (!this.#parent?.isEnd())
    +            return false;
    +        if (!this.type)
    +            return this.#parent?.isEnd();
    +        return (this.#parentIndex === (this.#parent ? this.#parent.#parts.length : 0) - 1);
    +    }
    +    copyIn(part) {
    +        if (typeof part === 'string')
    +            this.push(part);
    +        else
    +            this.push(part.clone(this));
    +    }
    +    clone(parent) {
    +        const c = new AST(this.type, parent);
    +        for (const p of this.#parts) {
    +            c.copyIn(p);
    +        }
    +        return c;
    +    }
    +    static #parseAST(str, ast, pos, opt) {
    +        let escaping = false;
    +        if (ast.type === null) {
    +            // outside of a extglob, append until we find a start
    +            let i = pos;
    +            let acc = '';
    +            while (i < str.length) {
    +                const c = str.charAt(i++);
    +                // still accumulate escapes at this point, but we do ignore
    +                // starts that are escaped
    +                if (escaping || c === '\\') {
    +                    escaping = !escaping;
    +                    acc += c;
    +                    continue;
    +                }
    +                if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
    +                    ast.push(acc);
    +                    acc = '';
    +                    const ext = new AST(c, ast);
    +                    i = AST.#parseAST(str, ext, i, opt);
    +                    ast.push(ext);
    +                    continue;
    +                }
    +                acc += c;
    +            }
    +            ast.push(acc);
    +            return i;
    +        }
    +        // some kind of extglob, pos is at the (
    +        // find the next | or )
    +        let i = pos + 1;
    +        let part = new AST(null, ast);
    +        const parts = [];
    +        let acc = '';
    +        while (i < str.length) {
    +            const c = str.charAt(i++);
    +            // still accumulate escapes at this point, but we do ignore
    +            // starts that are escaped
    +            if (escaping || c === '\\') {
    +                escaping = !escaping;
    +                acc += c;
    +                continue;
    +            }
    +            if (isExtglobType(c) && str.charAt(i) === '(') {
    +                part.push(acc);
    +                acc = '';
    +                const ext = new AST(c, part);
    +                part.push(ext);
    +                i = AST.#parseAST(str, ext, i, opt);
    +                continue;
    +            }
    +            if (c === '|') {
    +                part.push(acc);
    +                acc = '';
    +                parts.push(part);
    +                part = new AST(null, ast);
    +                continue;
    +            }
    +            if (c === ')') {
    +                part.push(acc);
    +                acc = '';
    +                ast.push(...parts, part);
    +                return i;
    +            }
    +            acc += c;
    +        }
    +        // if we got here, it was a malformed extglob! not an extglob, but
    +        // maybe something else in there.
    +        ast.type = null;
    +        ast.#parts = [str.substring(pos)];
    +        return i;
    +    }
    +    static fromGlob(pattern, options = {}) {
    +        const ast = new AST(null, undefined, options);
    +        AST.#parseAST(pattern, ast, 0, options);
    +        console.log('parsed', pattern, JSON.stringify(ast));
    +        return ast;
    +    }
    +    toRegExpSource() {
    +        if (this.#root === this)
    +            this.fillNegs();
    +        if (!this.type) {
    +            const src = this.#parts
    +                .map(p => {
    +                if (typeof p === 'string')
    +                    return AST.#parseGlob(p, this.#options);
    +                else
    +                    return p.toRegExpSource();
    +            })
    +                .join('');
    +            let start = '';
    +            if (this.isStart() && typeof this.#parts[0] === 'string') {
    +                // '.' and '..' cannot match unless the pattern is that exactly
    +                const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
    +                if (dotTravAllowed) {
    +                    start = '(?:^|\\/)';
    +                }
    +                else {
    +                    const dotsAllowed = this.#options.dot ||
    +                        // no need to prevent dots if it can't match a dot, or if a sub-pattern
    +                        // will be preventing it anyway.
    +                        !addPatternStart.has(src.charAt(0));
    +                    start = dotsAllowed ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))' : '(?!\\.)';
    +                }
    +            }
    +            let end = '';
    +            if (this.isEnd() &&
    +                (this === this.#root ||
    +                    (this.#root.#filledNegs && this.#parent?.type === '!'))) {
    +                end = '(?:$|\\/)';
    +            }
    +            return start + src + end;
    +        }
    +        // some kind of extglob
    +        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';
    +        const body = this.#parts
    +            .map(p => {
    +            /* c8 ignore start */
    +            if (typeof p === 'string') {
    +                throw new Error('string type in extglob ast??');
    +            }
    +            /* c8 ignore stop */
    +            return p.toRegExpSource();
    +        })
    +            .join('|');
    +        const close = this.type === '!'
    +            ? '))[^/]*?)'
    +            : this.type === '@'
    +                ? ')'
    +                : `)${this.type}`;
    +        return start + body + close;
    +    }
    +    static #parseGlob(glob, options) {
    +        let escaping = false;
    +        let re = '';
    +        let uflag = false;
    +        let hasMagic = false;
    +        for (let i = 0; i < glob.length; i++) {
    +            const c = glob.charAt(i);
    +            if (escaping) {
    +                escaping = false;
    +                re += (reSpecials.has(c) ? '\\' : '') + c;
    +                continue;
    +            }
    +            if (c === '\\') {
    +                if (i === glob.length - 1) {
    +                    re += '\\\\';
    +                }
    +                else {
    +                    escaping = true;
    +                }
    +                continue;
    +            }
    +            if (c === '[') {
    +                const [src, needUflag, consumed, magic] = parseClass(glob, i);
    +                if (consumed) {
    +                    re += src;
    +                    uflag = uflag || needUflag;
    +                    i += consumed - 1;
    +                    hasMagic = hasMagic || magic;
    +                    continue;
    +                }
    +            }
    +            if (c === '*') {
    +                re += star;
    +                hasMagic = true;
    +                continue;
    +            }
    +            if (c === '?') {
    +                re += qmark;
    +                hasMagic = true;
    +                continue;
    +            }
    +            re += regExpEscape(c);
    +        }
    +        return re;
    +    }
    +}
    +const pattern = 'a@(i|w!(x|y)z+(l|m)|j)';
    +const ast = AST.fromGlob(pattern).fillNegs();
    +console.log('negged', pattern, JSON.stringify(ast));
    +console.log('to re src', pattern, ast.toRegExpSource());
    +// // the type (exttype or null for strings), and array of children tokens
    +//
    +// // append everything after a negative extglob to each of the parts
    +// // of the negative extglob node.  So, eg, [a, [!, x, y], z]
    +//
    +// //
    +// //
    +// //
    +// //
    +//
    +// const globUnescape = (s: string) => s.replace(/\\(.)/g, '$1')
    +// const regExpEscape = (s: string) =>
    +//   s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
    +//
    +// // "abc" -> { a:true, b:true, c:true }
    +// const charSet = (s: string) =>
    +//   s.split('').reduce((set: { [k: string]: boolean }, c) => {
    +//     set[c] = true
    +//     return set
    +//   }, {})
    +//
    +// // characters that need to be escaped in RegExp.
    +// const reSpecials = charSet('().*{}+?[]^$\\!')
    +//
    +// // characters that indicate we have to add the pattern start
    +// const addPatternStartSet = charSet('[.(')
    +//
    +// // any single thing other than /
    +// // don't need to escape / when using new RegExp()
    +// const qmark = '[^/]'
    +//
    +// // * => any number of characters
    +// const star = qmark + '*?'
    +//
    +// // TODO: take an offset and length, so we can sub-parse the extglobs
    +// const parse = (
    +//   options: MinimatchOptions,
    +//   pattern: string,
    +//   debug: (...a: any[]) => void
    +// ): false | string => {
    +//   assertValidPattern(pattern)
    +//
    +//   if (pattern === '') return ''
    +//
    +//   let re = ''
    +//   let hasMagic = false
    +//   let escaping = false
    +//   // ? => one single character
    +//   let uflag = false
    +//
    +//   // . and .. never match anything that doesn't start with .,
    +//   // even when options.dot is set.  However, if the pattern
    +//   // starts with ., then traversal patterns can match.
    +//   let dotTravAllowed = pattern.charAt(0) === '.'
    +//   let dotFileAllowed = options.dot || dotTravAllowed
    +//   const patternStart = () =>
    +//     dotTravAllowed
    +//       ? ''
    +//       : dotFileAllowed
    +//       ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))'
    +//       : '(?!\\.)'
    +//   const subPatternStart = (p: string) =>
    +//     p.charAt(0) === '.'
    +//       ? ''
    +//       : options.dot
    +//       ? '(?!(?:^|\\/)\\.{1,2}(?:$|\\/))'
    +//       : '(?!\\.)'
    +//
    +//   const clearStateChar = () => {
    +//     if (stateChar) {
    +//       // we had some state-tracking character
    +//       // that wasn't consumed by this pass.
    +//       switch (stateChar) {
    +//         case '*':
    +//           re += star
    +//           hasMagic = true
    +//           break
    +//         case '?':
    +//           re += qmark
    +//           hasMagic = true
    +//           break
    +//         default:
    +//           re += '\\' + stateChar
    +//           break
    +//       }
    +//       debug('clearStateChar %j %j', stateChar, re)
    +//       stateChar = false
    +//     }
    +//   }
    +//
    +//   for (
    +//     let i = 0, c: string;
    +//     i < pattern.length && (c = pattern.charAt(i));
    +//     i++
    +//   ) {
    +//     debug('%s\t%s %s %j', pattern, i, re, c)
    +//
    +//     // skip over any that are escaped.
    +//     if (escaping) {
    +//       // completely not allowed, even escaped.
    +//       // should be impossible.
    +//       /* c8 ignore start */
    +//       if (c === '/') {
    +//         return false
    +//       }
    +//       /* c8 ignore stop */
    +//
    +//       if (reSpecials[c]) {
    +//         re += '\\'
    +//       }
    +//       re += c
    +//       escaping = false
    +//       continue
    +//     }
    +//
    +//     switch (c) {
    +//       // Should already be path-split by now.
    +//       /* c8 ignore start */
    +//       case '/': {
    +//         return false
    +//       }
    +//       /* c8 ignore stop */
    +//
    +//       case '\\':
    +//         clearStateChar()
    +//         escaping = true
    +//         continue
    +//
    +//       // the various stateChar values
    +//       // for the "extglob" stuff.
    +//       case '?':
    +//       case '*':
    +//       case '+':
    +//       case '@':
    +//       case '!':
    +//         debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
    +//
    +//         // if we already have a stateChar, then it means
    +//         // that there was something like ** or +? in there.
    +//         // Handle the stateChar, then proceed with this one.
    +//         debug('call clearStateChar %j', stateChar)
    +//         clearStateChar()
    +//         stateChar = c
    +//         // if extglob is disabled, then +(asdf|foo) isn't a thing.
    +//         // just clear the statechar *now*, rather than even diving into
    +//         // the patternList stuff.
    +//         if (options.noext) clearStateChar()
    +//         continue
    +//
    +//       case '(': {
    +//         if (!stateChar) {
    +//           re += '\\('
    +//           continue
    +//         }
    +//
    +//         const plEntry: PatternListEntry = {
    +//           type: stateChar,
    +//           start: i - 1,
    +//           reStart: re.length,
    +//           open: plTypes[stateChar].open,
    +//           close: plTypes[stateChar].close,
    +//         }
    +//         debug(pattern, '\t', plEntry)
    +//         patternListStack.push(plEntry)
    +//         // negation is (?:(?!(?:js)(?:))[^/]*)
    +//         re += plEntry.open
    +//         // next entry starts with a dot maybe?
    +//         if (plEntry.start === 0 && plEntry.type !== '!') {
    +//           dotTravAllowed = true
    +//           re += subPatternStart(pattern.slice(i + 1))
    +//         }
    +//         debug('plType %j %j', stateChar, re)
    +//         stateChar = false
    +//         continue
    +//       }
    +//
    +//       case ')': {
    +//         const plEntry = patternListStack[patternListStack.length - 1]
    +//         if (!plEntry) {
    +//           re += '\\)'
    +//           continue
    +//         }
    +//         patternListStack.pop()
    +//
    +//         // closing an extglob
    +//         clearStateChar()
    +//         hasMagic = true
    +//         pl = plEntry
    +//         // negation is (?:(?!js)[^/]*)
    +//         // The others are (?:)
    +//         re += pl.close
    +//         if (pl.type === '!') {
    +//           negativeLists.push(Object.assign(pl, { reEnd: re.length }))
    +//         }
    +//         continue
    +//       }
    +//
    +//       case '|': {
    +//         const plEntry = patternListStack[patternListStack.length - 1]
    +//         if (!plEntry) {
    +//           re += '\\|'
    +//           continue
    +//         }
    +//
    +//         clearStateChar()
    +//         re += '|'
    +//         // next subpattern can start with a dot?
    +//         if (plEntry.start === 0 && plEntry.type !== '!') {
    +//           dotTravAllowed = true
    +//           re += subPatternStart(pattern.slice(i + 1))
    +//         }
    +//         continue
    +//       }
    +//
    +//       // these are mostly the same in regexp and glob
    +//       case '[':
    +//         // swallow any state-tracking char before the [
    +//         clearStateChar()
    +//         const [src, needUflag, consumed, magic] = parseClass(pattern, i)
    +//         if (consumed) {
    +//           re += src
    +//           uflag = uflag || needUflag
    +//           i += consumed - 1
    +//           hasMagic = hasMagic || magic
    +//         } else {
    +//           re += '\\['
    +//         }
    +//         continue
    +//
    +//       case ']':
    +//         re += '\\' + c
    +//         continue
    +//
    +//       default:
    +//         // swallow any state char that wasn't consumed
    +//         clearStateChar()
    +//
    +//         re += regExpEscape(c)
    +//         break
    +//     } // switch
    +//   } // for
    +//
    +//   // handle the case where we had a +( thing at the *end*
    +//   // of the pattern.
    +//   // each pattern list stack adds 3 chars, and we need to go through
    +//   // and escape any | chars that were passed through as-is for the regexp.
    +//   // Go through and escape them, taking care not to double-escape any
    +//   // | chars that were already escaped.
    +//   for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
    +//     let tail: string
    +//     tail = re.slice(pl.reStart + pl.open.length)
    +//     debug(pattern, 'setting tail', re, pl)
    +//     // maybe some even number of \, then maybe 1 \, followed by a |
    +//     tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, (_, $1, $2) => {
    +//       if (!$2) {
    +//         // the | isn't already escaped, so escape it.
    +//         $2 = '\\'
    +//         // should already be done
    +//         /* c8 ignore start */
    +//       }
    +//       /* c8 ignore stop */
    +//
    +//       // need to escape all those slashes *again*, without escaping the
    +//       // one that we need for escaping the | character.  As it works out,
    +//       // escaping an even number of slashes can be done by simply repeating
    +//       // it exactly after itself.  That's why this trick works.
    +//       //
    +//       // I am sorry that you have to see this.
    +//       return $1 + $1 + $2 + '|'
    +//     })
    +//
    +//     debug('tail=%j\n   %s', tail, tail, pl, re)
    +//     const t = pl.type === '*' ? star : pl.type === '?' ? qmark : '\\' + pl.type
    +//
    +//     hasMagic = true
    +//     re = re.slice(0, pl.reStart) + t + '\\(' + tail
    +//   }
    +//
    +//   // handle trailing things that only matter at the very end.
    +//   clearStateChar()
    +//   if (escaping) {
    +//     // trailing \\
    +//     re += '\\\\'
    +//   }
    +//
    +//   // only need to apply the nodot start if the re starts with
    +//   // something that could conceivably capture a dot
    +//   const addPatternStart = addPatternStartSet[re.charAt(0)]
    +//
    +//   // Hack to work around lack of negative lookbehind in JS
    +//   // A pattern like: *.!(x).!(y|z) needs to ensure that a name
    +//   // like 'a.xyz.yz' doesn't match.  So, the first negative
    +//   // lookahead, has to look ALL the way ahead, to the end of
    +//   // the pattern.
    +//   for (let n = negativeLists.length - 1; n > -1; n--) {
    +//     const nl = negativeLists[n]
    +//
    +//     const nlBefore = re.slice(0, nl.reStart)
    +//     const nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
    +//     let nlAfter = re.slice(nl.reEnd)
    +//     const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter
    +//
    +//     // Handle nested stuff like *(*.js|!(*.json)), where open parens
    +//     // mean that we should *not* include the ) in the bit that is considered
    +//     // "after" the negated section.
    +//     const closeParensBefore = nlBefore.split(')').length
    +//     const openParensBefore = nlBefore.split('(').length - closeParensBefore
    +//     let cleanAfter = nlAfter
    +//     for (let i = 0; i < openParensBefore; i++) {
    +//       cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
    +//     }
    +//     nlAfter = cleanAfter
    +//
    +//     const dollar = nlAfter === '' ? '(?:$|\\/)' : ''
    +//
    +//     re = nlBefore + nlFirst + nlAfter + dollar + nlLast
    +//   }
    +//
    +//   // if the re is not "" at this point, then we need to make sure
    +//   // it doesn't match against an empty path part.
    +//   // Otherwise a/* will match a/, which it should not.
    +//   if (re !== '' && hasMagic) {
    +//     re = '(?=.)' + re
    +//   }
    +//
    +//   if (addPatternStart) {
    +//     re = patternStart() + re
    +//   }
    +//
    +//   // if it's nocase, and the lcase/uppercase don't match, it's magic
    +//   if (options.nocase && !hasMagic && !options.nocaseMagicOnly) {
    +//     hasMagic = pattern.toUpperCase() !== pattern.toLowerCase()
    +//   }
    +//
    +//   // skip the regexp for non-magical patterns
    +//   // unescape anything in it, though, so that it'll be
    +//   // an exact match against a file etc.
    +//   if (!hasMagic) {
    +//     return globUnescape(re)
    +//   }
    +//
    +//   return re
    +// }
    +//# sourceMappingURL=parse.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/dist/mjs/unescape.js b/deps/npm/node_modules/minimatch/dist/mjs/unescape.js
    new file mode 100644
    index 00000000000000..0faf9a2b7306f7
    --- /dev/null
    +++ b/deps/npm/node_modules/minimatch/dist/mjs/unescape.js
    @@ -0,0 +1,20 @@
    +/**
    + * Un-escape a string that has been escaped with {@link escape}.
    + *
    + * If the {@link windowsPathsNoEscape} option is used, then square-brace
    + * escapes are removed, but not backslash escapes.  For example, it will turn
    + * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
    + * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
    + *
    + * When `windowsPathsNoEscape` is not set, then both brace escapes and
    + * backslash escapes are removed.
    + *
    + * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
    + * or unescaped.
    + */
    +export const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
    +    return windowsPathsNoEscape
    +        ? s.replace(/\[([^\/\\])\]/g, '$1')
    +        : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
    +};
    +//# sourceMappingURL=unescape.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/minimatch/package.json b/deps/npm/node_modules/minimatch/package.json
    index 58f289adf75e76..95364b15482463 100644
    --- a/deps/npm/node_modules/minimatch/package.json
    +++ b/deps/npm/node_modules/minimatch/package.json
    @@ -2,7 +2,7 @@
       "author": "Isaac Z. Schlueter  (http://blog.izs.me)",
       "name": "minimatch",
       "description": "a glob matcher in javascript",
    -  "version": "6.2.0",
    +  "version": "7.4.3",
       "repository": {
         "type": "git",
         "url": "git://github.com/isaacs/minimatch.git"
    @@ -17,7 +17,7 @@
             "default": "./dist/mjs/index.js"
           },
           "require": {
    -        "types": "./dist/cjs/index-cjs.d.ts",
    +        "types": "./dist/cjs/index.d.ts",
             "default": "./dist/cjs/index-cjs.js"
           }
         }
    diff --git a/deps/npm/node_modules/minipass-collect/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass-collect/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/minipass-collect/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/minipass-flush/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass-flush/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/minipass-flush/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/minipass-json-stream/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass-json-stream/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/minipass-json-stream/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/minipass-pipeline/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass-pipeline/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/minipass-pipeline/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/minipass-sized/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass-sized/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/minipass-sized/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 539fbca5706aed..00000000000000
    --- a/deps/npm/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,150 +0,0 @@
    -/// 
    -
    -// Note: marking anything protected or private in the exported
    -// class will limit Minipass's ability to be used as the base
    -// for mixin classes.
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface SharedOptions {
    -    async?: boolean
    -    signal?: AbortSignal
    -  }
    -
    -  interface StringOptions extends SharedOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -  }
    -
    -  interface BufferOptions extends SharedOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -  }
    -
    -  interface ObjectModeOptions extends SharedOptions {
    -    objectMode: true
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly aborted: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Generator
    -  [Symbol.asyncIterator](): AsyncGenerator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/minipass/index.js b/deps/npm/node_modules/minipass/index.js
    index 97b23068c95276..5e192c2824586c 100644
    --- a/deps/npm/node_modules/minipass/index.js
    +++ b/deps/npm/node_modules/minipass/index.js
    @@ -593,18 +593,21 @@ class Minipass extends Stream {
           const onerr = er => {
             this.removeListener('data', ondata)
             this.removeListener('end', onend)
    +        this.removeListener(DESTROYED, ondestroy)
             stop()
             reject(er)
           }
           const ondata = value => {
             this.removeListener('error', onerr)
             this.removeListener('end', onend)
    +        this.removeListener(DESTROYED, ondestroy)
             this.pause()
             resolve({ value: value, done: !!this[EOF] })
           }
           const onend = () => {
             this.removeListener('error', onerr)
             this.removeListener('data', ondata)
    +        this.removeListener(DESTROYED, ondestroy)
             stop()
             resolve({ done: true })
           }
    @@ -635,6 +638,7 @@ class Minipass extends Stream {
         const stop = () => {
           this.pause()
           this.removeListener(ERROR, stop)
    +      this.removeListener(DESTROYED, stop)
           this.removeListener('end', stop)
           stopped = true
           return { done: true }
    @@ -647,6 +651,7 @@ class Minipass extends Stream {
         }
         this.once('end', stop)
         this.once(ERROR, stop)
    +    this.once(DESTROYED, stop)
     
         return {
           next,
    diff --git a/deps/npm/node_modules/minipass/index.mjs b/deps/npm/node_modules/minipass/index.mjs
    index a6694036642b56..d5c58fc9814c00 100644
    --- a/deps/npm/node_modules/minipass/index.mjs
    +++ b/deps/npm/node_modules/minipass/index.mjs
    @@ -593,18 +593,21 @@ class Minipass extends Stream {
           const onerr = er => {
             this.removeListener('data', ondata)
             this.removeListener('end', onend)
    +        this.removeListener(DESTROYED, ondestroy)
             stop()
             reject(er)
           }
           const ondata = value => {
             this.removeListener('error', onerr)
             this.removeListener('end', onend)
    +        this.removeListener(DESTROYED, ondestroy)
             this.pause()
             resolve({ value: value, done: !!this[EOF] })
           }
           const onend = () => {
             this.removeListener('error', onerr)
             this.removeListener('data', ondata)
    +        this.removeListener(DESTROYED, ondestroy)
             stop()
             resolve({ done: true })
           }
    @@ -635,6 +638,7 @@ class Minipass extends Stream {
         const stop = () => {
           this.pause()
           this.removeListener(ERROR, stop)
    +      this.removeListener(DESTROYED, stop)
           this.removeListener('end', stop)
           stopped = true
           return { done: true }
    @@ -647,6 +651,7 @@ class Minipass extends Stream {
         }
         this.once('end', stop)
         this.once(ERROR, stop)
    +    this.once(DESTROYED, stop)
     
         return {
           next,
    diff --git a/deps/npm/node_modules/minipass/package.json b/deps/npm/node_modules/minipass/package.json
    index 4a6246df54aa4f..1286b88ed5d8fc 100644
    --- a/deps/npm/node_modules/minipass/package.json
    +++ b/deps/npm/node_modules/minipass/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "minipass",
    -  "version": "4.2.4",
    +  "version": "4.2.5",
       "description": "minimal implementation of a PassThrough stream",
       "main": "./index.js",
       "module": "./index.mjs",
    diff --git a/deps/npm/node_modules/minizlib/node_modules/minipass/index.d.ts b/deps/npm/node_modules/minizlib/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/minizlib/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/minipass/index.d.ts b/deps/npm/node_modules/node-gyp/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/node-gyp/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js
    index c51c67d4144564..19abfa604d5ef7 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_duplex.js
    @@ -35,14 +35,14 @@ var objectKeys = Object.keys || function (obj) {
     /**/
     
     module.exports = Duplex;
    -const Readable = require('./_stream_readable');
    -const Writable = require('./_stream_writable');
    +var Readable = require('./_stream_readable');
    +var Writable = require('./_stream_writable');
     require('inherits')(Duplex, Readable);
     {
       // Allow the keys array to be GC'ed.
    -  const keys = objectKeys(Writable.prototype);
    +  var keys = objectKeys(Writable.prototype);
       for (var v = 0; v < keys.length; v++) {
    -    const method = keys[v];
    +    var method = keys[v];
         if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
       }
     }
    @@ -65,7 +65,7 @@ Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
       // because otherwise some prototype manipulation in
       // userland will fail
       enumerable: false,
    -  get() {
    +  get: function get() {
         return this._writableState.highWaterMark;
       }
     });
    @@ -83,7 +83,7 @@ Object.defineProperty(Duplex.prototype, 'writableLength', {
       // because otherwise some prototype manipulation in
       // userland will fail
       enumerable: false,
    -  get() {
    +  get: function get() {
         return this._writableState.length;
       }
     });
    @@ -105,13 +105,13 @@ Object.defineProperty(Duplex.prototype, 'destroyed', {
       // because otherwise some prototype manipulation in
       // userland will fail
       enumerable: false,
    -  get() {
    +  get: function get() {
         if (this._readableState === undefined || this._writableState === undefined) {
           return false;
         }
         return this._readableState.destroyed && this._writableState.destroyed;
       },
    -  set(value) {
    +  set: function set(value) {
         // we ignore the value if the stream
         // has not been initialized yet
         if (this._readableState === undefined || this._writableState === undefined) {
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js
    index 38a1eaac807947..24a6bdde2903fa 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_passthrough.js
    @@ -26,7 +26,7 @@
     'use strict';
     
     module.exports = PassThrough;
    -const Transform = require('./_stream_transform');
    +var Transform = require('./_stream_transform');
     require('inherits')(PassThrough, Transform);
     function PassThrough(options) {
       if (!(this instanceof PassThrough)) return new PassThrough(options);
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js
    index 8e3af6c9edeced..df1f608d532606 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_readable.js
    @@ -30,7 +30,7 @@ var Duplex;
     Readable.ReadableState = ReadableState;
     
     /**/
    -const EE = require('events').EventEmitter;
    +var EE = require('events').EventEmitter;
     var EElistenerCount = function EElistenerCount(emitter, type) {
       return emitter.listeners(type).length;
     };
    @@ -40,8 +40,8 @@ var EElistenerCount = function EElistenerCount(emitter, type) {
     var Stream = require('./internal/streams/stream');
     /**/
     
    -const Buffer = require('buffer').Buffer;
    -const OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
    +var Buffer = require('buffer').Buffer;
    +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
     function _uint8ArrayToBuffer(chunk) {
       return Buffer.from(chunk);
     }
    @@ -50,8 +50,8 @@ function _isUint8Array(obj) {
     }
     
     /**/
    -const debugUtil = require('util');
    -let debug;
    +var debugUtil = require('util');
    +var debug;
     if (debugUtil && debugUtil.debuglog) {
       debug = debugUtil.debuglog('stream');
     } else {
    @@ -59,23 +59,23 @@ if (debugUtil && debugUtil.debuglog) {
     }
     /**/
     
    -const BufferList = require('./internal/streams/buffer_list');
    -const destroyImpl = require('./internal/streams/destroy');
    -const _require = require('./internal/streams/state'),
    +var BufferList = require('./internal/streams/buffer_list');
    +var destroyImpl = require('./internal/streams/destroy');
    +var _require = require('./internal/streams/state'),
       getHighWaterMark = _require.getHighWaterMark;
    -const _require$codes = require('../errors').codes,
    +var _require$codes = require('../errors').codes,
       ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
       ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,
       ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
       ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;
     
     // Lazy loaded to improve the startup performance.
    -let StringDecoder;
    -let createReadableStreamAsyncIterator;
    -let from;
    +var StringDecoder;
    +var createReadableStreamAsyncIterator;
    +var from;
     require('inherits')(Readable, Stream);
    -const errorOrDestroy = destroyImpl.errorOrDestroy;
    -const kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
    +var errorOrDestroy = destroyImpl.errorOrDestroy;
    +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];
     function prependListener(emitter, event, fn) {
       // Sadly this is not cacheable as some libraries bundle their own
       // event emitter implementation with them.
    @@ -166,7 +166,7 @@ function Readable(options) {
     
       // Checking for a Stream.Duplex instance is faster here instead of inside
       // the ReadableState constructor, at least with V8 6.5
    -  const isDuplex = this instanceof Duplex;
    +  var isDuplex = this instanceof Duplex;
       this._readableState = new ReadableState(options, this, isDuplex);
     
       // legacy
    @@ -182,13 +182,13 @@ Object.defineProperty(Readable.prototype, 'destroyed', {
       // because otherwise some prototype manipulation in
       // userland will fail
       enumerable: false,
    -  get() {
    +  get: function get() {
         if (this._readableState === undefined) {
           return false;
         }
         return this._readableState.destroyed;
       },
    -  set(value) {
    +  set: function set(value) {
         // we ignore the value if the stream
         // has not been initialized yet
         if (!this._readableState) {
    @@ -299,14 +299,14 @@ Readable.prototype.isPaused = function () {
     // backwards compatibility.
     Readable.prototype.setEncoding = function (enc) {
       if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
    -  const decoder = new StringDecoder(enc);
    +  var decoder = new StringDecoder(enc);
       this._readableState.decoder = decoder;
       // If setEncoding(null), decoder.encoding equals utf8
       this._readableState.encoding = this._readableState.decoder.encoding;
     
       // Iterate over current buffer to convert already stored Buffers:
    -  let p = this._readableState.buffer.head;
    -  let content = '';
    +  var p = this._readableState.buffer.head;
    +  var content = '';
       while (p !== null) {
         content += decoder.write(p.data);
         p = p.next;
    @@ -318,7 +318,7 @@ Readable.prototype.setEncoding = function (enc) {
     };
     
     // Don't raise the hwm > 1GB
    -const MAX_HWM = 0x40000000;
    +var MAX_HWM = 0x40000000;
     function computeNewHighWaterMark(n) {
       if (n >= MAX_HWM) {
         // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.
    @@ -545,7 +545,7 @@ function maybeReadMore_(stream, state) {
       //   read()s. The execution ends in this method again after the _read() ends
       //   up calling push() with more data.
       while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {
    -    const len = state.length;
    +    var len = state.length;
         debug('maybeReadMore read 0');
         stream.read(0);
         if (len === state.length)
    @@ -742,8 +742,8 @@ Readable.prototype.unpipe = function (dest) {
     // set up data events if they are asked for
     // Ensure readable listeners eventually get something
     Readable.prototype.on = function (ev, fn) {
    -  const res = Stream.prototype.on.call(this, ev, fn);
    -  const state = this._readableState;
    +  var res = Stream.prototype.on.call(this, ev, fn);
    +  var state = this._readableState;
       if (ev === 'data') {
         // update readableListening so that resume() may be a no-op
         // a few lines down. This is needed to support once('readable').
    @@ -768,7 +768,7 @@ Readable.prototype.on = function (ev, fn) {
     };
     Readable.prototype.addListener = Readable.prototype.on;
     Readable.prototype.removeListener = function (ev, fn) {
    -  const res = Stream.prototype.removeListener.call(this, ev, fn);
    +  var res = Stream.prototype.removeListener.call(this, ev, fn);
       if (ev === 'readable') {
         // We need to check if there is someone still listening to
         // readable and reset the state. However this needs to happen
    @@ -781,7 +781,7 @@ Readable.prototype.removeListener = function (ev, fn) {
       return res;
     };
     Readable.prototype.removeAllListeners = function (ev) {
    -  const res = Stream.prototype.removeAllListeners.apply(this, arguments);
    +  var res = Stream.prototype.removeAllListeners.apply(this, arguments);
       if (ev === 'readable' || ev === undefined) {
         // We need to check if there is someone still listening to
         // readable and reset the state. However this needs to happen
    @@ -794,7 +794,7 @@ Readable.prototype.removeAllListeners = function (ev) {
       return res;
     };
     function updateReadableListening(self) {
    -  const state = self._readableState;
    +  var state = self._readableState;
       state.readableListening = self.listenerCount('readable') > 0;
       if (state.resumeScheduled && !state.paused) {
         // flowing needs to be set to true now, otherwise
    @@ -853,7 +853,7 @@ Readable.prototype.pause = function () {
       return this;
     };
     function flow(stream) {
    -  const state = stream._readableState;
    +  var state = stream._readableState;
       debug('flow', state.flowing);
       while (state.flowing && stream.read() !== null);
     }
    @@ -862,23 +862,24 @@ function flow(stream) {
     // This is *not* part of the readable stream interface.
     // It is an ugly unfortunate mess of history.
     Readable.prototype.wrap = function (stream) {
    +  var _this = this;
       var state = this._readableState;
       var paused = false;
    -  stream.on('end', () => {
    +  stream.on('end', function () {
         debug('wrapped end');
         if (state.decoder && !state.ended) {
           var chunk = state.decoder.end();
    -      if (chunk && chunk.length) this.push(chunk);
    +      if (chunk && chunk.length) _this.push(chunk);
         }
    -    this.push(null);
    +    _this.push(null);
       });
    -  stream.on('data', chunk => {
    +  stream.on('data', function (chunk) {
         debug('wrapped data');
         if (state.decoder) chunk = state.decoder.write(chunk);
     
         // don't skip over falsy values in objectMode
         if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
    -    var ret = this.push(chunk);
    +    var ret = _this.push(chunk);
         if (!ret) {
           paused = true;
           stream.pause();
    @@ -904,7 +905,7 @@ Readable.prototype.wrap = function (stream) {
     
       // when we try to consume some more bytes, simply unpause the
       // underlying stream.
    -  this._read = n => {
    +  this._read = function (n) {
         debug('wrapped _read', n);
         if (paused) {
           paused = false;
    @@ -961,7 +962,7 @@ Object.defineProperty(Readable.prototype, 'readableLength', {
       // because otherwise some prototype manipulation in
       // userland will fail
       enumerable: false,
    -  get() {
    +  get: function get() {
         return this._readableState.length;
       }
     });
    @@ -1003,7 +1004,7 @@ function endReadableNT(state, stream) {
         if (state.autoDestroy) {
           // In case of duplex streams we need a way to detect
           // if the writable side is ready for autoDestroy as well
    -      const wState = stream._writableState;
    +      var wState = stream._writableState;
           if (!wState || wState.autoDestroy && wState.finished) {
             stream.destroy();
           }
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js
    index a2fcca2193cf10..1ccb7157be8b8c 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_transform.js
    @@ -64,12 +64,12 @@
     'use strict';
     
     module.exports = Transform;
    -const _require$codes = require('../errors').codes,
    +var _require$codes = require('../errors').codes,
       ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
       ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
       ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,
       ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;
    -const Duplex = require('./_stream_duplex');
    +var Duplex = require('./_stream_duplex');
     require('inherits')(Transform, Duplex);
     function afterTransform(er, data) {
       var ts = this._transformState;
    @@ -118,9 +118,10 @@ function Transform(options) {
       this.on('prefinish', prefinish);
     }
     function prefinish() {
    +  var _this = this;
       if (typeof this._flush === 'function' && !this._readableState.destroyed) {
    -    this._flush((er, data) => {
    -      done(this, er, data);
    +    this._flush(function (er, data) {
    +      done(_this, er, data);
         });
       } else {
         done(this, null, null);
    @@ -170,7 +171,7 @@ Transform.prototype._read = function (n) {
       }
     };
     Transform.prototype._destroy = function (err, cb) {
    -  Duplex.prototype._destroy.call(this, err, err2 => {
    +  Duplex.prototype._destroy.call(this, err, function (err2) {
         cb(err2);
       });
     };
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js
    index feece02279db67..292415e23a192b 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/_stream_writable.js
    @@ -38,10 +38,11 @@ function WriteReq(chunk, encoding, cb) {
     // It seems a linked list but it is not
     // there will be only 2 of these for each stream
     function CorkedRequest(state) {
    +  var _this = this;
       this.next = null;
       this.entry = null;
    -  this.finish = () => {
    -    onCorkedFinish(this, state);
    +  this.finish = function () {
    +    onCorkedFinish(_this, state);
       };
     }
     /*  */
    @@ -53,7 +54,7 @@ var Duplex;
     Writable.WritableState = WritableState;
     
     /**/
    -const internalUtil = {
    +var internalUtil = {
       deprecate: require('util-deprecate')
     };
     /**/
    @@ -62,18 +63,18 @@ const internalUtil = {
     var Stream = require('./internal/streams/stream');
     /**/
     
    -const Buffer = require('buffer').Buffer;
    -const OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
    +var Buffer = require('buffer').Buffer;
    +var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
     function _uint8ArrayToBuffer(chunk) {
       return Buffer.from(chunk);
     }
     function _isUint8Array(obj) {
       return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
     }
    -const destroyImpl = require('./internal/streams/destroy');
    -const _require = require('./internal/streams/state'),
    +var destroyImpl = require('./internal/streams/destroy');
    +var _require = require('./internal/streams/state'),
       getHighWaterMark = _require.getHighWaterMark;
    -const _require$codes = require('../errors').codes,
    +var _require$codes = require('../errors').codes,
       ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,
       ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,
       ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,
    @@ -82,7 +83,7 @@ const _require$codes = require('../errors').codes,
       ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,
       ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,
       ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;
    -const errorOrDestroy = destroyImpl.errorOrDestroy;
    +var errorOrDestroy = destroyImpl.errorOrDestroy;
     require('inherits')(Writable, Stream);
     function nop() {}
     function WritableState(options, stream, isDuplex) {
    @@ -240,7 +241,7 @@ function Writable(options) {
     
       // Checking for a Stream.Duplex instance is faster here instead of inside
       // the WritableState constructor, at least with V8 6.5
    -  const isDuplex = this instanceof Duplex;
    +  var isDuplex = this instanceof Duplex;
       if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);
       this._writableState = new WritableState(options, this, isDuplex);
     
    @@ -364,9 +365,9 @@ function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
       if (state.writing || state.corked) {
         var last = state.lastBufferedRequest;
         state.lastBufferedRequest = {
    -      chunk,
    -      encoding,
    -      isBuf,
    +      chunk: chunk,
    +      encoding: encoding,
    +      isBuf: isBuf,
           callback: cb,
           next: null
         };
    @@ -539,7 +540,7 @@ Object.defineProperty(Writable.prototype, 'writableLength', {
       // because otherwise some prototype manipulation in
       // userland will fail
       enumerable: false,
    -  get() {
    +  get: function get() {
         return this._writableState.length;
       }
     });
    @@ -547,7 +548,7 @@ function needFinish(state) {
       return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
     }
     function callFinal(stream, state) {
    -  stream._final(err => {
    +  stream._final(function (err) {
         state.pendingcb--;
         if (err) {
           errorOrDestroy(stream, err);
    @@ -579,7 +580,7 @@ function finishMaybe(stream, state) {
           if (state.autoDestroy) {
             // In case of duplex streams we need a way to detect
             // if the readable side is ready for autoDestroy as well
    -        const rState = stream._readableState;
    +        var rState = stream._readableState;
             if (!rState || rState.autoDestroy && rState.endEmitted) {
               stream.destroy();
             }
    @@ -615,13 +616,13 @@ Object.defineProperty(Writable.prototype, 'destroyed', {
       // because otherwise some prototype manipulation in
       // userland will fail
       enumerable: false,
    -  get() {
    +  get: function get() {
         if (this._writableState === undefined) {
           return false;
         }
         return this._writableState.destroyed;
       },
    -  set(value) {
    +  set: function set(value) {
         // we ignore the value if the stream
         // has not been initialized yet
         if (!this._writableState) {
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js
    index bcae6108c0d81d..742c5a4674794d 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/async_iterator.js
    @@ -1,23 +1,27 @@
     'use strict';
     
    -const finished = require('./end-of-stream');
    -const kLastResolve = Symbol('lastResolve');
    -const kLastReject = Symbol('lastReject');
    -const kError = Symbol('error');
    -const kEnded = Symbol('ended');
    -const kLastPromise = Symbol('lastPromise');
    -const kHandlePromise = Symbol('handlePromise');
    -const kStream = Symbol('stream');
    +var _Object$setPrototypeO;
    +function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
    +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
    +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
    +var finished = require('./end-of-stream');
    +var kLastResolve = Symbol('lastResolve');
    +var kLastReject = Symbol('lastReject');
    +var kError = Symbol('error');
    +var kEnded = Symbol('ended');
    +var kLastPromise = Symbol('lastPromise');
    +var kHandlePromise = Symbol('handlePromise');
    +var kStream = Symbol('stream');
     function createIterResult(value, done) {
       return {
    -    value,
    -    done
    +    value: value,
    +    done: done
       };
     }
     function readAndResolve(iter) {
    -  const resolve = iter[kLastResolve];
    +  var resolve = iter[kLastResolve];
       if (resolve !== null) {
    -    const data = iter[kStream].read();
    +    var data = iter[kStream].read();
         // we defer if data is null
         // we can be expecting either 'end' or
         // 'error'
    @@ -35,8 +39,8 @@ function onReadable(iter) {
       process.nextTick(readAndResolve, iter);
     }
     function wrapForNext(lastPromise, iter) {
    -  return (resolve, reject) => {
    -    lastPromise.then(() => {
    +  return function (resolve, reject) {
    +    lastPromise.then(function () {
           if (iter[kEnded]) {
             resolve(createIterResult(undefined, true));
             return;
    @@ -45,15 +49,16 @@ function wrapForNext(lastPromise, iter) {
         }, reject);
       };
     }
    -const AsyncIteratorPrototype = Object.getPrototypeOf(function () {});
    -const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({
    +var AsyncIteratorPrototype = Object.getPrototypeOf(function () {});
    +var ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {
       get stream() {
         return this[kStream];
       },
    -  next() {
    +  next: function next() {
    +    var _this = this;
         // if we have detected an error in the meanwhile
         // reject straight away
    -    const error = this[kError];
    +    var error = this[kError];
         if (error !== null) {
           return Promise.reject(error);
         }
    @@ -65,10 +70,10 @@ const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({
           // called, the error will be emitted via nextTick, and
           // we cannot guarantee that there is no error lingering around
           // waiting to be emitted.
    -      return new Promise((resolve, reject) => {
    -        process.nextTick(() => {
    -          if (this[kError]) {
    -            reject(this[kError]);
    +      return new Promise(function (resolve, reject) {
    +        process.nextTick(function () {
    +          if (_this[kError]) {
    +            reject(_this[kError]);
               } else {
                 resolve(createIterResult(undefined, true));
               }
    @@ -80,14 +85,14 @@ const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({
         // we will wait for the previous Promise to finish
         // this logic is optimized to support for await loops,
         // where next() is only called once at a time
    -    const lastPromise = this[kLastPromise];
    -    let promise;
    +    var lastPromise = this[kLastPromise];
    +    var promise;
         if (lastPromise) {
           promise = new Promise(wrapForNext(lastPromise, this));
         } else {
           // fast path needed to support multiple this.push()
           // without triggering the next() queue
    -      const data = this[kStream].read();
    +      var data = this[kStream].read();
           if (data !== null) {
             return Promise.resolve(createIterResult(data, false));
           }
    @@ -95,70 +100,60 @@ const ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf({
         }
         this[kLastPromise] = promise;
         return promise;
    -  },
    -  [Symbol.asyncIterator]() {
    -    return this;
    -  },
    -  return() {
    -    // destroy(err, cb) is a private API
    -    // we can guarantee we have that here, because we control the
    -    // Readable class this is attached to
    -    return new Promise((resolve, reject) => {
    -      this[kStream].destroy(null, err => {
    -        if (err) {
    -          reject(err);
    -          return;
    -        }
    -        resolve(createIterResult(undefined, true));
    -      });
    -    });
       }
    -}, AsyncIteratorPrototype);
    -const createReadableStreamAsyncIterator = stream => {
    -  const iterator = Object.create(ReadableStreamAsyncIteratorPrototype, {
    -    [kStream]: {
    -      value: stream,
    -      writable: true
    -    },
    -    [kLastResolve]: {
    -      value: null,
    -      writable: true
    -    },
    -    [kLastReject]: {
    -      value: null,
    -      writable: true
    -    },
    -    [kError]: {
    -      value: null,
    -      writable: true
    -    },
    -    [kEnded]: {
    -      value: stream._readableState.endEmitted,
    -      writable: true
    -    },
    -    // the function passed to new Promise
    -    // is cached so we avoid allocating a new
    -    // closure at every run
    -    [kHandlePromise]: {
    -      value: (resolve, reject) => {
    -        const data = iterator[kStream].read();
    -        if (data) {
    -          iterator[kLastPromise] = null;
    -          iterator[kLastResolve] = null;
    -          iterator[kLastReject] = null;
    -          resolve(createIterResult(data, false));
    -        } else {
    -          iterator[kLastResolve] = resolve;
    -          iterator[kLastReject] = reject;
    -        }
    -      },
    -      writable: true
    -    }
    +}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {
    +  return this;
    +}), _defineProperty(_Object$setPrototypeO, "return", function _return() {
    +  var _this2 = this;
    +  // destroy(err, cb) is a private API
    +  // we can guarantee we have that here, because we control the
    +  // Readable class this is attached to
    +  return new Promise(function (resolve, reject) {
    +    _this2[kStream].destroy(null, function (err) {
    +      if (err) {
    +        reject(err);
    +        return;
    +      }
    +      resolve(createIterResult(undefined, true));
    +    });
       });
    +}), _Object$setPrototypeO), AsyncIteratorPrototype);
    +var createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {
    +  var _Object$create;
    +  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {
    +    value: stream,
    +    writable: true
    +  }), _defineProperty(_Object$create, kLastResolve, {
    +    value: null,
    +    writable: true
    +  }), _defineProperty(_Object$create, kLastReject, {
    +    value: null,
    +    writable: true
    +  }), _defineProperty(_Object$create, kError, {
    +    value: null,
    +    writable: true
    +  }), _defineProperty(_Object$create, kEnded, {
    +    value: stream._readableState.endEmitted,
    +    writable: true
    +  }), _defineProperty(_Object$create, kHandlePromise, {
    +    value: function value(resolve, reject) {
    +      var data = iterator[kStream].read();
    +      if (data) {
    +        iterator[kLastPromise] = null;
    +        iterator[kLastResolve] = null;
    +        iterator[kLastReject] = null;
    +        resolve(createIterResult(data, false));
    +      } else {
    +        iterator[kLastResolve] = resolve;
    +        iterator[kLastReject] = reject;
    +      }
    +    },
    +    writable: true
    +  }), _Object$create));
       iterator[kLastPromise] = null;
    -  finished(stream, err => {
    +  finished(stream, function (err) {
         if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {
    -      const reject = iterator[kLastReject];
    +      var reject = iterator[kLastReject];
           // reject if we are waiting for data in the Promise
           // returned by next() and store the error
           if (reject !== null) {
    @@ -170,7 +165,7 @@ const createReadableStreamAsyncIterator = stream => {
           iterator[kError] = err;
           return;
         }
    -    const resolve = iterator[kLastResolve];
    +    var resolve = iterator[kLastResolve];
         if (resolve !== null) {
           iterator[kLastPromise] = null;
           iterator[kLastResolve] = null;
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js
    index 352ac3438ef2ac..69bda497d35f34 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/buffer_list.js
    @@ -3,153 +3,181 @@
     function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
     function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
     function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
    +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
    +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
    +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
     function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
     function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
    -const _require = require('buffer'),
    +var _require = require('buffer'),
       Buffer = _require.Buffer;
    -const _require2 = require('util'),
    +var _require2 = require('util'),
       inspect = _require2.inspect;
    -const custom = inspect && inspect.custom || 'inspect';
    +var custom = inspect && inspect.custom || 'inspect';
     function copyBuffer(src, target, offset) {
       Buffer.prototype.copy.call(src, target, offset);
     }
    -module.exports = class BufferList {
    -  constructor() {
    +module.exports = /*#__PURE__*/function () {
    +  function BufferList() {
    +    _classCallCheck(this, BufferList);
         this.head = null;
         this.tail = null;
         this.length = 0;
       }
    -  push(v) {
    -    const entry = {
    -      data: v,
    -      next: null
    -    };
    -    if (this.length > 0) this.tail.next = entry;else this.head = entry;
    -    this.tail = entry;
    -    ++this.length;
    -  }
    -  unshift(v) {
    -    const entry = {
    -      data: v,
    -      next: this.head
    -    };
    -    if (this.length === 0) this.tail = entry;
    -    this.head = entry;
    -    ++this.length;
    -  }
    -  shift() {
    -    if (this.length === 0) return;
    -    const ret = this.head.data;
    -    if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
    -    --this.length;
    -    return ret;
    -  }
    -  clear() {
    -    this.head = this.tail = null;
    -    this.length = 0;
    -  }
    -  join(s) {
    -    if (this.length === 0) return '';
    -    var p = this.head;
    -    var ret = '' + p.data;
    -    while (p = p.next) ret += s + p.data;
    -    return ret;
    -  }
    -  concat(n) {
    -    if (this.length === 0) return Buffer.alloc(0);
    -    const ret = Buffer.allocUnsafe(n >>> 0);
    -    var p = this.head;
    -    var i = 0;
    -    while (p) {
    -      copyBuffer(p.data, ret, i);
    -      i += p.data.length;
    -      p = p.next;
    +  _createClass(BufferList, [{
    +    key: "push",
    +    value: function push(v) {
    +      var entry = {
    +        data: v,
    +        next: null
    +      };
    +      if (this.length > 0) this.tail.next = entry;else this.head = entry;
    +      this.tail = entry;
    +      ++this.length;
    +    }
    +  }, {
    +    key: "unshift",
    +    value: function unshift(v) {
    +      var entry = {
    +        data: v,
    +        next: this.head
    +      };
    +      if (this.length === 0) this.tail = entry;
    +      this.head = entry;
    +      ++this.length;
    +    }
    +  }, {
    +    key: "shift",
    +    value: function shift() {
    +      if (this.length === 0) return;
    +      var ret = this.head.data;
    +      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
    +      --this.length;
    +      return ret;
    +    }
    +  }, {
    +    key: "clear",
    +    value: function clear() {
    +      this.head = this.tail = null;
    +      this.length = 0;
    +    }
    +  }, {
    +    key: "join",
    +    value: function join(s) {
    +      if (this.length === 0) return '';
    +      var p = this.head;
    +      var ret = '' + p.data;
    +      while (p = p.next) ret += s + p.data;
    +      return ret;
    +    }
    +  }, {
    +    key: "concat",
    +    value: function concat(n) {
    +      if (this.length === 0) return Buffer.alloc(0);
    +      var ret = Buffer.allocUnsafe(n >>> 0);
    +      var p = this.head;
    +      var i = 0;
    +      while (p) {
    +        copyBuffer(p.data, ret, i);
    +        i += p.data.length;
    +        p = p.next;
    +      }
    +      return ret;
         }
    -    return ret;
    -  }
     
    -  // Consumes a specified amount of bytes or characters from the buffered data.
    -  consume(n, hasStrings) {
    -    var ret;
    -    if (n < this.head.data.length) {
    -      // `slice` is the same for buffers and strings.
    -      ret = this.head.data.slice(0, n);
    -      this.head.data = this.head.data.slice(n);
    -    } else if (n === this.head.data.length) {
    -      // First chunk is a perfect match.
    -      ret = this.shift();
    -    } else {
    -      // Result spans more than one buffer.
    -      ret = hasStrings ? this._getString(n) : this._getBuffer(n);
    +    // Consumes a specified amount of bytes or characters from the buffered data.
    +  }, {
    +    key: "consume",
    +    value: function consume(n, hasStrings) {
    +      var ret;
    +      if (n < this.head.data.length) {
    +        // `slice` is the same for buffers and strings.
    +        ret = this.head.data.slice(0, n);
    +        this.head.data = this.head.data.slice(n);
    +      } else if (n === this.head.data.length) {
    +        // First chunk is a perfect match.
    +        ret = this.shift();
    +      } else {
    +        // Result spans more than one buffer.
    +        ret = hasStrings ? this._getString(n) : this._getBuffer(n);
    +      }
    +      return ret;
    +    }
    +  }, {
    +    key: "first",
    +    value: function first() {
    +      return this.head.data;
         }
    -    return ret;
    -  }
    -  first() {
    -    return this.head.data;
    -  }
     
    -  // Consumes a specified amount of characters from the buffered data.
    -  _getString(n) {
    -    var p = this.head;
    -    var c = 1;
    -    var ret = p.data;
    -    n -= ret.length;
    -    while (p = p.next) {
    -      const str = p.data;
    -      const nb = n > str.length ? str.length : n;
    -      if (nb === str.length) ret += str;else ret += str.slice(0, n);
    -      n -= nb;
    -      if (n === 0) {
    -        if (nb === str.length) {
    -          ++c;
    -          if (p.next) this.head = p.next;else this.head = this.tail = null;
    -        } else {
    -          this.head = p;
    -          p.data = str.slice(nb);
    +    // Consumes a specified amount of characters from the buffered data.
    +  }, {
    +    key: "_getString",
    +    value: function _getString(n) {
    +      var p = this.head;
    +      var c = 1;
    +      var ret = p.data;
    +      n -= ret.length;
    +      while (p = p.next) {
    +        var str = p.data;
    +        var nb = n > str.length ? str.length : n;
    +        if (nb === str.length) ret += str;else ret += str.slice(0, n);
    +        n -= nb;
    +        if (n === 0) {
    +          if (nb === str.length) {
    +            ++c;
    +            if (p.next) this.head = p.next;else this.head = this.tail = null;
    +          } else {
    +            this.head = p;
    +            p.data = str.slice(nb);
    +          }
    +          break;
             }
    -        break;
    +        ++c;
           }
    -      ++c;
    +      this.length -= c;
    +      return ret;
         }
    -    this.length -= c;
    -    return ret;
    -  }
     
    -  // Consumes a specified amount of bytes from the buffered data.
    -  _getBuffer(n) {
    -    const ret = Buffer.allocUnsafe(n);
    -    var p = this.head;
    -    var c = 1;
    -    p.data.copy(ret);
    -    n -= p.data.length;
    -    while (p = p.next) {
    -      const buf = p.data;
    -      const nb = n > buf.length ? buf.length : n;
    -      buf.copy(ret, ret.length - n, 0, nb);
    -      n -= nb;
    -      if (n === 0) {
    -        if (nb === buf.length) {
    -          ++c;
    -          if (p.next) this.head = p.next;else this.head = this.tail = null;
    -        } else {
    -          this.head = p;
    -          p.data = buf.slice(nb);
    +    // Consumes a specified amount of bytes from the buffered data.
    +  }, {
    +    key: "_getBuffer",
    +    value: function _getBuffer(n) {
    +      var ret = Buffer.allocUnsafe(n);
    +      var p = this.head;
    +      var c = 1;
    +      p.data.copy(ret);
    +      n -= p.data.length;
    +      while (p = p.next) {
    +        var buf = p.data;
    +        var nb = n > buf.length ? buf.length : n;
    +        buf.copy(ret, ret.length - n, 0, nb);
    +        n -= nb;
    +        if (n === 0) {
    +          if (nb === buf.length) {
    +            ++c;
    +            if (p.next) this.head = p.next;else this.head = this.tail = null;
    +          } else {
    +            this.head = p;
    +            p.data = buf.slice(nb);
    +          }
    +          break;
             }
    -        break;
    +        ++c;
           }
    -      ++c;
    +      this.length -= c;
    +      return ret;
         }
    -    this.length -= c;
    -    return ret;
    -  }
     
    -  // Make sure the linked list only shows the minimal necessary information.
    -  [custom](_, options) {
    -    return inspect(this, _objectSpread(_objectSpread({}, options), {}, {
    -      // Only inspect one level.
    -      depth: 0,
    -      // It should not recurse.
    -      customInspect: false
    -    }));
    -  }
    -};
    \ No newline at end of file
    +    // Make sure the linked list only shows the minimal necessary information.
    +  }, {
    +    key: custom,
    +    value: function value(_, options) {
    +      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {
    +        // Only inspect one level.
    +        depth: 0,
    +        // It should not recurse.
    +        customInspect: false
    +      }));
    +    }
    +  }]);
    +  return BufferList;
    +}();
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js
    index 7e8275567dc354..31a17c4dc46388 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/destroy.js
    @@ -2,8 +2,9 @@
     
     // undocumented cb() API, needed for core, not for public API
     function destroy(err, cb) {
    -  const readableDestroyed = this._readableState && this._readableState.destroyed;
    -  const writableDestroyed = this._writableState && this._writableState.destroyed;
    +  var _this = this;
    +  var readableDestroyed = this._readableState && this._readableState.destroyed;
    +  var writableDestroyed = this._writableState && this._writableState.destroyed;
       if (readableDestroyed || writableDestroyed) {
         if (cb) {
           cb(err);
    @@ -29,21 +30,21 @@ function destroy(err, cb) {
       if (this._writableState) {
         this._writableState.destroyed = true;
       }
    -  this._destroy(err || null, err => {
    +  this._destroy(err || null, function (err) {
         if (!cb && err) {
    -      if (!this._writableState) {
    -        process.nextTick(emitErrorAndCloseNT, this, err);
    -      } else if (!this._writableState.errorEmitted) {
    -        this._writableState.errorEmitted = true;
    -        process.nextTick(emitErrorAndCloseNT, this, err);
    +      if (!_this._writableState) {
    +        process.nextTick(emitErrorAndCloseNT, _this, err);
    +      } else if (!_this._writableState.errorEmitted) {
    +        _this._writableState.errorEmitted = true;
    +        process.nextTick(emitErrorAndCloseNT, _this, err);
           } else {
    -        process.nextTick(emitCloseNT, this);
    +        process.nextTick(emitCloseNT, _this);
           }
         } else if (cb) {
    -      process.nextTick(emitCloseNT, this);
    +      process.nextTick(emitCloseNT, _this);
           cb(err);
         } else {
    -      process.nextTick(emitCloseNT, this);
    +      process.nextTick(emitCloseNT, _this);
         }
       });
       return this;
    @@ -84,12 +85,12 @@ function errorOrDestroy(stream, err) {
       // the error to be emitted nextTick. In a future
       // semver major update we should change the default to this.
     
    -  const rState = stream._readableState;
    -  const wState = stream._writableState;
    +  var rState = stream._readableState;
    +  var wState = stream._writableState;
       if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);
     }
     module.exports = {
    -  destroy,
    -  undestroy,
    -  errorOrDestroy
    +  destroy: destroy,
    +  undestroy: undestroy,
    +  errorOrDestroy: errorOrDestroy
     };
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
    index b6d101691f187c..59c671b5af769b 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/end-of-stream.js
    @@ -3,9 +3,9 @@
     
     'use strict';
     
    -const ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;
    +var ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;
     function once(callback) {
    -  let called = false;
    +  var called = false;
       return function () {
         if (called) return;
         called = true;
    @@ -23,28 +23,28 @@ function eos(stream, opts, callback) {
       if (typeof opts === 'function') return eos(stream, null, opts);
       if (!opts) opts = {};
       callback = once(callback || noop);
    -  let readable = opts.readable || opts.readable !== false && stream.readable;
    -  let writable = opts.writable || opts.writable !== false && stream.writable;
    -  const onlegacyfinish = () => {
    +  var readable = opts.readable || opts.readable !== false && stream.readable;
    +  var writable = opts.writable || opts.writable !== false && stream.writable;
    +  var onlegacyfinish = function onlegacyfinish() {
         if (!stream.writable) onfinish();
       };
       var writableEnded = stream._writableState && stream._writableState.finished;
    -  const onfinish = () => {
    +  var onfinish = function onfinish() {
         writable = false;
         writableEnded = true;
         if (!readable) callback.call(stream);
       };
       var readableEnded = stream._readableState && stream._readableState.endEmitted;
    -  const onend = () => {
    +  var onend = function onend() {
         readable = false;
         readableEnded = true;
         if (!writable) callback.call(stream);
       };
    -  const onerror = err => {
    +  var onerror = function onerror(err) {
         callback.call(stream, err);
       };
    -  const onclose = () => {
    -    let err;
    +  var onclose = function onclose() {
    +    var err;
         if (readable && !readableEnded) {
           if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();
           return callback.call(stream, err);
    @@ -54,7 +54,7 @@ function eos(stream, opts, callback) {
           return callback.call(stream, err);
         }
       };
    -  const onrequest = () => {
    +  var onrequest = function onrequest() {
         stream.req.on('finish', onfinish);
       };
       if (isRequest(stream)) {
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js
    index 4ca2cd1996d28f..0a34ee92e3df85 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/from.js
    @@ -7,18 +7,18 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
     function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
     function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
     function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
    -const ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;
    +var ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;
     function from(Readable, iterable, opts) {
    -  let iterator;
    +  var iterator;
       if (iterable && typeof iterable.next === 'function') {
         iterator = iterable;
       } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);
    -  const readable = new Readable(_objectSpread({
    +  var readable = new Readable(_objectSpread({
         objectMode: true
       }, opts));
       // Reading boolean to protect against _read
       // being called before last iteration completion.
    -  let reading = false;
    +  var reading = false;
       readable._read = function () {
         if (!reading) {
           reading = true;
    @@ -31,7 +31,7 @@ function from(Readable, iterable, opts) {
       function _next2() {
         _next2 = _asyncToGenerator(function* () {
           try {
    -        const _yield$iterator$next = yield iterator.next(),
    +        var _yield$iterator$next = yield iterator.next(),
               value = _yield$iterator$next.value,
               done = _yield$iterator$next.done;
             if (done) {
    @@ -49,4 +49,4 @@ function from(Readable, iterable, opts) {
       }
       return readable;
     }
    -module.exports = from;
    \ No newline at end of file
    +module.exports = from;
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js
    index 272546db82513d..e6f39241f98dd8 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/pipeline.js
    @@ -3,16 +3,16 @@
     
     'use strict';
     
    -let eos;
    +var eos;
     function once(callback) {
    -  let called = false;
    +  var called = false;
       return function () {
         if (called) return;
         called = true;
    -    callback(...arguments);
    +    callback.apply(void 0, arguments);
       };
     }
    -const _require$codes = require('../../../errors').codes,
    +var _require$codes = require('../../../errors').codes,
       ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,
       ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;
     function noop(err) {
    @@ -24,21 +24,21 @@ function isRequest(stream) {
     }
     function destroyer(stream, reading, writing, callback) {
       callback = once(callback);
    -  let closed = false;
    -  stream.on('close', () => {
    +  var closed = false;
    +  stream.on('close', function () {
         closed = true;
       });
       if (eos === undefined) eos = require('./end-of-stream');
       eos(stream, {
         readable: reading,
         writable: writing
    -  }, err => {
    +  }, function (err) {
         if (err) return callback(err);
         closed = true;
         callback();
       });
    -  let destroyed = false;
    -  return err => {
    +  var destroyed = false;
    +  return function (err) {
         if (closed) return;
         if (destroyed) return;
         destroyed = true;
    @@ -64,15 +64,15 @@ function pipeline() {
       for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {
         streams[_key] = arguments[_key];
       }
    -  const callback = popCallback(streams);
    +  var callback = popCallback(streams);
       if (Array.isArray(streams[0])) streams = streams[0];
       if (streams.length < 2) {
         throw new ERR_MISSING_ARGS('streams');
       }
    -  let error;
    -  const destroys = streams.map(function (stream, i) {
    -    const reading = i < streams.length - 1;
    -    const writing = i > 0;
    +  var error;
    +  var destroys = streams.map(function (stream, i) {
    +    var reading = i < streams.length - 1;
    +    var writing = i > 0;
         return destroyer(stream, reading, writing, function (err) {
           if (!error) error = err;
           if (err) destroys.forEach(call);
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js
    index 8a994b4422a2d2..3fbf8927e00179 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/lib/internal/streams/state.js
    @@ -1,14 +1,14 @@
     'use strict';
     
    -const ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;
    +var ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;
     function highWaterMarkFrom(options, isDuplex, duplexKey) {
       return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;
     }
     function getHighWaterMark(state, options, duplexKey, isDuplex) {
    -  const hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
    +  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);
       if (hwm != null) {
         if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {
    -      const name = isDuplex ? duplexKey : 'highWaterMark';
    +      var name = isDuplex ? duplexKey : 'highWaterMark';
           throw new ERR_INVALID_OPT_VALUE(name, hwm);
         }
         return Math.floor(hwm);
    @@ -18,5 +18,5 @@ function getHighWaterMark(state, options, duplexKey, isDuplex) {
       return state.objectMode ? 16 : 16 * 1024;
     }
     module.exports = {
    -  getHighWaterMark
    +  getHighWaterMark: getHighWaterMark
     };
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json
    index 4cd81b628d572a..ade59e71aa0f17 100644
    --- a/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json
    +++ b/deps/npm/node_modules/node-gyp/node_modules/readable-stream/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "readable-stream",
    -  "version": "3.6.1",
    +  "version": "3.6.2",
       "description": "Streams3, a user-land copy of the stream library from Node.js",
       "main": "readable.js",
       "engines": {
    diff --git a/deps/npm/node_modules/nopt/lib/debug.js b/deps/npm/node_modules/nopt/lib/debug.js
    new file mode 100644
    index 00000000000000..194d0c68818829
    --- /dev/null
    +++ b/deps/npm/node_modules/nopt/lib/debug.js
    @@ -0,0 +1,6 @@
    +/* istanbul ignore next */
    +module.exports = process.env.DEBUG_NOPT || process.env.NOPT_DEBUG
    +  ? function () {
    +    console.error.apply(console, arguments)
    +  }
    +  : function () {}
    diff --git a/deps/npm/node_modules/nopt/lib/nopt-lib.js b/deps/npm/node_modules/nopt/lib/nopt-lib.js
    new file mode 100644
    index 00000000000000..89d269fb43f1a1
    --- /dev/null
    +++ b/deps/npm/node_modules/nopt/lib/nopt-lib.js
    @@ -0,0 +1,428 @@
    +var abbrev = require('abbrev')
    +const debug = require('./debug')
    +const defaultTypeDefs = require('./type-defs')
    +
    +function nopt (args, { types, shorthands, typeDefs, invalidHandler }) {
    +  debug(types, shorthands, args, typeDefs)
    +
    +  var data = {}
    +  var argv = {
    +    remain: [],
    +    cooked: args,
    +    original: args.slice(0),
    +  }
    +
    +  parse(args, data, argv.remain, { typeDefs, types, shorthands })
    +
    +  // now data is full
    +  clean(data, { types, typeDefs, invalidHandler })
    +  data.argv = argv
    +
    +  Object.defineProperty(data.argv, 'toString', {
    +    value: function () {
    +      return this.original.map(JSON.stringify).join(' ')
    +    },
    +    enumerable: false,
    +  })
    +
    +  return data
    +}
    +
    +function clean (data, { types, typeDefs, invalidHandler }) {
    +  const StringType = typeDefs.String.type
    +  const NumberType = typeDefs.Number.type
    +  const ArrayType = typeDefs.Array.type
    +  const BooleanType = typeDefs.Boolean.type
    +  const DateType = typeDefs.Date.type
    +
    +  var remove = {}
    +  var typeDefault = [false, true, null, StringType, ArrayType]
    +
    +  Object.keys(data).forEach(function (k) {
    +    if (k === 'argv') {
    +      return
    +    }
    +    var val = data[k]
    +    var isArray = Array.isArray(val)
    +    var type = types[k]
    +    if (!isArray) {
    +      val = [val]
    +    }
    +    if (!type) {
    +      type = typeDefault
    +    }
    +    if (type === ArrayType) {
    +      type = typeDefault.concat(ArrayType)
    +    }
    +    if (!Array.isArray(type)) {
    +      type = [type]
    +    }
    +
    +    debug('val=%j', val)
    +    debug('types=', type)
    +    val = val.map(function (v) {
    +      // if it's an unknown value, then parse false/true/null/numbers/dates
    +      if (typeof v === 'string') {
    +        debug('string %j', v)
    +        v = v.trim()
    +        if ((v === 'null' && ~type.indexOf(null))
    +            || (v === 'true' &&
    +               (~type.indexOf(true) || ~type.indexOf(BooleanType)))
    +            || (v === 'false' &&
    +               (~type.indexOf(false) || ~type.indexOf(BooleanType)))) {
    +          v = JSON.parse(v)
    +          debug('jsonable %j', v)
    +        } else if (~type.indexOf(NumberType) && !isNaN(v)) {
    +          debug('convert to number', v)
    +          v = +v
    +        } else if (~type.indexOf(DateType) && !isNaN(Date.parse(v))) {
    +          debug('convert to date', v)
    +          v = new Date(v)
    +        }
    +      }
    +
    +      if (!Object.prototype.hasOwnProperty.call(types, k)) {
    +        return v
    +      }
    +
    +      // allow `--no-blah` to set 'blah' to null if null is allowed
    +      if (v === false && ~type.indexOf(null) &&
    +          !(~type.indexOf(false) || ~type.indexOf(BooleanType))) {
    +        v = null
    +      }
    +
    +      var d = {}
    +      d[k] = v
    +      debug('prevalidated val', d, v, types[k])
    +      if (!validate(d, k, v, types[k], { typeDefs })) {
    +        if (invalidHandler) {
    +          invalidHandler(k, v, types[k], data)
    +        } else if (invalidHandler !== false) {
    +          debug('invalid: ' + k + '=' + v, types[k])
    +        }
    +        return remove
    +      }
    +      debug('validated v', d, v, types[k])
    +      return d[k]
    +    }).filter(function (v) {
    +      return v !== remove
    +    })
    +
    +    // if we allow Array specifically, then an empty array is how we
    +    // express 'no value here', not null.  Allow it.
    +    if (!val.length && type.indexOf(ArrayType) === -1) {
    +      debug('VAL HAS NO LENGTH, DELETE IT', val, k, type.indexOf(ArrayType))
    +      delete data[k]
    +    } else if (isArray) {
    +      debug(isArray, data[k], val)
    +      data[k] = val
    +    } else {
    +      data[k] = val[0]
    +    }
    +
    +    debug('k=%s val=%j', k, val, data[k])
    +  })
    +}
    +
    +function validate (data, k, val, type, { typeDefs }) {
    +  const ArrayType = typeDefs.Array.type
    +  // arrays are lists of types.
    +  if (Array.isArray(type)) {
    +    for (let i = 0, l = type.length; i < l; i++) {
    +      if (type[i] === ArrayType) {
    +        continue
    +      }
    +      if (validate(data, k, val, type[i], { typeDefs })) {
    +        return true
    +      }
    +    }
    +    delete data[k]
    +    return false
    +  }
    +
    +  // an array of anything?
    +  if (type === ArrayType) {
    +    return true
    +  }
    +
    +  // Original comment:
    +  // NaN is poisonous.  Means that something is not allowed.
    +  // New comment: Changing this to an isNaN check breaks a lot of tests.
    +  // Something is being assumed here that is not actually what happens in
    +  // practice.  Fixing it is outside the scope of getting linting to pass in
    +  // this repo. Leaving as-is for now.
    +  /* eslint-disable-next-line no-self-compare */
    +  if (type !== type) {
    +    debug('Poison NaN', k, val, type)
    +    delete data[k]
    +    return false
    +  }
    +
    +  // explicit list of values
    +  if (val === type) {
    +    debug('Explicitly allowed %j', val)
    +    data[k] = val
    +    return true
    +  }
    +
    +  // now go through the list of typeDefs, validate against each one.
    +  var ok = false
    +  var types = Object.keys(typeDefs)
    +  for (let i = 0, l = types.length; i < l; i++) {
    +    debug('test type %j %j %j', k, val, types[i])
    +    var t = typeDefs[types[i]]
    +    if (t && (
    +      (type && type.name && t.type && t.type.name) ?
    +        (type.name === t.type.name) :
    +        (type === t.type)
    +    )) {
    +      var d = {}
    +      ok = t.validate(d, k, val) !== false
    +      val = d[k]
    +      if (ok) {
    +        data[k] = val
    +        break
    +      }
    +    }
    +  }
    +  debug('OK? %j (%j %j %j)', ok, k, val, types[types.length - 1])
    +
    +  if (!ok) {
    +    delete data[k]
    +  }
    +  return ok
    +}
    +
    +function parse (args, data, remain, { typeDefs, types, shorthands }) {
    +  const StringType = typeDefs.String.type
    +  const NumberType = typeDefs.String.type
    +  const ArrayType = typeDefs.Array.type
    +  const BooleanType = typeDefs.Boolean.type
    +
    +  debug('parse', args, data, remain)
    +
    +  var abbrevs = abbrev(Object.keys(types))
    +  var shortAbbr = abbrev(Object.keys(shorthands))
    +
    +  for (var i = 0; i < args.length; i++) {
    +    var arg = args[i]
    +    debug('arg', arg)
    +
    +    if (arg.match(/^-{2,}$/)) {
    +      // done with keys.
    +      // the rest are args.
    +      remain.push.apply(remain, args.slice(i + 1))
    +      args[i] = '--'
    +      break
    +    }
    +    var hadEq = false
    +    if (arg.charAt(0) === '-' && arg.length > 1) {
    +      var at = arg.indexOf('=')
    +      if (at > -1) {
    +        hadEq = true
    +        var v = arg.slice(at + 1)
    +        arg = arg.slice(0, at)
    +        args.splice(i, 1, arg, v)
    +      }
    +
    +      // see if it's a shorthand
    +      // if so, splice and back up to re-parse it.
    +      var shRes = resolveShort(arg, shortAbbr, abbrevs, { shorthands })
    +      debug('arg=%j shRes=%j', arg, shRes)
    +      if (shRes) {
    +        debug(arg, shRes)
    +        args.splice.apply(args, [i, 1].concat(shRes))
    +        if (arg !== shRes[0]) {
    +          i--
    +          continue
    +        }
    +      }
    +      arg = arg.replace(/^-+/, '')
    +      var no = null
    +      while (arg.toLowerCase().indexOf('no-') === 0) {
    +        no = !no
    +        arg = arg.slice(3)
    +      }
    +
    +      if (abbrevs[arg]) {
    +        arg = abbrevs[arg]
    +      }
    +
    +      var argType = types[arg]
    +      var isTypeArray = Array.isArray(argType)
    +      if (isTypeArray && argType.length === 1) {
    +        isTypeArray = false
    +        argType = argType[0]
    +      }
    +
    +      var isArray = argType === ArrayType ||
    +        isTypeArray && argType.indexOf(ArrayType) !== -1
    +
    +      // allow unknown things to be arrays if specified multiple times.
    +      if (
    +        !Object.prototype.hasOwnProperty.call(types, arg) &&
    +        Object.prototype.hasOwnProperty.call(data, arg)
    +      ) {
    +        if (!Array.isArray(data[arg])) {
    +          data[arg] = [data[arg]]
    +        }
    +        isArray = true
    +      }
    +
    +      var val
    +      var la = args[i + 1]
    +
    +      var isBool = typeof no === 'boolean' ||
    +        argType === BooleanType ||
    +        isTypeArray && argType.indexOf(BooleanType) !== -1 ||
    +        (typeof argType === 'undefined' && !hadEq) ||
    +        (la === 'false' &&
    +         (argType === null ||
    +          isTypeArray && ~argType.indexOf(null)))
    +
    +      if (isBool) {
    +        // just set and move along
    +        val = !no
    +        // however, also support --bool true or --bool false
    +        if (la === 'true' || la === 'false') {
    +          val = JSON.parse(la)
    +          la = null
    +          if (no) {
    +            val = !val
    +          }
    +          i++
    +        }
    +
    +        // also support "foo":[Boolean, "bar"] and "--foo bar"
    +        if (isTypeArray && la) {
    +          if (~argType.indexOf(la)) {
    +            // an explicit type
    +            val = la
    +            i++
    +          } else if (la === 'null' && ~argType.indexOf(null)) {
    +            // null allowed
    +            val = null
    +            i++
    +          } else if (!la.match(/^-{2,}[^-]/) &&
    +                      !isNaN(la) &&
    +                      ~argType.indexOf(NumberType)) {
    +            // number
    +            val = +la
    +            i++
    +          } else if (!la.match(/^-[^-]/) && ~argType.indexOf(StringType)) {
    +            // string
    +            val = la
    +            i++
    +          }
    +        }
    +
    +        if (isArray) {
    +          (data[arg] = data[arg] || []).push(val)
    +        } else {
    +          data[arg] = val
    +        }
    +
    +        continue
    +      }
    +
    +      if (argType === StringType) {
    +        if (la === undefined) {
    +          la = ''
    +        } else if (la.match(/^-{1,2}[^-]+/)) {
    +          la = ''
    +          i--
    +        }
    +      }
    +
    +      if (la && la.match(/^-{2,}$/)) {
    +        la = undefined
    +        i--
    +      }
    +
    +      val = la === undefined ? true : la
    +      if (isArray) {
    +        (data[arg] = data[arg] || []).push(val)
    +      } else {
    +        data[arg] = val
    +      }
    +
    +      i++
    +      continue
    +    }
    +    remain.push(arg)
    +  }
    +}
    +
    +function resolveShort (arg, shortAbbr, abbrevs, { shorthands }) {
    +  // handle single-char shorthands glommed together, like
    +  // npm ls -glp, but only if there is one dash, and only if
    +  // all of the chars are single-char shorthands, and it's
    +  // not a match to some other abbrev.
    +  arg = arg.replace(/^-+/, '')
    +
    +  // if it's an exact known option, then don't go any further
    +  if (abbrevs[arg] === arg) {
    +    return null
    +  }
    +
    +  // if it's an exact known shortopt, same deal
    +  if (shorthands[arg]) {
    +    // make it an array, if it's a list of words
    +    if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    +      shorthands[arg] = shorthands[arg].split(/\s+/)
    +    }
    +
    +    return shorthands[arg]
    +  }
    +
    +  // first check to see if this arg is a set of single-char shorthands
    +  var singles = shorthands.___singles
    +  if (!singles) {
    +    singles = Object.keys(shorthands).filter(function (s) {
    +      return s.length === 1
    +    }).reduce(function (l, r) {
    +      l[r] = true
    +      return l
    +    }, {})
    +    shorthands.___singles = singles
    +    debug('shorthand singles', singles)
    +  }
    +
    +  var chrs = arg.split('').filter(function (c) {
    +    return singles[c]
    +  })
    +
    +  if (chrs.join('') === arg) {
    +    return chrs.map(function (c) {
    +      return shorthands[c]
    +    }).reduce(function (l, r) {
    +      return l.concat(r)
    +    }, [])
    +  }
    +
    +  // if it's an arg abbrev, and not a literal shorthand, then prefer the arg
    +  if (abbrevs[arg] && !shorthands[arg]) {
    +    return null
    +  }
    +
    +  // if it's an abbr for a shorthand, then use that
    +  if (shortAbbr[arg]) {
    +    arg = shortAbbr[arg]
    +  }
    +
    +  // make it an array, if it's a list of words
    +  if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    +    shorthands[arg] = shorthands[arg].split(/\s+/)
    +  }
    +
    +  return shorthands[arg]
    +}
    +
    +module.exports = {
    +  nopt,
    +  clean,
    +  parse,
    +  validate,
    +  resolveShort,
    +  typeDefs: defaultTypeDefs,
    +}
    diff --git a/deps/npm/node_modules/nopt/lib/nopt.js b/deps/npm/node_modules/nopt/lib/nopt.js
    index 5829c2fe0f6379..70fd809bc111e6 100644
    --- a/deps/npm/node_modules/nopt/lib/nopt.js
    +++ b/deps/npm/node_modules/nopt/lib/nopt.js
    @@ -1,515 +1,30 @@
    -// info about each config option.
    +const lib = require('./nopt-lib')
    +const defaultTypeDefs = require('./type-defs')
     
    -var debug = process.env.DEBUG_NOPT || process.env.NOPT_DEBUG
    -  ? function () {
    -    console.error.apply(console, arguments)
    -  }
    -  : function () {}
    -
    -var url = require('url')
    -var path = require('path')
    -var Stream = require('stream').Stream
    -var abbrev = require('abbrev')
    -var os = require('os')
    +// This is the version of nopt's API that requires setting typeDefs and invalidHandler
    +// on the required `nopt` object since it is a singleton. To not do a breaking change
    +// an API that requires all options be passed in is located in `nopt-lib.js` and
    +// exported here as lib.
    +// TODO(breaking): make API only work in non-singleton mode
     
     module.exports = exports = nopt
     exports.clean = clean
    -
    -exports.typeDefs =
    -  { String: { type: String, validate: validateString },
    -    Boolean: { type: Boolean, validate: validateBoolean },
    -    url: { type: url, validate: validateUrl },
    -    Number: { type: Number, validate: validateNumber },
    -    path: { type: path, validate: validatePath },
    -    Stream: { type: Stream, validate: validateStream },
    -    Date: { type: Date, validate: validateDate },
    -  }
    -
    -function nopt (types, shorthands, args, slice) {
    -  args = args || process.argv
    -  types = types || {}
    -  shorthands = shorthands || {}
    -  if (typeof slice !== 'number') {
    -    slice = 2
    -  }
    -
    -  debug(types, shorthands, args, slice)
    -
    -  args = args.slice(slice)
    -  var data = {}
    -  var argv = {
    -    remain: [],
    -    cooked: args,
    -    original: args.slice(0),
    -  }
    -
    -  parse(args, data, argv.remain, types, shorthands)
    -  // now data is full
    -  clean(data, types, exports.typeDefs)
    -  data.argv = argv
    -  Object.defineProperty(data.argv, 'toString', { value: function () {
    -    return this.original.map(JSON.stringify).join(' ')
    -  },
    -  enumerable: false })
    -  return data
    -}
    -
    -function clean (data, types, typeDefs) {
    -  typeDefs = typeDefs || exports.typeDefs
    -  var remove = {}
    -  var typeDefault = [false, true, null, String, Array]
    -
    -  Object.keys(data).forEach(function (k) {
    -    if (k === 'argv') {
    -      return
    -    }
    -    var val = data[k]
    -    var isArray = Array.isArray(val)
    -    var type = types[k]
    -    if (!isArray) {
    -      val = [val]
    -    }
    -    if (!type) {
    -      type = typeDefault
    -    }
    -    if (type === Array) {
    -      type = typeDefault.concat(Array)
    -    }
    -    if (!Array.isArray(type)) {
    -      type = [type]
    -    }
    -
    -    debug('val=%j', val)
    -    debug('types=', type)
    -    val = val.map(function (v) {
    -      // if it's an unknown value, then parse false/true/null/numbers/dates
    -      if (typeof v === 'string') {
    -        debug('string %j', v)
    -        v = v.trim()
    -        if ((v === 'null' && ~type.indexOf(null))
    -            || (v === 'true' &&
    -               (~type.indexOf(true) || ~type.indexOf(Boolean)))
    -            || (v === 'false' &&
    -               (~type.indexOf(false) || ~type.indexOf(Boolean)))) {
    -          v = JSON.parse(v)
    -          debug('jsonable %j', v)
    -        } else if (~type.indexOf(Number) && !isNaN(v)) {
    -          debug('convert to number', v)
    -          v = +v
    -        } else if (~type.indexOf(Date) && !isNaN(Date.parse(v))) {
    -          debug('convert to date', v)
    -          v = new Date(v)
    -        }
    -      }
    -
    -      if (!Object.prototype.hasOwnProperty.call(types, k)) {
    -        return v
    -      }
    -
    -      // allow `--no-blah` to set 'blah' to null if null is allowed
    -      if (v === false && ~type.indexOf(null) &&
    -          !(~type.indexOf(false) || ~type.indexOf(Boolean))) {
    -        v = null
    -      }
    -
    -      var d = {}
    -      d[k] = v
    -      debug('prevalidated val', d, v, types[k])
    -      if (!validate(d, k, v, types[k], typeDefs)) {
    -        if (exports.invalidHandler) {
    -          exports.invalidHandler(k, v, types[k], data)
    -        } else if (exports.invalidHandler !== false) {
    -          debug('invalid: ' + k + '=' + v, types[k])
    -        }
    -        return remove
    -      }
    -      debug('validated v', d, v, types[k])
    -      return d[k]
    -    }).filter(function (v) {
    -      return v !== remove
    -    })
    -
    -    // if we allow Array specifically, then an empty array is how we
    -    // express 'no value here', not null.  Allow it.
    -    if (!val.length && type.indexOf(Array) === -1) {
    -      debug('VAL HAS NO LENGTH, DELETE IT', val, k, type.indexOf(Array))
    -      delete data[k]
    -    } else if (isArray) {
    -      debug(isArray, data[k], val)
    -      data[k] = val
    -    } else {
    -      data[k] = val[0]
    -    }
    -
    -    debug('k=%s val=%j', k, val, data[k])
    +exports.typeDefs = defaultTypeDefs
    +exports.lib = lib
    +
    +function nopt (types = {}, shorthands = {}, args = process.argv, slice = 2) {
    +  return lib.nopt(args.slice(slice), {
    +    types,
    +    shorthands: shorthands || {},
    +    typeDefs: exports.typeDefs,
    +    invalidHandler: exports.invalidHandler,
       })
     }
     
    -function validateString (data, k, val) {
    -  data[k] = String(val)
    -}
    -
    -function validatePath (data, k, val) {
    -  if (val === true) {
    -    return false
    -  }
    -  if (val === null) {
    -    return true
    -  }
    -
    -  val = String(val)
    -
    -  var isWin = process.platform === 'win32'
    -  var homePattern = isWin ? /^~(\/|\\)/ : /^~\//
    -  var home = os.homedir()
    -
    -  if (home && val.match(homePattern)) {
    -    data[k] = path.resolve(home, val.slice(2))
    -  } else {
    -    data[k] = path.resolve(val)
    -  }
    -  return true
    -}
    -
    -function validateNumber (data, k, val) {
    -  debug('validate Number %j %j %j', k, val, isNaN(val))
    -  if (isNaN(val)) {
    -    return false
    -  }
    -  data[k] = +val
    -}
    -
    -function validateDate (data, k, val) {
    -  var s = Date.parse(val)
    -  debug('validate Date %j %j %j', k, val, s)
    -  if (isNaN(s)) {
    -    return false
    -  }
    -  data[k] = new Date(val)
    -}
    -
    -function validateBoolean (data, k, val) {
    -  if (val instanceof Boolean) {
    -    val = val.valueOf()
    -  } else if (typeof val === 'string') {
    -    if (!isNaN(val)) {
    -      val = !!(+val)
    -    } else if (val === 'null' || val === 'false') {
    -      val = false
    -    } else {
    -      val = true
    -    }
    -  } else {
    -    val = !!val
    -  }
    -  data[k] = val
    -}
    -
    -function validateUrl (data, k, val) {
    -  // Changing this would be a breaking change in the npm cli
    -  /* eslint-disable-next-line node/no-deprecated-api */
    -  val = url.parse(String(val))
    -  if (!val.host) {
    -    return false
    -  }
    -  data[k] = val.href
    -}
    -
    -function validateStream (data, k, val) {
    -  if (!(val instanceof Stream)) {
    -    return false
    -  }
    -  data[k] = val
    -}
    -
    -function validate (data, k, val, type, typeDefs) {
    -  // arrays are lists of types.
    -  if (Array.isArray(type)) {
    -    for (let i = 0, l = type.length; i < l; i++) {
    -      if (type[i] === Array) {
    -        continue
    -      }
    -      if (validate(data, k, val, type[i], typeDefs)) {
    -        return true
    -      }
    -    }
    -    delete data[k]
    -    return false
    -  }
    -
    -  // an array of anything?
    -  if (type === Array) {
    -    return true
    -  }
    -
    -  // Original comment:
    -  // NaN is poisonous.  Means that something is not allowed.
    -  // New comment: Changing this to an isNaN check breaks a lot of tests.
    -  // Something is being assumed here that is not actually what happens in
    -  // practice.  Fixing it is outside the scope of getting linting to pass in
    -  // this repo. Leaving as-is for now.
    -  /* eslint-disable-next-line no-self-compare */
    -  if (type !== type) {
    -    debug('Poison NaN', k, val, type)
    -    delete data[k]
    -    return false
    -  }
    -
    -  // explicit list of values
    -  if (val === type) {
    -    debug('Explicitly allowed %j', val)
    -    // if (isArray) (data[k] = data[k] || []).push(val)
    -    // else data[k] = val
    -    data[k] = val
    -    return true
    -  }
    -
    -  // now go through the list of typeDefs, validate against each one.
    -  var ok = false
    -  var types = Object.keys(typeDefs)
    -  for (let i = 0, l = types.length; i < l; i++) {
    -    debug('test type %j %j %j', k, val, types[i])
    -    var t = typeDefs[types[i]]
    -    if (t && (
    -      (type && type.name && t.type && t.type.name) ?
    -        (type.name === t.type.name) :
    -        (type === t.type)
    -    )) {
    -      var d = {}
    -      ok = t.validate(d, k, val) !== false
    -      val = d[k]
    -      if (ok) {
    -        // if (isArray) (data[k] = data[k] || []).push(val)
    -        // else data[k] = val
    -        data[k] = val
    -        break
    -      }
    -    }
    -  }
    -  debug('OK? %j (%j %j %j)', ok, k, val, types[types.length - 1])
    -
    -  if (!ok) {
    -    delete data[k]
    -  }
    -  return ok
    -}
    -
    -function parse (args, data, remain, types, shorthands) {
    -  debug('parse', args, data, remain)
    -
    -  var abbrevs = abbrev(Object.keys(types))
    -  var shortAbbr = abbrev(Object.keys(shorthands))
    -
    -  for (var i = 0; i < args.length; i++) {
    -    var arg = args[i]
    -    debug('arg', arg)
    -
    -    if (arg.match(/^-{2,}$/)) {
    -      // done with keys.
    -      // the rest are args.
    -      remain.push.apply(remain, args.slice(i + 1))
    -      args[i] = '--'
    -      break
    -    }
    -    var hadEq = false
    -    if (arg.charAt(0) === '-' && arg.length > 1) {
    -      var at = arg.indexOf('=')
    -      if (at > -1) {
    -        hadEq = true
    -        var v = arg.slice(at + 1)
    -        arg = arg.slice(0, at)
    -        args.splice(i, 1, arg, v)
    -      }
    -
    -      // see if it's a shorthand
    -      // if so, splice and back up to re-parse it.
    -      var shRes = resolveShort(arg, shorthands, shortAbbr, abbrevs)
    -      debug('arg=%j shRes=%j', arg, shRes)
    -      if (shRes) {
    -        debug(arg, shRes)
    -        args.splice.apply(args, [i, 1].concat(shRes))
    -        if (arg !== shRes[0]) {
    -          i--
    -          continue
    -        }
    -      }
    -      arg = arg.replace(/^-+/, '')
    -      var no = null
    -      while (arg.toLowerCase().indexOf('no-') === 0) {
    -        no = !no
    -        arg = arg.slice(3)
    -      }
    -
    -      if (abbrevs[arg]) {
    -        arg = abbrevs[arg]
    -      }
    -
    -      var argType = types[arg]
    -      var isTypeArray = Array.isArray(argType)
    -      if (isTypeArray && argType.length === 1) {
    -        isTypeArray = false
    -        argType = argType[0]
    -      }
    -
    -      var isArray = argType === Array ||
    -        isTypeArray && argType.indexOf(Array) !== -1
    -
    -      // allow unknown things to be arrays if specified multiple times.
    -      if (
    -        !Object.prototype.hasOwnProperty.call(types, arg) &&
    -        Object.prototype.hasOwnProperty.call(data, arg)
    -      ) {
    -        if (!Array.isArray(data[arg])) {
    -          data[arg] = [data[arg]]
    -        }
    -        isArray = true
    -      }
    -
    -      var val
    -      var la = args[i + 1]
    -
    -      var isBool = typeof no === 'boolean' ||
    -        argType === Boolean ||
    -        isTypeArray && argType.indexOf(Boolean) !== -1 ||
    -        (typeof argType === 'undefined' && !hadEq) ||
    -        (la === 'false' &&
    -         (argType === null ||
    -          isTypeArray && ~argType.indexOf(null)))
    -
    -      if (isBool) {
    -        // just set and move along
    -        val = !no
    -        // however, also support --bool true or --bool false
    -        if (la === 'true' || la === 'false') {
    -          val = JSON.parse(la)
    -          la = null
    -          if (no) {
    -            val = !val
    -          }
    -          i++
    -        }
    -
    -        // also support "foo":[Boolean, "bar"] and "--foo bar"
    -        if (isTypeArray && la) {
    -          if (~argType.indexOf(la)) {
    -            // an explicit type
    -            val = la
    -            i++
    -          } else if (la === 'null' && ~argType.indexOf(null)) {
    -            // null allowed
    -            val = null
    -            i++
    -          } else if (!la.match(/^-{2,}[^-]/) &&
    -                      !isNaN(la) &&
    -                      ~argType.indexOf(Number)) {
    -            // number
    -            val = +la
    -            i++
    -          } else if (!la.match(/^-[^-]/) && ~argType.indexOf(String)) {
    -            // string
    -            val = la
    -            i++
    -          }
    -        }
    -
    -        if (isArray) {
    -          (data[arg] = data[arg] || []).push(val)
    -        } else {
    -          data[arg] = val
    -        }
    -
    -        continue
    -      }
    -
    -      if (argType === String) {
    -        if (la === undefined) {
    -          la = ''
    -        } else if (la.match(/^-{1,2}[^-]+/)) {
    -          la = ''
    -          i--
    -        }
    -      }
    -
    -      if (la && la.match(/^-{2,}$/)) {
    -        la = undefined
    -        i--
    -      }
    -
    -      val = la === undefined ? true : la
    -      if (isArray) {
    -        (data[arg] = data[arg] || []).push(val)
    -      } else {
    -        data[arg] = val
    -      }
    -
    -      i++
    -      continue
    -    }
    -    remain.push(arg)
    -  }
    -}
    -
    -function resolveShort (arg, shorthands, shortAbbr, abbrevs) {
    -  // handle single-char shorthands glommed together, like
    -  // npm ls -glp, but only if there is one dash, and only if
    -  // all of the chars are single-char shorthands, and it's
    -  // not a match to some other abbrev.
    -  arg = arg.replace(/^-+/, '')
    -
    -  // if it's an exact known option, then don't go any further
    -  if (abbrevs[arg] === arg) {
    -    return null
    -  }
    -
    -  // if it's an exact known shortopt, same deal
    -  if (shorthands[arg]) {
    -    // make it an array, if it's a list of words
    -    if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    -      shorthands[arg] = shorthands[arg].split(/\s+/)
    -    }
    -
    -    return shorthands[arg]
    -  }
    -
    -  // first check to see if this arg is a set of single-char shorthands
    -  var singles = shorthands.___singles
    -  if (!singles) {
    -    singles = Object.keys(shorthands).filter(function (s) {
    -      return s.length === 1
    -    }).reduce(function (l, r) {
    -      l[r] = true
    -      return l
    -    }, {})
    -    shorthands.___singles = singles
    -    debug('shorthand singles', singles)
    -  }
    -
    -  var chrs = arg.split('').filter(function (c) {
    -    return singles[c]
    +function clean (data, types, typeDefs = exports.typeDefs) {
    +  return lib.clean(data, {
    +    types,
    +    typeDefs,
    +    invalidHandler: exports.invalidHandler,
       })
    -
    -  if (chrs.join('') === arg) {
    -    return chrs.map(function (c) {
    -      return shorthands[c]
    -    }).reduce(function (l, r) {
    -      return l.concat(r)
    -    }, [])
    -  }
    -
    -  // if it's an arg abbrev, and not a literal shorthand, then prefer the arg
    -  if (abbrevs[arg] && !shorthands[arg]) {
    -    return null
    -  }
    -
    -  // if it's an abbr for a shorthand, then use that
    -  if (shortAbbr[arg]) {
    -    arg = shortAbbr[arg]
    -  }
    -
    -  // make it an array, if it's a list of words
    -  if (shorthands[arg] && !Array.isArray(shorthands[arg])) {
    -    shorthands[arg] = shorthands[arg].split(/\s+/)
    -  }
    -
    -  return shorthands[arg]
     }
    diff --git a/deps/npm/node_modules/nopt/lib/type-defs.js b/deps/npm/node_modules/nopt/lib/type-defs.js
    new file mode 100644
    index 00000000000000..6acf5e0a5b9d46
    --- /dev/null
    +++ b/deps/npm/node_modules/nopt/lib/type-defs.js
    @@ -0,0 +1,91 @@
    +var url = require('url')
    +var path = require('path')
    +var Stream = require('stream').Stream
    +var os = require('os')
    +const debug = require('./debug')
    +
    +function validateString (data, k, val) {
    +  data[k] = String(val)
    +}
    +
    +function validatePath (data, k, val) {
    +  if (val === true) {
    +    return false
    +  }
    +  if (val === null) {
    +    return true
    +  }
    +
    +  val = String(val)
    +
    +  var isWin = process.platform === 'win32'
    +  var homePattern = isWin ? /^~(\/|\\)/ : /^~\//
    +  var home = os.homedir()
    +
    +  if (home && val.match(homePattern)) {
    +    data[k] = path.resolve(home, val.slice(2))
    +  } else {
    +    data[k] = path.resolve(val)
    +  }
    +  return true
    +}
    +
    +function validateNumber (data, k, val) {
    +  debug('validate Number %j %j %j', k, val, isNaN(val))
    +  if (isNaN(val)) {
    +    return false
    +  }
    +  data[k] = +val
    +}
    +
    +function validateDate (data, k, val) {
    +  var s = Date.parse(val)
    +  debug('validate Date %j %j %j', k, val, s)
    +  if (isNaN(s)) {
    +    return false
    +  }
    +  data[k] = new Date(val)
    +}
    +
    +function validateBoolean (data, k, val) {
    +  if (typeof val === 'string') {
    +    if (!isNaN(val)) {
    +      val = !!(+val)
    +    } else if (val === 'null' || val === 'false') {
    +      val = false
    +    } else {
    +      val = true
    +    }
    +  } else {
    +    val = !!val
    +  }
    +  data[k] = val
    +}
    +
    +function validateUrl (data, k, val) {
    +  // Changing this would be a breaking change in the npm cli
    +  /* eslint-disable-next-line node/no-deprecated-api */
    +  val = url.parse(String(val))
    +  if (!val.host) {
    +    return false
    +  }
    +  data[k] = val.href
    +}
    +
    +function validateStream (data, k, val) {
    +  if (!(val instanceof Stream)) {
    +    return false
    +  }
    +  data[k] = val
    +}
    +
    +module.exports = {
    +  String: { type: String, validate: validateString },
    +  Boolean: { type: Boolean, validate: validateBoolean },
    +  url: { type: url, validate: validateUrl },
    +  Number: { type: Number, validate: validateNumber },
    +  path: { type: path, validate: validatePath },
    +  Stream: { type: Stream, validate: validateStream },
    +  Date: { type: Date, validate: validateDate },
    +  Array: { type: Array },
    +}
    diff --git a/deps/npm/node_modules/nopt/package.json b/deps/npm/node_modules/nopt/package.json
    index f12fb3374b322a..a61cae4535f880 100644
    --- a/deps/npm/node_modules/nopt/package.json
    +++ b/deps/npm/node_modules/nopt/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "nopt",
    -  "version": "7.0.0",
    +  "version": "7.1.0",
       "description": "Option parsing for Node, supporting types, shorthands, etc. Used by npm.",
       "author": "GitHub Inc.",
       "main": "lib/nopt.js",
    @@ -26,14 +26,13 @@
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^4.0.0",
    -    "@npmcli/template-oss": "4.8.0",
    +    "@npmcli/template-oss": "4.12.0",
         "tap": "^16.3.0"
       },
       "tap": {
    -    "lines": 87,
    -    "functions": 91,
    -    "branches": 81,
    -    "statements": 87,
    +    "lines": 91,
    +    "branches": 87,
    +    "statements": 91,
         "nyc-arg": [
           "--exclude",
           "tap-snapshots/**"
    @@ -49,6 +48,6 @@
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
         "windowsCI": false,
    -    "version": "4.8.0"
    +    "version": "4.12.0"
       }
     }
    diff --git a/deps/npm/node_modules/npm-install-checks/lib/index.js b/deps/npm/node_modules/npm-install-checks/lib/index.js
    index 728e8cf3f86826..37530bb52d19a4 100644
    --- a/deps/npm/node_modules/npm-install-checks/lib/index.js
    +++ b/deps/npm/node_modules/npm-install-checks/lib/index.js
    @@ -20,6 +20,8 @@ const checkEngine = (target, npmVer, nodeVer, force = false) => {
       }
     }
     
    +const isMusl = (file) => file.includes('libc.musl-') || file.includes('ld-musl-')
    +
     const checkPlatform = (target, force = false) => {
       if (force) {
         return
    @@ -30,16 +32,35 @@ const checkPlatform = (target, force = false) => {
       const osOk = target.os ? checkList(platform, target.os) : true
       const cpuOk = target.cpu ? checkList(arch, target.cpu) : true
     
    -  if (!osOk || !cpuOk) {
    +  let libcOk = true
    +  let libcFamily = null
    +  if (target.libc) {
    +    // libc checks only work in linux, any value is a failure if we aren't
    +    if (platform !== 'linux') {
    +      libcOk = false
    +    } else {
    +      const report = process.report.getReport()
    +      if (report.header?.glibcRuntimeVersion) {
    +        libcFamily = 'glibc'
    +      } else if (Array.isArray(report.sharedObjects) && report.sharedObjects.some(isMusl)) {
    +        libcFamily = 'musl'
    +      }
    +      libcOk = libcFamily ? checkList(libcFamily, target.libc) : false
    +    }
    +  }
    +
    +  if (!osOk || !cpuOk || !libcOk) {
         throw Object.assign(new Error('Unsupported platform'), {
           pkgid: target._id,
           current: {
             os: platform,
             cpu: arch,
    +        libc: libcFamily,
           },
           required: {
             os: target.os,
             cpu: target.cpu,
    +        libc: target.libc,
           },
           code: 'EBADPLATFORM',
         })
    diff --git a/deps/npm/node_modules/npm-install-checks/package.json b/deps/npm/node_modules/npm-install-checks/package.json
    index 1003b107763d96..d9304ebf2a284d 100644
    --- a/deps/npm/node_modules/npm-install-checks/package.json
    +++ b/deps/npm/node_modules/npm-install-checks/package.json
    @@ -1,14 +1,14 @@
     {
       "name": "npm-install-checks",
    -  "version": "6.0.0",
    +  "version": "6.1.0",
       "description": "Check the engines and platform fields in package.json",
       "main": "lib/index.js",
       "dependencies": {
         "semver": "^7.1.1"
       },
       "devDependencies": {
    -    "@npmcli/eslint-config": "^3.0.1",
    -    "@npmcli/template-oss": "4.5.1",
    +    "@npmcli/eslint-config": "^4.0.0",
    +    "@npmcli/template-oss": "4.12.0",
         "tap": "^16.0.1"
       },
       "scripts": {
    @@ -39,7 +39,7 @@
       "author": "GitHub Inc.",
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.5.1"
    +    "version": "4.12.0"
       },
       "tap": {
         "nyc-arg": [
    diff --git a/deps/npm/node_modules/p-map/index.d.ts b/deps/npm/node_modules/p-map/index.d.ts
    deleted file mode 100644
    index bcbe0afcee88d9..00000000000000
    --- a/deps/npm/node_modules/p-map/index.d.ts
    +++ /dev/null
    @@ -1,67 +0,0 @@
    -declare namespace pMap {
    -	interface Options {
    -		/**
    -		Number of concurrently pending promises returned by `mapper`.
    -
    -		Must be an integer from 1 and up or `Infinity`.
    -
    -		@default Infinity
    -		*/
    -		readonly concurrency?: number;
    -
    -		/**
    -		When set to `false`, instead of stopping when a promise rejects, it will wait for all the promises to settle and then reject with an [aggregated error](https://github.com/sindresorhus/aggregate-error) containing all the errors from the rejected promises.
    -
    -		@default true
    -		*/
    -		readonly stopOnError?: boolean;
    -	}
    -
    -	/**
    -	Function which is called for every item in `input`. Expected to return a `Promise` or value.
    -
    -	@param element - Iterated element.
    -	@param index - Index of the element in the source array.
    -	*/
    -	type Mapper = (
    -		element: Element,
    -		index: number
    -	) => NewElement | Promise;
    -}
    -
    -/**
    -@param input - Iterated over concurrently in the `mapper` function.
    -@param mapper - Function which is called for every item in `input`. Expected to return a `Promise` or value.
    -@returns A `Promise` that is fulfilled when all promises in `input` and ones returned from `mapper` are fulfilled, or rejects if any of the promises reject. The fulfilled value is an `Array` of the fulfilled values returned from `mapper` in `input` order.
    -
    -@example
    -```
    -import pMap = require('p-map');
    -import got = require('got');
    -
    -const sites = [
    -	getWebsiteFromUsername('https://sindresorhus'), //=> Promise
    -	'https://ava.li',
    -	'https://github.com'
    -];
    -
    -(async () => {
    -	const mapper = async site => {
    -		const {requestUrl} = await got.head(site);
    -		return requestUrl;
    -	};
    -
    -	const result = await pMap(sites, mapper, {concurrency: 2});
    -
    -	console.log(result);
    -	//=> ['https://sindresorhus.com/', 'https://ava.li/', 'https://github.com/']
    -})();
    -```
    -*/
    -declare function pMap(
    -	input: Iterable,
    -	mapper: pMap.Mapper,
    -	options?: pMap.Options
    -): Promise;
    -
    -export = pMap;
    diff --git a/deps/npm/node_modules/parse-conflict-json/package.json b/deps/npm/node_modules/parse-conflict-json/package.json
    index 7b86df89edb398..32584d3e6401b3 100644
    --- a/deps/npm/node_modules/parse-conflict-json/package.json
    +++ b/deps/npm/node_modules/parse-conflict-json/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "parse-conflict-json",
    -  "version": "3.0.0",
    +  "version": "3.0.1",
       "description": "Parse a JSON string that has git merge conflicts, resolving if possible",
       "author": "GitHub Inc.",
       "license": "ISC",
    @@ -22,13 +22,13 @@
         ]
       },
       "devDependencies": {
    -    "@npmcli/eslint-config": "^3.0.1",
    -    "@npmcli/template-oss": "4.5.1",
    +    "@npmcli/eslint-config": "^4.0.0",
    +    "@npmcli/template-oss": "4.12.0",
         "tap": "^16.0.1"
       },
       "dependencies": {
         "json-parse-even-better-errors": "^3.0.0",
    -    "just-diff": "^5.0.1",
    +    "just-diff": "^6.0.0",
         "just-diff-apply": "^5.2.0"
       },
       "repository": {
    @@ -44,6 +44,6 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.5.1"
    +    "version": "4.12.0"
       }
     }
    diff --git a/deps/npm/node_modules/path-scurry/LICENSE.md b/deps/npm/node_modules/path-scurry/LICENSE.md
    new file mode 100644
    index 00000000000000..c5402b9577a8cd
    --- /dev/null
    +++ b/deps/npm/node_modules/path-scurry/LICENSE.md
    @@ -0,0 +1,55 @@
    +# Blue Oak Model License
    +
    +Version 1.0.0
    +
    +## Purpose
    +
    +This license gives everyone as much permission to work with
    +this software as possible, while protecting contributors
    +from liability.
    +
    +## Acceptance
    +
    +In order to receive this license, you must agree to its
    +rules.  The rules of this license are both obligations
    +under that agreement and conditions to your license.
    +You must not do anything with this software that triggers
    +a rule that you cannot or will not follow.
    +
    +## Copyright
    +
    +Each contributor licenses you to do everything with this
    +software that would otherwise infringe that contributor's
    +copyright in it.
    +
    +## Notices
    +
    +You must ensure that everyone who gets a copy of
    +any part of this software from you, with or without
    +changes, also gets the text of this license or a link to
    +.
    +
    +## Excuse
    +
    +If anyone notifies you in writing that you have not
    +complied with [Notices](#notices), you can keep your
    +license by taking all practical steps to comply within 30
    +days after the notice.  If you do not do so, your license
    +ends immediately.
    +
    +## Patent
    +
    +Each contributor licenses you to do everything with this
    +software that would otherwise infringe any patent claims
    +they can license or become able to license.
    +
    +## Reliability
    +
    +No contributor can revoke this license.
    +
    +## No Liability
    +
    +***As far as the law allows, this software comes as is,
    +without any warranty or condition, and no contributor
    +will be liable to anyone for any damages related to this
    +software or this license, under any kind of legal claim.***
    diff --git a/deps/npm/node_modules/path-scurry/dist/cjs/index.js b/deps/npm/node_modules/path-scurry/dist/cjs/index.js
    new file mode 100644
    index 00000000000000..54901bd8ae578c
    --- /dev/null
    +++ b/deps/npm/node_modules/path-scurry/dist/cjs/index.js
    @@ -0,0 +1,1865 @@
    +"use strict";
    +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    +    if (k2 === undefined) k2 = k;
    +    var desc = Object.getOwnPropertyDescriptor(m, k);
    +    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
    +      desc = { enumerable: true, get: function() { return m[k]; } };
    +    }
    +    Object.defineProperty(o, k2, desc);
    +}) : (function(o, m, k, k2) {
    +    if (k2 === undefined) k2 = k;
    +    o[k2] = m[k];
    +}));
    +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    +    Object.defineProperty(o, "default", { enumerable: true, value: v });
    +}) : function(o, v) {
    +    o["default"] = v;
    +});
    +var __importStar = (this && this.__importStar) || function (mod) {
    +    if (mod && mod.__esModule) return mod;
    +    var result = {};
    +    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    +    __setModuleDefault(result, mod);
    +    return result;
    +};
    +var __importDefault = (this && this.__importDefault) || function (mod) {
    +    return (mod && mod.__esModule) ? mod : { "default": mod };
    +};
    +Object.defineProperty(exports, "__esModule", { value: true });
    +exports.PathScurry = exports.Path = exports.PathScurryDarwin = exports.PathScurryPosix = exports.PathScurryWin32 = exports.PathScurryBase = exports.PathPosix = exports.PathWin32 = exports.PathBase = exports.ChildrenCache = exports.ResolveCache = void 0;
    +const lru_cache_1 = __importDefault(require("lru-cache"));
    +const path_1 = require("path");
    +const url_1 = require("url");
    +const actualFS = __importStar(require("fs"));
    +const fs_1 = require("fs");
    +const realpathSync = fs_1.realpathSync.native;
    +// TODO: test perf of fs/promises realpath vs realpathCB,
    +// since the promises one uses realpath.native
    +const promises_1 = require("fs/promises");
    +const minipass_1 = __importDefault(require("minipass"));
    +const defaultFS = {
    +    lstatSync: fs_1.lstatSync,
    +    readdir: fs_1.readdir,
    +    readdirSync: fs_1.readdirSync,
    +    readlinkSync: fs_1.readlinkSync,
    +    realpathSync,
    +    promises: {
    +        lstat: promises_1.lstat,
    +        readdir: promises_1.readdir,
    +        readlink: promises_1.readlink,
    +        realpath: promises_1.realpath,
    +    },
    +};
    +// if they just gave us require('fs') then use our default
    +const fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS
    +    ? defaultFS
    +    : {
    +        ...defaultFS,
    +        ...fsOption,
    +        promises: {
    +            ...defaultFS.promises,
    +            ...(fsOption.promises || {}),
    +        },
    +    };
    +// turn something like //?/c:/ into c:\
    +const uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
    +const uncToDrive = (rootPath) => rootPath.replace(/\//g, '\\').replace(uncDriveRegexp, '$1\\');
    +// windows paths are separated by either / or \
    +const eitherSep = /[\\\/]/;
    +const UNKNOWN = 0; // may not even exist, for all we know
    +const IFIFO = 0b0001;
    +const IFCHR = 0b0010;
    +const IFDIR = 0b0100;
    +const IFBLK = 0b0110;
    +const IFREG = 0b1000;
    +const IFLNK = 0b1010;
    +const IFSOCK = 0b1100;
    +const IFMT = 0b1111;
    +// mask to unset low 4 bits
    +const IFMT_UNKNOWN = ~IFMT;
    +// set after successfully calling readdir() and getting entries.
    +const READDIR_CALLED = 16;
    +// set after a successful lstat()
    +const LSTAT_CALLED = 32;
    +// set if an entry (or one of its parents) is definitely not a dir
    +const ENOTDIR = 64;
    +// set if an entry (or one of its parents) does not exist
    +// (can also be set on lstat errors like EACCES or ENAMETOOLONG)
    +const ENOENT = 128;
    +// cannot have child entries -- also verify &IFMT is either IFDIR or IFLNK
    +// set if we fail to readlink
    +const ENOREADLINK = 256;
    +// set if we know realpath() will fail
    +const ENOREALPATH = 512;
    +const ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
    +const TYPEMASK = 1023;
    +const entToType = (s) => s.isFile()
    +    ? IFREG
    +    : s.isDirectory()
    +        ? IFDIR
    +        : s.isSymbolicLink()
    +            ? IFLNK
    +            : s.isCharacterDevice()
    +                ? IFCHR
    +                : s.isBlockDevice()
    +                    ? IFBLK
    +                    : s.isSocket()
    +                        ? IFSOCK
    +                        : s.isFIFO()
    +                            ? IFIFO
    +                            : UNKNOWN;
    +// normalize unicode path names
    +const normalizeCache = new Map();
    +const normalize = (s) => {
    +    const c = normalizeCache.get(s);
    +    if (c)
    +        return c;
    +    const n = s.normalize('NFKD');
    +    normalizeCache.set(s, n);
    +    return n;
    +};
    +const normalizeNocaseCache = new Map();
    +const normalizeNocase = (s) => {
    +    const c = normalizeNocaseCache.get(s);
    +    if (c)
    +        return c;
    +    const n = normalize(s.toLowerCase());
    +    normalizeNocaseCache.set(s, n);
    +    return n;
    +};
    +/**
    + * An LRUCache for storing resolved path strings or Path objects.
    + * @internal
    + */
    +class ResolveCache extends lru_cache_1.default {
    +    constructor() {
    +        super({ max: 256 });
    +    }
    +}
    +exports.ResolveCache = ResolveCache;
    +// In order to prevent blowing out the js heap by allocating hundreds of
    +// thousands of Path entries when walking extremely large trees, the "children"
    +// in this tree are represented by storing an array of Path entries in an
    +// LRUCache, indexed by the parent.  At any time, Path.children() may return an
    +// empty array, indicating that it doesn't know about any of its children, and
    +// thus has to rebuild that cache.  This is fine, it just means that we don't
    +// benefit as much from having the cached entries, but huge directory walks
    +// don't blow out the stack, and smaller ones are still as fast as possible.
    +//
    +//It does impose some complexity when building up the readdir data, because we
    +//need to pass a reference to the children array that we started with.
    +/**
    + * an LRUCache for storing child entries.
    + * @internal
    + */
    +class ChildrenCache extends lru_cache_1.default {
    +    constructor(maxSize = 16 * 1024) {
    +        super({
    +            maxSize,
    +            // parent + children
    +            sizeCalculation: a => a.length + 1,
    +        });
    +    }
    +}
    +exports.ChildrenCache = ChildrenCache;
    +/**
    + * Path objects are sort of like a super-powered
    + * {@link https://nodejs.org/docs/latest/api/fs.html#class-fsdirent fs.Dirent}
    + *
    + * Each one represents a single filesystem entry on disk, which may or may not
    + * exist. It includes methods for reading various types of information via
    + * lstat, readlink, and readdir, and caches all information to the greatest
    + * degree possible.
    + *
    + * Note that fs operations that would normally throw will instead return an
    + * "empty" value. This is in order to prevent excessive overhead from error
    + * stack traces.
    + */
    +class PathBase {
    +    /**
    +     * the basename of this path
    +     *
    +     * **Important**: *always* test the path name against any test string
    +     * usingthe {@link isNamed} method, and not by directly comparing this
    +     * string. Otherwise, unicode path strings that the system sees as identical
    +     * will not be properly treated as the same path, leading to incorrect
    +     * behavior and possible security issues.
    +     */
    +    name;
    +    /**
    +     * the Path entry corresponding to the path root.
    +     *
    +     * @internal
    +     */
    +    root;
    +    /**
    +     * All roots found within the current PathScurry family
    +     *
    +     * @internal
    +     */
    +    roots;
    +    /**
    +     * a reference to the parent path, or undefined in the case of root entries
    +     *
    +     * @internal
    +     */
    +    parent;
    +    /**
    +     * boolean indicating whether paths are compared case-insensitively
    +     * @internal
    +     */
    +    nocase;
    +    // potential default fs override
    +    #fs;
    +    // Stats fields
    +    #dev;
    +    get dev() {
    +        return this.#dev;
    +    }
    +    #mode;
    +    get mode() {
    +        return this.#mode;
    +    }
    +    #nlink;
    +    get nlink() {
    +        return this.#nlink;
    +    }
    +    #uid;
    +    get uid() {
    +        return this.#uid;
    +    }
    +    #gid;
    +    get gid() {
    +        return this.#gid;
    +    }
    +    #rdev;
    +    get rdev() {
    +        return this.#rdev;
    +    }
    +    #blksize;
    +    get blksize() {
    +        return this.#blksize;
    +    }
    +    #ino;
    +    get ino() {
    +        return this.#ino;
    +    }
    +    #size;
    +    get size() {
    +        return this.#size;
    +    }
    +    #blocks;
    +    get blocks() {
    +        return this.#blocks;
    +    }
    +    #atimeMs;
    +    get atimeMs() {
    +        return this.#atimeMs;
    +    }
    +    #mtimeMs;
    +    get mtimeMs() {
    +        return this.#mtimeMs;
    +    }
    +    #ctimeMs;
    +    get ctimeMs() {
    +        return this.#ctimeMs;
    +    }
    +    #birthtimeMs;
    +    get birthtimeMs() {
    +        return this.#birthtimeMs;
    +    }
    +    #atime;
    +    get atime() {
    +        return this.#atime;
    +    }
    +    #mtime;
    +    get mtime() {
    +        return this.#mtime;
    +    }
    +    #ctime;
    +    get ctime() {
    +        return this.#ctime;
    +    }
    +    #birthtime;
    +    get birthtime() {
    +        return this.#birthtime;
    +    }
    +    #matchName;
    +    #depth;
    +    #fullpath;
    +    #relative;
    +    #type;
    +    #children;
    +    #linkTarget;
    +    #realpath;
    +    /**
    +     * Do not create new Path objects directly.  They should always be accessed
    +     * via the PathScurry class or other methods on the Path class.
    +     *
    +     * @internal
    +     */
    +    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    +        this.name = name;
    +        this.#matchName = nocase ? normalizeNocase(name) : normalize(name);
    +        this.#type = type & TYPEMASK;
    +        this.nocase = nocase;
    +        this.roots = roots;
    +        this.root = root || this;
    +        this.#children = children;
    +        this.#fullpath = opts.fullpath;
    +        this.#relative = opts.relative;
    +        this.parent = opts.parent;
    +        if (this.parent) {
    +            this.#fs = this.parent.#fs;
    +        }
    +        else {
    +            this.#fs = fsFromOption(opts.fs);
    +        }
    +    }
    +    /**
    +     * Returns the depth of the Path object from its root.
    +     *
    +     * For example, a path at `/foo/bar` would have a depth of 2.
    +     */
    +    depth() {
    +        if (this.#depth !== undefined)
    +            return this.#depth;
    +        if (!this.parent)
    +            return (this.#depth = 0);
    +        return (this.#depth = this.parent.depth() + 1);
    +    }
    +    /**
    +     * @internal
    +     */
    +    childrenCache() {
    +        return this.#children;
    +    }
    +    /**
    +     * Get the Path object referenced by the string path, resolved from this Path
    +     */
    +    resolve(path) {
    +        if (!path) {
    +            return this;
    +        }
    +        const rootPath = this.getRootString(path);
    +        const dir = path.substring(rootPath.length);
    +        const dirParts = dir.split(this.splitSep);
    +        const result = rootPath
    +            ? this.getRoot(rootPath).#resolveParts(dirParts)
    +            : this.#resolveParts(dirParts);
    +        return result;
    +    }
    +    #resolveParts(dirParts) {
    +        let p = this;
    +        for (const part of dirParts) {
    +            p = p.child(part);
    +        }
    +        return p;
    +    }
    +    /**
    +     * Returns the cached children Path objects, if still available.  If they
    +     * have fallen out of the cache, then returns an empty array, and resets the
    +     * READDIR_CALLED bit, so that future calls to readdir() will require an fs
    +     * lookup.
    +     *
    +     * @internal
    +     */
    +    children() {
    +        const cached = this.#children.get(this);
    +        if (cached) {
    +            return cached;
    +        }
    +        const children = Object.assign([], { provisional: 0 });
    +        this.#children.set(this, children);
    +        this.#type &= ~READDIR_CALLED;
    +        return children;
    +    }
    +    /**
    +     * Resolves a path portion and returns or creates the child Path.
    +     *
    +     * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
    +     * `'..'`.
    +     *
    +     * This should not be called directly.  If `pathPart` contains any path
    +     * separators, it will lead to unsafe undefined behavior.
    +     *
    +     * Use `Path.resolve()` instead.
    +     *
    +     * @internal
    +     */
    +    child(pathPart, opts) {
    +        if (pathPart === '' || pathPart === '.') {
    +            return this;
    +        }
    +        if (pathPart === '..') {
    +            return this.parent || this;
    +        }
    +        // find the child
    +        const children = this.children();
    +        const name = this.nocase
    +            ? normalizeNocase(pathPart)
    +            : normalize(pathPart);
    +        for (const p of children) {
    +            if (p.#matchName === name) {
    +                return p;
    +            }
    +        }
    +        // didn't find it, create provisional child, since it might not
    +        // actually exist.  If we know the parent isn't a dir, then
    +        // in fact it CAN'T exist.
    +        const s = this.parent ? this.sep : '';
    +        const fullpath = this.#fullpath
    +            ? this.#fullpath + s + pathPart
    +            : undefined;
    +        const pchild = this.newChild(pathPart, UNKNOWN, {
    +            ...opts,
    +            parent: this,
    +            fullpath,
    +        });
    +        if (!this.canReaddir()) {
    +            pchild.#type |= ENOENT;
    +        }
    +        // don't have to update provisional, because if we have real children,
    +        // then provisional is set to children.length, otherwise a lower number
    +        children.push(pchild);
    +        return pchild;
    +    }
    +    /**
    +     * The relative path from the cwd. If it does not share an ancestor with
    +     * the cwd, then this ends up being equivalent to the fullpath()
    +     */
    +    // TODO: instead of taking a param here, set it to '' in the constructor
    +    // for the CWD, and set it to this.name for any roots.
    +    relative() {
    +        if (this.#relative !== undefined) {
    +            return this.#relative;
    +        }
    +        const name = this.name;
    +        const p = this.parent;
    +        if (!p) {
    +            return (this.#relative = this.name);
    +        }
    +        const pv = p.relative();
    +        const rp = pv + (!pv || !p.parent ? '' : this.sep) + name;
    +        return (this.#relative = rp);
    +    }
    +    /**
    +     * The fully resolved path string for this Path entry
    +     */
    +    fullpath() {
    +        if (this.#fullpath !== undefined) {
    +            return this.#fullpath;
    +        }
    +        const name = this.name;
    +        const p = this.parent;
    +        if (!p) {
    +            return (this.#fullpath = this.name);
    +        }
    +        const pv = p.fullpath();
    +        const fp = pv + (!p.parent ? '' : this.sep) + name;
    +        return (this.#fullpath = fp);
    +    }
    +    /**
    +     * Is the Path of an unknown type?
    +     *
    +     * Note that we might know *something* about it if there has been a previous
    +     * filesystem operation, for example that it does not exist, or is not a
    +     * link, or whether it has child entries.
    +     */
    +    isUnknown() {
    +        return (this.#type & IFMT) === UNKNOWN;
    +    }
    +    /**
    +     * Is the Path a regular file?
    +     */
    +    isFile() {
    +        return (this.#type & IFMT) === IFREG;
    +    }
    +    /**
    +     * Is the Path a directory?
    +     */
    +    isDirectory() {
    +        return (this.#type & IFMT) === IFDIR;
    +    }
    +    /**
    +     * Is the path a character device?
    +     */
    +    isCharacterDevice() {
    +        return (this.#type & IFMT) === IFCHR;
    +    }
    +    /**
    +     * Is the path a block device?
    +     */
    +    isBlockDevice() {
    +        return (this.#type & IFMT) === IFBLK;
    +    }
    +    /**
    +     * Is the path a FIFO pipe?
    +     */
    +    isFIFO() {
    +        return (this.#type & IFMT) === IFIFO;
    +    }
    +    /**
    +     * Is the path a socket?
    +     */
    +    isSocket() {
    +        return (this.#type & IFMT) === IFSOCK;
    +    }
    +    /**
    +     * Is the path a symbolic link?
    +     */
    +    isSymbolicLink() {
    +        return (this.#type & IFLNK) === IFLNK;
    +    }
    +    /**
    +     * Return the entry if it has been subject of a successful lstat, or
    +     * undefined otherwise.
    +     *
    +     * Does not read the filesystem, so an undefined result *could* simply
    +     * mean that we haven't called lstat on it.
    +     */
    +    lstatCached() {
    +        return this.#type & LSTAT_CALLED ? this : undefined;
    +    }
    +    /**
    +     * Return the cached link target if the entry has been the subject of a
    +     * successful readlink, or undefined otherwise.
    +     *
    +     * Does not read the filesystem, so an undefined result *could* just mean we
    +     * don't have any cached data. Only use it if you are very sure that a
    +     * readlink() has been called at some point.
    +     */
    +    readlinkCached() {
    +        return this.#linkTarget;
    +    }
    +    /**
    +     * Returns the cached realpath target if the entry has been the subject
    +     * of a successful realpath, or undefined otherwise.
    +     *
    +     * Does not read the filesystem, so an undefined result *could* just mean we
    +     * don't have any cached data. Only use it if you are very sure that a
    +     * realpath() has been called at some point.
    +     */
    +    realpathCached() {
    +        return this.#realpath;
    +    }
    +    /**
    +     * Returns the cached child Path entries array if the entry has been the
    +     * subject of a successful readdir(), or [] otherwise.
    +     *
    +     * Does not read the filesystem, so an empty array *could* just mean we
    +     * don't have any cached data. Only use it if you are very sure that a
    +     * readdir() has been called recently enough to still be valid.
    +     */
    +    readdirCached() {
    +        const children = this.children();
    +        return children.slice(0, children.provisional);
    +    }
    +    /**
    +     * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
    +     * any indication that readlink will definitely fail.
    +     *
    +     * Returns false if the path is known to not be a symlink, if a previous
    +     * readlink failed, or if the entry does not exist.
    +     */
    +    canReadlink() {
    +        if (this.#linkTarget)
    +            return true;
    +        if (!this.parent)
    +            return false;
    +        // cases where it cannot possibly succeed
    +        const ifmt = this.#type & IFMT;
    +        return !((ifmt !== UNKNOWN && ifmt !== IFLNK) ||
    +            this.#type & ENOREADLINK ||
    +            this.#type & ENOENT);
    +    }
    +    /**
    +     * Return true if readdir has previously been successfully called on this
    +     * path, indicating that cachedReaddir() is likely valid.
    +     */
    +    calledReaddir() {
    +        return !!(this.#type & READDIR_CALLED);
    +    }
    +    /**
    +     * Returns true if the path is known to not exist. That is, a previous lstat
    +     * or readdir failed to verify its existence when that would have been
    +     * expected, or a parent entry was marked either enoent or enotdir.
    +     */
    +    isENOENT() {
    +        return !!(this.#type & ENOENT);
    +    }
    +    /**
    +     * Return true if the path is a match for the given path name.  This handles
    +     * case sensitivity and unicode normalization.
    +     *
    +     * Note: even on case-sensitive systems, it is **not** safe to test the
    +     * equality of the `.name` property to determine whether a given pathname
    +     * matches, due to unicode normalization mismatches.
    +     *
    +     * Always use this method instead of testing the `path.name` property
    +     * directly.
    +     */
    +    isNamed(n) {
    +        return !this.nocase
    +            ? this.#matchName === normalize(n)
    +            : this.#matchName === normalizeNocase(n);
    +    }
    +    /**
    +     * Return the Path object corresponding to the target of a symbolic link.
    +     *
    +     * If the Path is not a symbolic link, or if the readlink call fails for any
    +     * reason, `undefined` is returned.
    +     *
    +     * Result is cached, and thus may be outdated if the filesystem is mutated.
    +     */
    +    async readlink() {
    +        const target = this.#linkTarget;
    +        if (target) {
    +            return target;
    +        }
    +        if (!this.canReadlink()) {
    +            return undefined;
    +        }
    +        /* c8 ignore start */
    +        // already covered by the canReadlink test, here for ts grumples
    +        if (!this.parent) {
    +            return undefined;
    +        }
    +        /* c8 ignore stop */
    +        try {
    +            const read = await this.#fs.promises.readlink(this.fullpath());
    +            const linkTarget = this.parent.resolve(read);
    +            if (linkTarget) {
    +                return (this.#linkTarget = linkTarget);
    +            }
    +        }
    +        catch (er) {
    +            this.#readlinkFail(er.code);
    +            return undefined;
    +        }
    +    }
    +    /**
    +     * Synchronous {@link PathBase.readlink}
    +     */
    +    readlinkSync() {
    +        const target = this.#linkTarget;
    +        if (target) {
    +            return target;
    +        }
    +        if (!this.canReadlink()) {
    +            return undefined;
    +        }
    +        /* c8 ignore start */
    +        // already covered by the canReadlink test, here for ts grumples
    +        if (!this.parent) {
    +            return undefined;
    +        }
    +        /* c8 ignore stop */
    +        try {
    +            const read = this.#fs.readlinkSync(this.fullpath());
    +            const linkTarget = this.parent.resolve(read);
    +            if (linkTarget) {
    +                return (this.#linkTarget = linkTarget);
    +            }
    +        }
    +        catch (er) {
    +            this.#readlinkFail(er.code);
    +            return undefined;
    +        }
    +    }
    +    #readdirSuccess(children) {
    +        // succeeded, mark readdir called bit
    +        this.#type |= READDIR_CALLED;
    +        // mark all remaining provisional children as ENOENT
    +        for (let p = children.provisional; p < children.length; p++) {
    +            children[p].#markENOENT();
    +        }
    +    }
    +    #markENOENT() {
    +        // mark as UNKNOWN and ENOENT
    +        if (this.#type & ENOENT)
    +            return;
    +        this.#type = (this.#type | ENOENT) & IFMT_UNKNOWN;
    +        this.#markChildrenENOENT();
    +    }
    +    #markChildrenENOENT() {
    +        // all children are provisional and do not exist
    +        const children = this.children();
    +        children.provisional = 0;
    +        for (const p of children) {
    +            p.#markENOENT();
    +        }
    +    }
    +    #markENOREALPATH() {
    +        this.#type |= ENOREALPATH;
    +        this.#markENOTDIR();
    +    }
    +    // save the information when we know the entry is not a dir
    +    #markENOTDIR() {
    +        // entry is not a directory, so any children can't exist.
    +        // this *should* be impossible, since any children created
    +        // after it's been marked ENOTDIR should be marked ENOENT,
    +        // so it won't even get to this point.
    +        /* c8 ignore start */
    +        if (this.#type & ENOTDIR)
    +            return;
    +        /* c8 ignore stop */
    +        let t = this.#type;
    +        // this could happen if we stat a dir, then delete it,
    +        // then try to read it or one of its children.
    +        if ((t & IFMT) === IFDIR)
    +            t &= IFMT_UNKNOWN;
    +        this.#type = t | ENOTDIR;
    +        this.#markChildrenENOENT();
    +    }
    +    #readdirFail(code = '') {
    +        // markENOTDIR and markENOENT also set provisional=0
    +        if (code === 'ENOTDIR' || code === 'EPERM') {
    +            this.#markENOTDIR();
    +        }
    +        else if (code === 'ENOENT') {
    +            this.#markENOENT();
    +        }
    +        else {
    +            this.children().provisional = 0;
    +        }
    +    }
    +    #lstatFail(code = '') {
    +        // Windows just raises ENOENT in this case, disable for win CI
    +        /* c8 ignore start */
    +        if (code === 'ENOTDIR') {
    +            // already know it has a parent by this point
    +            const p = this.parent;
    +            p.#markENOTDIR();
    +        }
    +        else if (code === 'ENOENT') {
    +            /* c8 ignore stop */
    +            this.#markENOENT();
    +        }
    +    }
    +    #readlinkFail(code = '') {
    +        let ter = this.#type;
    +        ter |= ENOREADLINK;
    +        if (code === 'ENOENT')
    +            ter |= ENOENT;
    +        // windows gets a weird error when you try to readlink a file
    +        if (code === 'EINVAL' || code === 'UNKNOWN') {
    +            // exists, but not a symlink, we don't know WHAT it is, so remove
    +            // all IFMT bits.
    +            ter &= IFMT_UNKNOWN;
    +        }
    +        this.#type = ter;
    +        // windows just gets ENOENT in this case.  We do cover the case,
    +        // just disabled because it's impossible on Windows CI
    +        /* c8 ignore start */
    +        if (code === 'ENOTDIR' && this.parent) {
    +            this.parent.#markENOTDIR();
    +        }
    +        /* c8 ignore stop */
    +    }
    +    #readdirAddChild(e, c) {
    +        return (this.#readdirMaybePromoteChild(e, c) ||
    +            this.#readdirAddNewChild(e, c));
    +    }
    +    #readdirAddNewChild(e, c) {
    +        // alloc new entry at head, so it's never provisional
    +        const type = entToType(e);
    +        const child = this.newChild(e.name, type, { parent: this });
    +        const ifmt = child.#type & IFMT;
    +        if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
    +            child.#type |= ENOTDIR;
    +        }
    +        c.unshift(child);
    +        c.provisional++;
    +        return child;
    +    }
    +    #readdirMaybePromoteChild(e, c) {
    +        for (let p = c.provisional; p < c.length; p++) {
    +            const pchild = c[p];
    +            const name = this.nocase
    +                ? normalizeNocase(e.name)
    +                : normalize(e.name);
    +            if (name !== pchild.#matchName) {
    +                continue;
    +            }
    +            return this.#readdirPromoteChild(e, pchild, p, c);
    +        }
    +    }
    +    #readdirPromoteChild(e, p, index, c) {
    +        const v = p.name;
    +        // retain any other flags, but set ifmt from dirent
    +        p.#type = (p.#type & IFMT_UNKNOWN) | entToType(e);
    +        // case sensitivity fixing when we learn the true name.
    +        if (v !== e.name)
    +            p.name = e.name;
    +        // just advance provisional index (potentially off the list),
    +        // otherwise we have to splice/pop it out and re-insert at head
    +        if (index !== c.provisional) {
    +            if (index === c.length - 1)
    +                c.pop();
    +            else
    +                c.splice(index, 1);
    +            c.unshift(p);
    +        }
    +        c.provisional++;
    +        return p;
    +    }
    +    /**
    +     * Call lstat() on this Path, and update all known information that can be
    +     * determined.
    +     *
    +     * Note that unlike `fs.lstat()`, the returned value does not contain some
    +     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    +     * information is required, you will need to call `fs.lstat` yourself.
    +     *
    +     * If the Path refers to a nonexistent file, or if the lstat call fails for
    +     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    +     * returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     */
    +    async lstat() {
    +        if ((this.#type & ENOENT) === 0) {
    +            try {
    +                this.#applyStat(await this.#fs.promises.lstat(this.fullpath()));
    +                return this;
    +            }
    +            catch (er) {
    +                this.#lstatFail(er.code);
    +            }
    +        }
    +    }
    +    /**
    +     * synchronous {@link PathBase.lstat}
    +     */
    +    lstatSync() {
    +        if ((this.#type & ENOENT) === 0) {
    +            try {
    +                this.#applyStat(this.#fs.lstatSync(this.fullpath()));
    +                return this;
    +            }
    +            catch (er) {
    +                this.#lstatFail(er.code);
    +            }
    +        }
    +    }
    +    #applyStat(st) {
    +        const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid, } = st;
    +        this.#atime = atime;
    +        this.#atimeMs = atimeMs;
    +        this.#birthtime = birthtime;
    +        this.#birthtimeMs = birthtimeMs;
    +        this.#blksize = blksize;
    +        this.#blocks = blocks;
    +        this.#ctime = ctime;
    +        this.#ctimeMs = ctimeMs;
    +        this.#dev = dev;
    +        this.#gid = gid;
    +        this.#ino = ino;
    +        this.#mode = mode;
    +        this.#mtime = mtime;
    +        this.#mtimeMs = mtimeMs;
    +        this.#nlink = nlink;
    +        this.#rdev = rdev;
    +        this.#size = size;
    +        this.#uid = uid;
    +        const ifmt = entToType(st);
    +        // retain any other flags, but set the ifmt
    +        this.#type = (this.#type & IFMT_UNKNOWN) | ifmt | LSTAT_CALLED;
    +        if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
    +            this.#type |= ENOTDIR;
    +        }
    +    }
    +    #onReaddirCB = [];
    +    #readdirCBInFlight = false;
    +    #callOnReaddirCB(children) {
    +        this.#readdirCBInFlight = false;
    +        const cbs = this.#onReaddirCB.slice();
    +        this.#onReaddirCB.length = 0;
    +        cbs.forEach(cb => cb(null, children));
    +    }
    +    /**
    +     * Standard node-style callback interface to get list of directory entries.
    +     *
    +     * If the Path cannot or does not contain any children, then an empty array
    +     * is returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     *
    +     * @param cb The callback called with (er, entries).  Note that the `er`
    +     * param is somewhat extraneous, as all readdir() errors are handled and
    +     * simply result in an empty set of entries being returned.
    +     * @param allowZalgo Boolean indicating that immediately known results should
    +     * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
    +     * zalgo at your peril, the dark pony lord is devious and unforgiving.
    +     */
    +    readdirCB(cb, allowZalgo = false) {
    +        if (!this.canReaddir()) {
    +            if (allowZalgo)
    +                cb(null, []);
    +            else
    +                queueMicrotask(() => cb(null, []));
    +            return;
    +        }
    +        const children = this.children();
    +        if (this.calledReaddir()) {
    +            const c = children.slice(0, children.provisional);
    +            if (allowZalgo)
    +                cb(null, c);
    +            else
    +                queueMicrotask(() => cb(null, c));
    +            return;
    +        }
    +        // don't have to worry about zalgo at this point.
    +        this.#onReaddirCB.push(cb);
    +        if (this.#readdirCBInFlight) {
    +            return;
    +        }
    +        this.#readdirCBInFlight = true;
    +        // else read the directory, fill up children
    +        // de-provisionalize any provisional children.
    +        const fullpath = this.fullpath();
    +        this.#fs.readdir(fullpath, { withFileTypes: true }, (er, entries) => {
    +            if (er) {
    +                this.#readdirFail(er.code);
    +                children.provisional = 0;
    +            }
    +            else {
    +                // if we didn't get an error, we always get entries.
    +                //@ts-ignore
    +                for (const e of entries) {
    +                    this.#readdirAddChild(e, children);
    +                }
    +                this.#readdirSuccess(children);
    +            }
    +            this.#callOnReaddirCB(children.slice(0, children.provisional));
    +            return;
    +        });
    +    }
    +    #asyncReaddirInFlight;
    +    /**
    +     * Return an array of known child entries.
    +     *
    +     * If the Path cannot or does not contain any children, then an empty array
    +     * is returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     */
    +    async readdir() {
    +        if (!this.canReaddir()) {
    +            return [];
    +        }
    +        const children = this.children();
    +        if (this.calledReaddir()) {
    +            return children.slice(0, children.provisional);
    +        }
    +        // else read the directory, fill up children
    +        // de-provisionalize any provisional children.
    +        const fullpath = this.fullpath();
    +        if (this.#asyncReaddirInFlight) {
    +            await this.#asyncReaddirInFlight;
    +        }
    +        else {
    +            /* c8 ignore start */
    +            let resolve = () => { };
    +            /* c8 ignore stop */
    +            this.#asyncReaddirInFlight = new Promise(res => (resolve = res));
    +            try {
    +                for (const e of await this.#fs.promises.readdir(fullpath, {
    +                    withFileTypes: true,
    +                })) {
    +                    this.#readdirAddChild(e, children);
    +                }
    +                this.#readdirSuccess(children);
    +            }
    +            catch (er) {
    +                this.#readdirFail(er.code);
    +                children.provisional = 0;
    +            }
    +            this.#asyncReaddirInFlight = undefined;
    +            resolve();
    +        }
    +        return children.slice(0, children.provisional);
    +    }
    +    /**
    +     * synchronous {@link PathBase.readdir}
    +     */
    +    readdirSync() {
    +        if (!this.canReaddir()) {
    +            return [];
    +        }
    +        const children = this.children();
    +        if (this.calledReaddir()) {
    +            return children.slice(0, children.provisional);
    +        }
    +        // else read the directory, fill up children
    +        // de-provisionalize any provisional children.
    +        const fullpath = this.fullpath();
    +        try {
    +            for (const e of this.#fs.readdirSync(fullpath, {
    +                withFileTypes: true,
    +            })) {
    +                this.#readdirAddChild(e, children);
    +            }
    +            this.#readdirSuccess(children);
    +        }
    +        catch (er) {
    +            this.#readdirFail(er.code);
    +            children.provisional = 0;
    +        }
    +        return children.slice(0, children.provisional);
    +    }
    +    canReaddir() {
    +        if (this.#type & ENOCHILD)
    +            return false;
    +        const ifmt = IFMT & this.#type;
    +        // we always set ENOTDIR when setting IFMT, so should be impossible
    +        /* c8 ignore start */
    +        if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
    +            return false;
    +        }
    +        /* c8 ignore stop */
    +        return true;
    +    }
    +    shouldWalk(dirs, walkFilter) {
    +        return ((this.#type & IFDIR) === IFDIR &&
    +            !(this.#type & ENOCHILD) &&
    +            !dirs.has(this) &&
    +            (!walkFilter || walkFilter(this)));
    +    }
    +    /**
    +     * Return the Path object corresponding to path as resolved
    +     * by realpath(3).
    +     *
    +     * If the realpath call fails for any reason, `undefined` is returned.
    +     *
    +     * Result is cached, and thus may be outdated if the filesystem is mutated.
    +     * On success, returns a Path object.
    +     */
    +    async realpath() {
    +        if (this.#realpath)
    +            return this.#realpath;
    +        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    +            return undefined;
    +        try {
    +            const rp = await this.#fs.promises.realpath(this.fullpath());
    +            return (this.#realpath = this.resolve(rp));
    +        }
    +        catch (_) {
    +            this.#markENOREALPATH();
    +        }
    +    }
    +    /**
    +     * Synchronous {@link realpath}
    +     */
    +    realpathSync() {
    +        if (this.#realpath)
    +            return this.#realpath;
    +        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    +            return undefined;
    +        try {
    +            const rp = this.#fs.realpathSync(this.fullpath());
    +            return (this.#realpath = this.resolve(rp));
    +        }
    +        catch (_) {
    +            this.#markENOREALPATH();
    +        }
    +    }
    +}
    +exports.PathBase = PathBase;
    +/**
    + * Path class used on win32 systems
    + *
    + * Uses `'\\'` as the path separator for returned paths, either `'\\'` or `'/'`
    + * as the path separator for parsing paths.
    + */
    +class PathWin32 extends PathBase {
    +    /**
    +     * Separator for generating path strings.
    +     */
    +    sep = '\\';
    +    /**
    +     * Separator for parsing path strings.
    +     */
    +    splitSep = eitherSep;
    +    /**
    +     * Do not create new Path objects directly.  They should always be accessed
    +     * via the PathScurry class or other methods on the Path class.
    +     *
    +     * @internal
    +     */
    +    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    +        super(name, type, root, roots, nocase, children, opts);
    +    }
    +    /**
    +     * @internal
    +     */
    +    newChild(name, type = UNKNOWN, opts = {}) {
    +        return new PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRootString(path) {
    +        return path_1.win32.parse(path).root;
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRoot(rootPath) {
    +        rootPath = uncToDrive(rootPath.toUpperCase());
    +        if (rootPath === this.root.name) {
    +            return this.root;
    +        }
    +        // ok, not that one, check if it matches another we know about
    +        for (const [compare, root] of Object.entries(this.roots)) {
    +            if (this.sameRoot(rootPath, compare)) {
    +                return (this.roots[rootPath] = root);
    +            }
    +        }
    +        // otherwise, have to create a new one.
    +        return (this.roots[rootPath] = new PathScurryWin32(rootPath, this).root);
    +    }
    +    /**
    +     * @internal
    +     */
    +    sameRoot(rootPath, compare = this.root.name) {
    +        // windows can (rarely) have case-sensitive filesystem, but
    +        // UNC and drive letters are always case-insensitive, and canonically
    +        // represented uppercase.
    +        rootPath = rootPath
    +            .toUpperCase()
    +            .replace(/\//g, '\\')
    +            .replace(uncDriveRegexp, '$1\\');
    +        return rootPath === compare;
    +    }
    +}
    +exports.PathWin32 = PathWin32;
    +/**
    + * Path class used on all posix systems.
    + *
    + * Uses `'/'` as the path separator.
    + */
    +class PathPosix extends PathBase {
    +    /**
    +     * separator for parsing path strings
    +     */
    +    splitSep = '/';
    +    /**
    +     * separator for generating path strings
    +     */
    +    sep = '/';
    +    /**
    +     * Do not create new Path objects directly.  They should always be accessed
    +     * via the PathScurry class or other methods on the Path class.
    +     *
    +     * @internal
    +     */
    +    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    +        super(name, type, root, roots, nocase, children, opts);
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRootString(path) {
    +        return path.startsWith('/') ? '/' : '';
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRoot(_rootPath) {
    +        return this.root;
    +    }
    +    /**
    +     * @internal
    +     */
    +    newChild(name, type = UNKNOWN, opts = {}) {
    +        return new PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    +    }
    +}
    +exports.PathPosix = PathPosix;
    +/**
    + * The base class for all PathScurry classes, providing the interface for path
    + * resolution and filesystem operations.
    + *
    + * Typically, you should *not* instantiate this class directly, but rather one
    + * of the platform-specific classes, or the exported {@link PathScurry} which
    + * defaults to the current platform.
    + */
    +class PathScurryBase {
    +    /**
    +     * The root Path entry for the current working directory of this Scurry
    +     */
    +    root;
    +    /**
    +     * The string path for the root of this Scurry's current working directory
    +     */
    +    rootPath;
    +    /**
    +     * A collection of all roots encountered, referenced by rootPath
    +     */
    +    roots;
    +    /**
    +     * The Path entry corresponding to this PathScurry's current working directory.
    +     */
    +    cwd;
    +    #resolveCache;
    +    #children;
    +    /**
    +     * Perform path comparisons case-insensitively.
    +     *
    +     * Defaults true on Darwin and Windows systems, false elsewhere.
    +     */
    +    nocase;
    +    #fs;
    +    /**
    +     * This class should not be instantiated directly.
    +     *
    +     * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
    +     *
    +     * @internal
    +     */
    +    constructor(cwd = process.cwd(), pathImpl, sep, { nocase, childrenCacheSize = 16 * 1024, fs = defaultFS, } = {}) {
    +        this.#fs = fsFromOption(fs);
    +        if (cwd instanceof URL || cwd.startsWith('file://')) {
    +            cwd = (0, url_1.fileURLToPath)(cwd);
    +        }
    +        // resolve and split root, and then add to the store.
    +        // this is the only time we call path.resolve()
    +        const cwdPath = pathImpl.resolve(cwd);
    +        this.roots = Object.create(null);
    +        this.rootPath = this.parseRootPath(cwdPath);
    +        this.#resolveCache = new ResolveCache();
    +        this.#children = new ChildrenCache(childrenCacheSize);
    +        const split = cwdPath.substring(this.rootPath.length).split(sep);
    +        // resolve('/') leaves '', splits to [''], we don't want that.
    +        if (split.length === 1 && !split[0]) {
    +            split.pop();
    +        }
    +        /* c8 ignore start */
    +        if (nocase === undefined) {
    +            throw new TypeError('must provide nocase setting to PathScurryBase ctor');
    +        }
    +        /* c8 ignore stop */
    +        this.nocase = nocase;
    +        this.root = this.newRoot(this.#fs);
    +        this.roots[this.rootPath] = this.root;
    +        let prev = this.root;
    +        let len = split.length - 1;
    +        const joinSep = pathImpl.sep;
    +        let abs = this.rootPath;
    +        let sawFirst = false;
    +        for (const part of split) {
    +            prev = prev.child(part, {
    +                relative: new Array(len--).fill('..').join(joinSep),
    +                fullpath: (abs += (sawFirst ? '' : joinSep) + part),
    +            });
    +            sawFirst = true;
    +        }
    +        this.cwd = prev;
    +    }
    +    /**
    +     * Get the depth of a provided path, string, or the cwd
    +     */
    +    depth(path = this.cwd) {
    +        if (typeof path === 'string') {
    +            path = this.cwd.resolve(path);
    +        }
    +        return path.depth();
    +    }
    +    /**
    +     * Return the cache of child entries.  Exposed so subclasses can create
    +     * child Path objects in a platform-specific way.
    +     *
    +     * @internal
    +     */
    +    childrenCache() {
    +        return this.#children;
    +    }
    +    /**
    +     * Resolve one or more path strings to a resolved string
    +     *
    +     * Same interface as require('path').resolve.
    +     *
    +     * Much faster than path.resolve() when called multiple times for the same
    +     * path, because the resolved Path objects are cached.  Much slower
    +     * otherwise.
    +     */
    +    resolve(...paths) {
    +        // first figure out the minimum number of paths we have to test
    +        // we always start at cwd, but any absolutes will bump the start
    +        let r = '';
    +        for (let i = paths.length - 1; i >= 0; i--) {
    +            const p = paths[i];
    +            if (!p || p === '.')
    +                continue;
    +            r = r ? `${p}/${r}` : p;
    +            if (this.isAbsolute(p)) {
    +                break;
    +            }
    +        }
    +        const cached = this.#resolveCache.get(r);
    +        if (cached !== undefined) {
    +            return cached;
    +        }
    +        const result = this.cwd.resolve(r).fullpath();
    +        this.#resolveCache.set(r, result);
    +        return result;
    +    }
    +    /**
    +     * find the relative path from the cwd to the supplied path string or entry
    +     */
    +    relative(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.relative();
    +    }
    +    /**
    +     * Return the basename for the provided string or Path object
    +     */
    +    basename(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.name;
    +    }
    +    /**
    +     * Return the dirname for the provided string or Path object
    +     */
    +    dirname(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return (entry.parent || entry).fullpath();
    +    }
    +    async readdir(entry = this.cwd, opts = {
    +        withFileTypes: true,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes } = opts;
    +        if (!entry.canReaddir()) {
    +            return [];
    +        }
    +        else {
    +            const p = await entry.readdir();
    +            return withFileTypes ? p : p.map(e => e.name);
    +        }
    +    }
    +    readdirSync(entry = this.cwd, opts = {
    +        withFileTypes: true,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true } = opts;
    +        if (!entry.canReaddir()) {
    +            return [];
    +        }
    +        else if (withFileTypes) {
    +            return entry.readdirSync();
    +        }
    +        else {
    +            return entry.readdirSync().map(e => e.name);
    +        }
    +    }
    +    /**
    +     * Call lstat() on the string or Path object, and update all known
    +     * information that can be determined.
    +     *
    +     * Note that unlike `fs.lstat()`, the returned value does not contain some
    +     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    +     * information is required, you will need to call `fs.lstat` yourself.
    +     *
    +     * If the Path refers to a nonexistent file, or if the lstat call fails for
    +     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    +     * returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     */
    +    async lstat(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.lstat();
    +    }
    +    /**
    +     * synchronous {@link PathScurryBase.lstat}
    +     */
    +    lstatSync(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.lstatSync();
    +    }
    +    async readlink(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = await entry.readlink();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    readlinkSync(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = entry.readlinkSync();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    async realpath(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = await entry.realpath();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    realpathSync(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = entry.realpathSync();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    async walk(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = [];
    +        if (!filter || filter(entry)) {
    +            results.push(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const dirs = new Set();
    +        const walk = (dir, cb) => {
    +            dirs.add(dir);
    +            dir.readdirCB((er, entries) => {
    +                /* c8 ignore start */
    +                if (er) {
    +                    return cb(er);
    +                }
    +                /* c8 ignore stop */
    +                let len = entries.length;
    +                if (!len)
    +                    return cb();
    +                const next = () => {
    +                    if (--len === 0) {
    +                        cb();
    +                    }
    +                };
    +                for (const e of entries) {
    +                    if (!filter || filter(e)) {
    +                        results.push(withFileTypes ? e : e.fullpath());
    +                    }
    +                    if (follow && e.isSymbolicLink()) {
    +                        e.realpath()
    +                            .then(r => (r?.isUnknown() ? r.lstat() : r))
    +                            .then(r => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());
    +                    }
    +                    else {
    +                        if (e.shouldWalk(dirs, walkFilter)) {
    +                            walk(e, next);
    +                        }
    +                        else {
    +                            next();
    +                        }
    +                    }
    +                }
    +            }, true); // zalgooooooo
    +        };
    +        const start = entry;
    +        return new Promise((res, rej) => {
    +            walk(start, er => {
    +                /* c8 ignore start */
    +                if (er)
    +                    return rej(er);
    +                /* c8 ignore stop */
    +                res(results);
    +            });
    +        });
    +    }
    +    walkSync(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = [];
    +        if (!filter || filter(entry)) {
    +            results.push(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const dirs = new Set([entry]);
    +        for (const dir of dirs) {
    +            const entries = dir.readdirSync();
    +            for (const e of entries) {
    +                if (!filter || filter(e)) {
    +                    results.push(withFileTypes ? e : e.fullpath());
    +                }
    +                let r = e;
    +                if (e.isSymbolicLink()) {
    +                    if (!(follow && (r = e.realpathSync())))
    +                        continue;
    +                    if (r.isUnknown())
    +                        r.lstatSync();
    +                }
    +                if (r.shouldWalk(dirs, walkFilter)) {
    +                    dirs.add(r);
    +                }
    +            }
    +        }
    +        return results;
    +    }
    +    /**
    +     * Support for `for await`
    +     *
    +     * Alias for {@link PathScurryBase.iterate}
    +     *
    +     * Note: As of Node 19, this is very slow, compared to other methods of
    +     * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
    +     * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
    +     */
    +    [Symbol.asyncIterator]() {
    +        return this.iterate();
    +    }
    +    iterate(entry = this.cwd, options = {}) {
    +        // iterating async over the stream is significantly more performant,
    +        // especially in the warm-cache scenario, because it buffers up directory
    +        // entries in the background instead of waiting for a yield for each one.
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            options = entry;
    +            entry = this.cwd;
    +        }
    +        return this.stream(entry, options)[Symbol.asyncIterator]();
    +    }
    +    /**
    +     * Iterating over a PathScurry performs a synchronous walk.
    +     *
    +     * Alias for {@link PathScurryBase.iterateSync}
    +     */
    +    [Symbol.iterator]() {
    +        return this.iterateSync();
    +    }
    +    *iterateSync(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        if (!filter || filter(entry)) {
    +            yield withFileTypes ? entry : entry.fullpath();
    +        }
    +        const dirs = new Set([entry]);
    +        for (const dir of dirs) {
    +            const entries = dir.readdirSync();
    +            for (const e of entries) {
    +                if (!filter || filter(e)) {
    +                    yield withFileTypes ? e : e.fullpath();
    +                }
    +                let r = e;
    +                if (e.isSymbolicLink()) {
    +                    if (!(follow && (r = e.realpathSync())))
    +                        continue;
    +                    if (r.isUnknown())
    +                        r.lstatSync();
    +                }
    +                if (r.shouldWalk(dirs, walkFilter)) {
    +                    dirs.add(r);
    +                }
    +            }
    +        }
    +    }
    +    stream(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = new minipass_1.default({ objectMode: true });
    +        if (!filter || filter(entry)) {
    +            results.write(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const dirs = new Set();
    +        const queue = [entry];
    +        let processing = 0;
    +        const process = () => {
    +            let paused = false;
    +            while (!paused) {
    +                const dir = queue.shift();
    +                if (!dir) {
    +                    if (processing === 0)
    +                        results.end();
    +                    return;
    +                }
    +                processing++;
    +                dirs.add(dir);
    +                const onReaddir = (er, entries, didRealpaths = false) => {
    +                    /* c8 ignore start */
    +                    if (er)
    +                        return results.emit('error', er);
    +                    /* c8 ignore stop */
    +                    if (follow && !didRealpaths) {
    +                        const promises = [];
    +                        for (const e of entries) {
    +                            if (e.isSymbolicLink()) {
    +                                promises.push(e
    +                                    .realpath()
    +                                    .then((r) => r?.isUnknown() ? r.lstat() : r));
    +                            }
    +                        }
    +                        if (promises.length) {
    +                            Promise.all(promises).then(() => onReaddir(null, entries, true));
    +                            return;
    +                        }
    +                    }
    +                    for (const e of entries) {
    +                        if (e && (!filter || filter(e))) {
    +                            if (!results.write(withFileTypes ? e : e.fullpath())) {
    +                                paused = true;
    +                            }
    +                        }
    +                    }
    +                    processing--;
    +                    for (const e of entries) {
    +                        const r = e.realpathCached() || e;
    +                        if (r.shouldWalk(dirs, walkFilter)) {
    +                            queue.push(r);
    +                        }
    +                    }
    +                    if (paused && !results.flowing) {
    +                        results.once('drain', process);
    +                    }
    +                    else if (!sync) {
    +                        process();
    +                    }
    +                };
    +                // zalgo containment
    +                let sync = true;
    +                dir.readdirCB(onReaddir, true);
    +                sync = false;
    +            }
    +        };
    +        process();
    +        return results;
    +    }
    +    streamSync(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = new minipass_1.default({ objectMode: true });
    +        const dirs = new Set();
    +        if (!filter || filter(entry)) {
    +            results.write(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const queue = [entry];
    +        let processing = 0;
    +        const process = () => {
    +            let paused = false;
    +            while (!paused) {
    +                const dir = queue.shift();
    +                if (!dir) {
    +                    if (processing === 0)
    +                        results.end();
    +                    return;
    +                }
    +                processing++;
    +                dirs.add(dir);
    +                const entries = dir.readdirSync();
    +                for (const e of entries) {
    +                    if (!filter || filter(e)) {
    +                        if (!results.write(withFileTypes ? e : e.fullpath())) {
    +                            paused = true;
    +                        }
    +                    }
    +                }
    +                processing--;
    +                for (const e of entries) {
    +                    let r = e;
    +                    if (e.isSymbolicLink()) {
    +                        if (!(follow && (r = e.realpathSync())))
    +                            continue;
    +                        if (r.isUnknown())
    +                            r.lstatSync();
    +                    }
    +                    if (r.shouldWalk(dirs, walkFilter)) {
    +                        queue.push(r);
    +                    }
    +                }
    +            }
    +            if (paused && !results.flowing)
    +                results.once('drain', process);
    +        };
    +        process();
    +        return results;
    +    }
    +}
    +exports.PathScurryBase = PathScurryBase;
    +/**
    + * Windows implementation of {@link PathScurryBase}
    + *
    + * Defaults to case insensitve, uses `'\\'` to generate path strings.  Uses
    + * {@link PathWin32} for Path objects.
    + */
    +class PathScurryWin32 extends PathScurryBase {
    +    /**
    +     * separator for generating path strings
    +     */
    +    sep = '\\';
    +    constructor(cwd = process.cwd(), opts = {}) {
    +        const { nocase = true } = opts;
    +        super(cwd, path_1.win32, '\\', { ...opts, nocase });
    +        this.nocase = nocase;
    +        for (let p = this.cwd; p; p = p.parent) {
    +            p.nocase = this.nocase;
    +        }
    +    }
    +    /**
    +     * @internal
    +     */
    +    parseRootPath(dir) {
    +        // if the path starts with a single separator, it's not a UNC, and we'll
    +        // just get separator as the root, and driveFromUNC will return \
    +        // In that case, mount \ on the root from the cwd.
    +        return path_1.win32.parse(dir).root.toUpperCase();
    +    }
    +    /**
    +     * @internal
    +     */
    +    newRoot(fs) {
    +        return new PathWin32(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    +    }
    +    /**
    +     * Return true if the provided path string is an absolute path
    +     */
    +    isAbsolute(p) {
    +        return (p.startsWith('/') || p.startsWith('\\') || /^[a-z]:(\/|\\)/i.test(p));
    +    }
    +}
    +exports.PathScurryWin32 = PathScurryWin32;
    +/**
    + * {@link PathScurryBase} implementation for all posix systems other than Darwin.
    + *
    + * Defaults to case-sensitive matching, uses `'/'` to generate path strings.
    + *
    + * Uses {@link PathPosix} for Path objects.
    + */
    +class PathScurryPosix extends PathScurryBase {
    +    /**
    +     * separator for generating path strings
    +     */
    +    sep = '/';
    +    constructor(cwd = process.cwd(), opts = {}) {
    +        const { nocase = false } = opts;
    +        super(cwd, path_1.posix, '/', { ...opts, nocase });
    +        this.nocase = nocase;
    +    }
    +    /**
    +     * @internal
    +     */
    +    parseRootPath(_dir) {
    +        return '/';
    +    }
    +    /**
    +     * @internal
    +     */
    +    newRoot(fs) {
    +        return new PathPosix(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    +    }
    +    /**
    +     * Return true if the provided path string is an absolute path
    +     */
    +    isAbsolute(p) {
    +        return p.startsWith('/');
    +    }
    +}
    +exports.PathScurryPosix = PathScurryPosix;
    +/**
    + * {@link PathScurryBase} implementation for Darwin (macOS) systems.
    + *
    + * Defaults to case-insensitive matching, uses `'/'` for generating path
    + * strings.
    + *
    + * Uses {@link PathPosix} for Path objects.
    + */
    +class PathScurryDarwin extends PathScurryPosix {
    +    constructor(cwd = process.cwd(), opts = {}) {
    +        const { nocase = true } = opts;
    +        super(cwd, { ...opts, nocase });
    +    }
    +}
    +exports.PathScurryDarwin = PathScurryDarwin;
    +/**
    + * Default {@link PathBase} implementation for the current platform.
    + *
    + * {@link PathWin32} on Windows systems, {@link PathPosix} on all others.
    + */
    +exports.Path = process.platform === 'win32' ? PathWin32 : PathPosix;
    +/**
    + * Default {@link PathScurryBase} implementation for the current platform.
    + *
    + * {@link PathScurryWin32} on Windows systems, {@link PathScurryDarwin} on
    + * Darwin (macOS) systems, {@link PathScurryPosix} on all others.
    + */
    +exports.PathScurry = process.platform === 'win32'
    +    ? PathScurryWin32
    +    : process.platform === 'darwin'
    +        ? PathScurryDarwin
    +        : PathScurryPosix;
    +//# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/path-scurry/dist/cjs/package.json b/deps/npm/node_modules/path-scurry/dist/cjs/package.json
    new file mode 100644
    index 00000000000000..5bbefffbabee39
    --- /dev/null
    +++ b/deps/npm/node_modules/path-scurry/dist/cjs/package.json
    @@ -0,0 +1,3 @@
    +{
    +  "type": "commonjs"
    +}
    diff --git a/deps/npm/node_modules/path-scurry/dist/mjs/index.js b/deps/npm/node_modules/path-scurry/dist/mjs/index.js
    new file mode 100644
    index 00000000000000..b6a2cf9c8a08e1
    --- /dev/null
    +++ b/deps/npm/node_modules/path-scurry/dist/mjs/index.js
    @@ -0,0 +1,1827 @@
    +import LRUCache from 'lru-cache';
    +import { posix, win32 } from 'path';
    +import { fileURLToPath } from 'url';
    +import * as actualFS from 'fs';
    +import { lstatSync, readdir as readdirCB, readdirSync, readlinkSync, realpathSync as rps, } from 'fs';
    +const realpathSync = rps.native;
    +// TODO: test perf of fs/promises realpath vs realpathCB,
    +// since the promises one uses realpath.native
    +import { lstat, readdir, readlink, realpath } from 'fs/promises';
    +import Minipass from 'minipass';
    +const defaultFS = {
    +    lstatSync,
    +    readdir: readdirCB,
    +    readdirSync,
    +    readlinkSync,
    +    realpathSync,
    +    promises: {
    +        lstat,
    +        readdir,
    +        readlink,
    +        realpath,
    +    },
    +};
    +// if they just gave us require('fs') then use our default
    +const fsFromOption = (fsOption) => !fsOption || fsOption === defaultFS || fsOption === actualFS
    +    ? defaultFS
    +    : {
    +        ...defaultFS,
    +        ...fsOption,
    +        promises: {
    +            ...defaultFS.promises,
    +            ...(fsOption.promises || {}),
    +        },
    +    };
    +// turn something like //?/c:/ into c:\
    +const uncDriveRegexp = /^\\\\\?\\([a-z]:)\\?$/i;
    +const uncToDrive = (rootPath) => rootPath.replace(/\//g, '\\').replace(uncDriveRegexp, '$1\\');
    +// windows paths are separated by either / or \
    +const eitherSep = /[\\\/]/;
    +const UNKNOWN = 0; // may not even exist, for all we know
    +const IFIFO = 0b0001;
    +const IFCHR = 0b0010;
    +const IFDIR = 0b0100;
    +const IFBLK = 0b0110;
    +const IFREG = 0b1000;
    +const IFLNK = 0b1010;
    +const IFSOCK = 0b1100;
    +const IFMT = 0b1111;
    +// mask to unset low 4 bits
    +const IFMT_UNKNOWN = ~IFMT;
    +// set after successfully calling readdir() and getting entries.
    +const READDIR_CALLED = 16;
    +// set after a successful lstat()
    +const LSTAT_CALLED = 32;
    +// set if an entry (or one of its parents) is definitely not a dir
    +const ENOTDIR = 64;
    +// set if an entry (or one of its parents) does not exist
    +// (can also be set on lstat errors like EACCES or ENAMETOOLONG)
    +const ENOENT = 128;
    +// cannot have child entries -- also verify &IFMT is either IFDIR or IFLNK
    +// set if we fail to readlink
    +const ENOREADLINK = 256;
    +// set if we know realpath() will fail
    +const ENOREALPATH = 512;
    +const ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH;
    +const TYPEMASK = 1023;
    +const entToType = (s) => s.isFile()
    +    ? IFREG
    +    : s.isDirectory()
    +        ? IFDIR
    +        : s.isSymbolicLink()
    +            ? IFLNK
    +            : s.isCharacterDevice()
    +                ? IFCHR
    +                : s.isBlockDevice()
    +                    ? IFBLK
    +                    : s.isSocket()
    +                        ? IFSOCK
    +                        : s.isFIFO()
    +                            ? IFIFO
    +                            : UNKNOWN;
    +// normalize unicode path names
    +const normalizeCache = new Map();
    +const normalize = (s) => {
    +    const c = normalizeCache.get(s);
    +    if (c)
    +        return c;
    +    const n = s.normalize('NFKD');
    +    normalizeCache.set(s, n);
    +    return n;
    +};
    +const normalizeNocaseCache = new Map();
    +const normalizeNocase = (s) => {
    +    const c = normalizeNocaseCache.get(s);
    +    if (c)
    +        return c;
    +    const n = normalize(s.toLowerCase());
    +    normalizeNocaseCache.set(s, n);
    +    return n;
    +};
    +/**
    + * An LRUCache for storing resolved path strings or Path objects.
    + * @internal
    + */
    +export class ResolveCache extends LRUCache {
    +    constructor() {
    +        super({ max: 256 });
    +    }
    +}
    +// In order to prevent blowing out the js heap by allocating hundreds of
    +// thousands of Path entries when walking extremely large trees, the "children"
    +// in this tree are represented by storing an array of Path entries in an
    +// LRUCache, indexed by the parent.  At any time, Path.children() may return an
    +// empty array, indicating that it doesn't know about any of its children, and
    +// thus has to rebuild that cache.  This is fine, it just means that we don't
    +// benefit as much from having the cached entries, but huge directory walks
    +// don't blow out the stack, and smaller ones are still as fast as possible.
    +//
    +//It does impose some complexity when building up the readdir data, because we
    +//need to pass a reference to the children array that we started with.
    +/**
    + * an LRUCache for storing child entries.
    + * @internal
    + */
    +export class ChildrenCache extends LRUCache {
    +    constructor(maxSize = 16 * 1024) {
    +        super({
    +            maxSize,
    +            // parent + children
    +            sizeCalculation: a => a.length + 1,
    +        });
    +    }
    +}
    +/**
    + * Path objects are sort of like a super-powered
    + * {@link https://nodejs.org/docs/latest/api/fs.html#class-fsdirent fs.Dirent}
    + *
    + * Each one represents a single filesystem entry on disk, which may or may not
    + * exist. It includes methods for reading various types of information via
    + * lstat, readlink, and readdir, and caches all information to the greatest
    + * degree possible.
    + *
    + * Note that fs operations that would normally throw will instead return an
    + * "empty" value. This is in order to prevent excessive overhead from error
    + * stack traces.
    + */
    +export class PathBase {
    +    /**
    +     * the basename of this path
    +     *
    +     * **Important**: *always* test the path name against any test string
    +     * usingthe {@link isNamed} method, and not by directly comparing this
    +     * string. Otherwise, unicode path strings that the system sees as identical
    +     * will not be properly treated as the same path, leading to incorrect
    +     * behavior and possible security issues.
    +     */
    +    name;
    +    /**
    +     * the Path entry corresponding to the path root.
    +     *
    +     * @internal
    +     */
    +    root;
    +    /**
    +     * All roots found within the current PathScurry family
    +     *
    +     * @internal
    +     */
    +    roots;
    +    /**
    +     * a reference to the parent path, or undefined in the case of root entries
    +     *
    +     * @internal
    +     */
    +    parent;
    +    /**
    +     * boolean indicating whether paths are compared case-insensitively
    +     * @internal
    +     */
    +    nocase;
    +    // potential default fs override
    +    #fs;
    +    // Stats fields
    +    #dev;
    +    get dev() {
    +        return this.#dev;
    +    }
    +    #mode;
    +    get mode() {
    +        return this.#mode;
    +    }
    +    #nlink;
    +    get nlink() {
    +        return this.#nlink;
    +    }
    +    #uid;
    +    get uid() {
    +        return this.#uid;
    +    }
    +    #gid;
    +    get gid() {
    +        return this.#gid;
    +    }
    +    #rdev;
    +    get rdev() {
    +        return this.#rdev;
    +    }
    +    #blksize;
    +    get blksize() {
    +        return this.#blksize;
    +    }
    +    #ino;
    +    get ino() {
    +        return this.#ino;
    +    }
    +    #size;
    +    get size() {
    +        return this.#size;
    +    }
    +    #blocks;
    +    get blocks() {
    +        return this.#blocks;
    +    }
    +    #atimeMs;
    +    get atimeMs() {
    +        return this.#atimeMs;
    +    }
    +    #mtimeMs;
    +    get mtimeMs() {
    +        return this.#mtimeMs;
    +    }
    +    #ctimeMs;
    +    get ctimeMs() {
    +        return this.#ctimeMs;
    +    }
    +    #birthtimeMs;
    +    get birthtimeMs() {
    +        return this.#birthtimeMs;
    +    }
    +    #atime;
    +    get atime() {
    +        return this.#atime;
    +    }
    +    #mtime;
    +    get mtime() {
    +        return this.#mtime;
    +    }
    +    #ctime;
    +    get ctime() {
    +        return this.#ctime;
    +    }
    +    #birthtime;
    +    get birthtime() {
    +        return this.#birthtime;
    +    }
    +    #matchName;
    +    #depth;
    +    #fullpath;
    +    #relative;
    +    #type;
    +    #children;
    +    #linkTarget;
    +    #realpath;
    +    /**
    +     * Do not create new Path objects directly.  They should always be accessed
    +     * via the PathScurry class or other methods on the Path class.
    +     *
    +     * @internal
    +     */
    +    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    +        this.name = name;
    +        this.#matchName = nocase ? normalizeNocase(name) : normalize(name);
    +        this.#type = type & TYPEMASK;
    +        this.nocase = nocase;
    +        this.roots = roots;
    +        this.root = root || this;
    +        this.#children = children;
    +        this.#fullpath = opts.fullpath;
    +        this.#relative = opts.relative;
    +        this.parent = opts.parent;
    +        if (this.parent) {
    +            this.#fs = this.parent.#fs;
    +        }
    +        else {
    +            this.#fs = fsFromOption(opts.fs);
    +        }
    +    }
    +    /**
    +     * Returns the depth of the Path object from its root.
    +     *
    +     * For example, a path at `/foo/bar` would have a depth of 2.
    +     */
    +    depth() {
    +        if (this.#depth !== undefined)
    +            return this.#depth;
    +        if (!this.parent)
    +            return (this.#depth = 0);
    +        return (this.#depth = this.parent.depth() + 1);
    +    }
    +    /**
    +     * @internal
    +     */
    +    childrenCache() {
    +        return this.#children;
    +    }
    +    /**
    +     * Get the Path object referenced by the string path, resolved from this Path
    +     */
    +    resolve(path) {
    +        if (!path) {
    +            return this;
    +        }
    +        const rootPath = this.getRootString(path);
    +        const dir = path.substring(rootPath.length);
    +        const dirParts = dir.split(this.splitSep);
    +        const result = rootPath
    +            ? this.getRoot(rootPath).#resolveParts(dirParts)
    +            : this.#resolveParts(dirParts);
    +        return result;
    +    }
    +    #resolveParts(dirParts) {
    +        let p = this;
    +        for (const part of dirParts) {
    +            p = p.child(part);
    +        }
    +        return p;
    +    }
    +    /**
    +     * Returns the cached children Path objects, if still available.  If they
    +     * have fallen out of the cache, then returns an empty array, and resets the
    +     * READDIR_CALLED bit, so that future calls to readdir() will require an fs
    +     * lookup.
    +     *
    +     * @internal
    +     */
    +    children() {
    +        const cached = this.#children.get(this);
    +        if (cached) {
    +            return cached;
    +        }
    +        const children = Object.assign([], { provisional: 0 });
    +        this.#children.set(this, children);
    +        this.#type &= ~READDIR_CALLED;
    +        return children;
    +    }
    +    /**
    +     * Resolves a path portion and returns or creates the child Path.
    +     *
    +     * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is
    +     * `'..'`.
    +     *
    +     * This should not be called directly.  If `pathPart` contains any path
    +     * separators, it will lead to unsafe undefined behavior.
    +     *
    +     * Use `Path.resolve()` instead.
    +     *
    +     * @internal
    +     */
    +    child(pathPart, opts) {
    +        if (pathPart === '' || pathPart === '.') {
    +            return this;
    +        }
    +        if (pathPart === '..') {
    +            return this.parent || this;
    +        }
    +        // find the child
    +        const children = this.children();
    +        const name = this.nocase
    +            ? normalizeNocase(pathPart)
    +            : normalize(pathPart);
    +        for (const p of children) {
    +            if (p.#matchName === name) {
    +                return p;
    +            }
    +        }
    +        // didn't find it, create provisional child, since it might not
    +        // actually exist.  If we know the parent isn't a dir, then
    +        // in fact it CAN'T exist.
    +        const s = this.parent ? this.sep : '';
    +        const fullpath = this.#fullpath
    +            ? this.#fullpath + s + pathPart
    +            : undefined;
    +        const pchild = this.newChild(pathPart, UNKNOWN, {
    +            ...opts,
    +            parent: this,
    +            fullpath,
    +        });
    +        if (!this.canReaddir()) {
    +            pchild.#type |= ENOENT;
    +        }
    +        // don't have to update provisional, because if we have real children,
    +        // then provisional is set to children.length, otherwise a lower number
    +        children.push(pchild);
    +        return pchild;
    +    }
    +    /**
    +     * The relative path from the cwd. If it does not share an ancestor with
    +     * the cwd, then this ends up being equivalent to the fullpath()
    +     */
    +    // TODO: instead of taking a param here, set it to '' in the constructor
    +    // for the CWD, and set it to this.name for any roots.
    +    relative() {
    +        if (this.#relative !== undefined) {
    +            return this.#relative;
    +        }
    +        const name = this.name;
    +        const p = this.parent;
    +        if (!p) {
    +            return (this.#relative = this.name);
    +        }
    +        const pv = p.relative();
    +        const rp = pv + (!pv || !p.parent ? '' : this.sep) + name;
    +        return (this.#relative = rp);
    +    }
    +    /**
    +     * The fully resolved path string for this Path entry
    +     */
    +    fullpath() {
    +        if (this.#fullpath !== undefined) {
    +            return this.#fullpath;
    +        }
    +        const name = this.name;
    +        const p = this.parent;
    +        if (!p) {
    +            return (this.#fullpath = this.name);
    +        }
    +        const pv = p.fullpath();
    +        const fp = pv + (!p.parent ? '' : this.sep) + name;
    +        return (this.#fullpath = fp);
    +    }
    +    /**
    +     * Is the Path of an unknown type?
    +     *
    +     * Note that we might know *something* about it if there has been a previous
    +     * filesystem operation, for example that it does not exist, or is not a
    +     * link, or whether it has child entries.
    +     */
    +    isUnknown() {
    +        return (this.#type & IFMT) === UNKNOWN;
    +    }
    +    /**
    +     * Is the Path a regular file?
    +     */
    +    isFile() {
    +        return (this.#type & IFMT) === IFREG;
    +    }
    +    /**
    +     * Is the Path a directory?
    +     */
    +    isDirectory() {
    +        return (this.#type & IFMT) === IFDIR;
    +    }
    +    /**
    +     * Is the path a character device?
    +     */
    +    isCharacterDevice() {
    +        return (this.#type & IFMT) === IFCHR;
    +    }
    +    /**
    +     * Is the path a block device?
    +     */
    +    isBlockDevice() {
    +        return (this.#type & IFMT) === IFBLK;
    +    }
    +    /**
    +     * Is the path a FIFO pipe?
    +     */
    +    isFIFO() {
    +        return (this.#type & IFMT) === IFIFO;
    +    }
    +    /**
    +     * Is the path a socket?
    +     */
    +    isSocket() {
    +        return (this.#type & IFMT) === IFSOCK;
    +    }
    +    /**
    +     * Is the path a symbolic link?
    +     */
    +    isSymbolicLink() {
    +        return (this.#type & IFLNK) === IFLNK;
    +    }
    +    /**
    +     * Return the entry if it has been subject of a successful lstat, or
    +     * undefined otherwise.
    +     *
    +     * Does not read the filesystem, so an undefined result *could* simply
    +     * mean that we haven't called lstat on it.
    +     */
    +    lstatCached() {
    +        return this.#type & LSTAT_CALLED ? this : undefined;
    +    }
    +    /**
    +     * Return the cached link target if the entry has been the subject of a
    +     * successful readlink, or undefined otherwise.
    +     *
    +     * Does not read the filesystem, so an undefined result *could* just mean we
    +     * don't have any cached data. Only use it if you are very sure that a
    +     * readlink() has been called at some point.
    +     */
    +    readlinkCached() {
    +        return this.#linkTarget;
    +    }
    +    /**
    +     * Returns the cached realpath target if the entry has been the subject
    +     * of a successful realpath, or undefined otherwise.
    +     *
    +     * Does not read the filesystem, so an undefined result *could* just mean we
    +     * don't have any cached data. Only use it if you are very sure that a
    +     * realpath() has been called at some point.
    +     */
    +    realpathCached() {
    +        return this.#realpath;
    +    }
    +    /**
    +     * Returns the cached child Path entries array if the entry has been the
    +     * subject of a successful readdir(), or [] otherwise.
    +     *
    +     * Does not read the filesystem, so an empty array *could* just mean we
    +     * don't have any cached data. Only use it if you are very sure that a
    +     * readdir() has been called recently enough to still be valid.
    +     */
    +    readdirCached() {
    +        const children = this.children();
    +        return children.slice(0, children.provisional);
    +    }
    +    /**
    +     * Return true if it's worth trying to readlink.  Ie, we don't (yet) have
    +     * any indication that readlink will definitely fail.
    +     *
    +     * Returns false if the path is known to not be a symlink, if a previous
    +     * readlink failed, or if the entry does not exist.
    +     */
    +    canReadlink() {
    +        if (this.#linkTarget)
    +            return true;
    +        if (!this.parent)
    +            return false;
    +        // cases where it cannot possibly succeed
    +        const ifmt = this.#type & IFMT;
    +        return !((ifmt !== UNKNOWN && ifmt !== IFLNK) ||
    +            this.#type & ENOREADLINK ||
    +            this.#type & ENOENT);
    +    }
    +    /**
    +     * Return true if readdir has previously been successfully called on this
    +     * path, indicating that cachedReaddir() is likely valid.
    +     */
    +    calledReaddir() {
    +        return !!(this.#type & READDIR_CALLED);
    +    }
    +    /**
    +     * Returns true if the path is known to not exist. That is, a previous lstat
    +     * or readdir failed to verify its existence when that would have been
    +     * expected, or a parent entry was marked either enoent or enotdir.
    +     */
    +    isENOENT() {
    +        return !!(this.#type & ENOENT);
    +    }
    +    /**
    +     * Return true if the path is a match for the given path name.  This handles
    +     * case sensitivity and unicode normalization.
    +     *
    +     * Note: even on case-sensitive systems, it is **not** safe to test the
    +     * equality of the `.name` property to determine whether a given pathname
    +     * matches, due to unicode normalization mismatches.
    +     *
    +     * Always use this method instead of testing the `path.name` property
    +     * directly.
    +     */
    +    isNamed(n) {
    +        return !this.nocase
    +            ? this.#matchName === normalize(n)
    +            : this.#matchName === normalizeNocase(n);
    +    }
    +    /**
    +     * Return the Path object corresponding to the target of a symbolic link.
    +     *
    +     * If the Path is not a symbolic link, or if the readlink call fails for any
    +     * reason, `undefined` is returned.
    +     *
    +     * Result is cached, and thus may be outdated if the filesystem is mutated.
    +     */
    +    async readlink() {
    +        const target = this.#linkTarget;
    +        if (target) {
    +            return target;
    +        }
    +        if (!this.canReadlink()) {
    +            return undefined;
    +        }
    +        /* c8 ignore start */
    +        // already covered by the canReadlink test, here for ts grumples
    +        if (!this.parent) {
    +            return undefined;
    +        }
    +        /* c8 ignore stop */
    +        try {
    +            const read = await this.#fs.promises.readlink(this.fullpath());
    +            const linkTarget = this.parent.resolve(read);
    +            if (linkTarget) {
    +                return (this.#linkTarget = linkTarget);
    +            }
    +        }
    +        catch (er) {
    +            this.#readlinkFail(er.code);
    +            return undefined;
    +        }
    +    }
    +    /**
    +     * Synchronous {@link PathBase.readlink}
    +     */
    +    readlinkSync() {
    +        const target = this.#linkTarget;
    +        if (target) {
    +            return target;
    +        }
    +        if (!this.canReadlink()) {
    +            return undefined;
    +        }
    +        /* c8 ignore start */
    +        // already covered by the canReadlink test, here for ts grumples
    +        if (!this.parent) {
    +            return undefined;
    +        }
    +        /* c8 ignore stop */
    +        try {
    +            const read = this.#fs.readlinkSync(this.fullpath());
    +            const linkTarget = this.parent.resolve(read);
    +            if (linkTarget) {
    +                return (this.#linkTarget = linkTarget);
    +            }
    +        }
    +        catch (er) {
    +            this.#readlinkFail(er.code);
    +            return undefined;
    +        }
    +    }
    +    #readdirSuccess(children) {
    +        // succeeded, mark readdir called bit
    +        this.#type |= READDIR_CALLED;
    +        // mark all remaining provisional children as ENOENT
    +        for (let p = children.provisional; p < children.length; p++) {
    +            children[p].#markENOENT();
    +        }
    +    }
    +    #markENOENT() {
    +        // mark as UNKNOWN and ENOENT
    +        if (this.#type & ENOENT)
    +            return;
    +        this.#type = (this.#type | ENOENT) & IFMT_UNKNOWN;
    +        this.#markChildrenENOENT();
    +    }
    +    #markChildrenENOENT() {
    +        // all children are provisional and do not exist
    +        const children = this.children();
    +        children.provisional = 0;
    +        for (const p of children) {
    +            p.#markENOENT();
    +        }
    +    }
    +    #markENOREALPATH() {
    +        this.#type |= ENOREALPATH;
    +        this.#markENOTDIR();
    +    }
    +    // save the information when we know the entry is not a dir
    +    #markENOTDIR() {
    +        // entry is not a directory, so any children can't exist.
    +        // this *should* be impossible, since any children created
    +        // after it's been marked ENOTDIR should be marked ENOENT,
    +        // so it won't even get to this point.
    +        /* c8 ignore start */
    +        if (this.#type & ENOTDIR)
    +            return;
    +        /* c8 ignore stop */
    +        let t = this.#type;
    +        // this could happen if we stat a dir, then delete it,
    +        // then try to read it or one of its children.
    +        if ((t & IFMT) === IFDIR)
    +            t &= IFMT_UNKNOWN;
    +        this.#type = t | ENOTDIR;
    +        this.#markChildrenENOENT();
    +    }
    +    #readdirFail(code = '') {
    +        // markENOTDIR and markENOENT also set provisional=0
    +        if (code === 'ENOTDIR' || code === 'EPERM') {
    +            this.#markENOTDIR();
    +        }
    +        else if (code === 'ENOENT') {
    +            this.#markENOENT();
    +        }
    +        else {
    +            this.children().provisional = 0;
    +        }
    +    }
    +    #lstatFail(code = '') {
    +        // Windows just raises ENOENT in this case, disable for win CI
    +        /* c8 ignore start */
    +        if (code === 'ENOTDIR') {
    +            // already know it has a parent by this point
    +            const p = this.parent;
    +            p.#markENOTDIR();
    +        }
    +        else if (code === 'ENOENT') {
    +            /* c8 ignore stop */
    +            this.#markENOENT();
    +        }
    +    }
    +    #readlinkFail(code = '') {
    +        let ter = this.#type;
    +        ter |= ENOREADLINK;
    +        if (code === 'ENOENT')
    +            ter |= ENOENT;
    +        // windows gets a weird error when you try to readlink a file
    +        if (code === 'EINVAL' || code === 'UNKNOWN') {
    +            // exists, but not a symlink, we don't know WHAT it is, so remove
    +            // all IFMT bits.
    +            ter &= IFMT_UNKNOWN;
    +        }
    +        this.#type = ter;
    +        // windows just gets ENOENT in this case.  We do cover the case,
    +        // just disabled because it's impossible on Windows CI
    +        /* c8 ignore start */
    +        if (code === 'ENOTDIR' && this.parent) {
    +            this.parent.#markENOTDIR();
    +        }
    +        /* c8 ignore stop */
    +    }
    +    #readdirAddChild(e, c) {
    +        return (this.#readdirMaybePromoteChild(e, c) ||
    +            this.#readdirAddNewChild(e, c));
    +    }
    +    #readdirAddNewChild(e, c) {
    +        // alloc new entry at head, so it's never provisional
    +        const type = entToType(e);
    +        const child = this.newChild(e.name, type, { parent: this });
    +        const ifmt = child.#type & IFMT;
    +        if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {
    +            child.#type |= ENOTDIR;
    +        }
    +        c.unshift(child);
    +        c.provisional++;
    +        return child;
    +    }
    +    #readdirMaybePromoteChild(e, c) {
    +        for (let p = c.provisional; p < c.length; p++) {
    +            const pchild = c[p];
    +            const name = this.nocase
    +                ? normalizeNocase(e.name)
    +                : normalize(e.name);
    +            if (name !== pchild.#matchName) {
    +                continue;
    +            }
    +            return this.#readdirPromoteChild(e, pchild, p, c);
    +        }
    +    }
    +    #readdirPromoteChild(e, p, index, c) {
    +        const v = p.name;
    +        // retain any other flags, but set ifmt from dirent
    +        p.#type = (p.#type & IFMT_UNKNOWN) | entToType(e);
    +        // case sensitivity fixing when we learn the true name.
    +        if (v !== e.name)
    +            p.name = e.name;
    +        // just advance provisional index (potentially off the list),
    +        // otherwise we have to splice/pop it out and re-insert at head
    +        if (index !== c.provisional) {
    +            if (index === c.length - 1)
    +                c.pop();
    +            else
    +                c.splice(index, 1);
    +            c.unshift(p);
    +        }
    +        c.provisional++;
    +        return p;
    +    }
    +    /**
    +     * Call lstat() on this Path, and update all known information that can be
    +     * determined.
    +     *
    +     * Note that unlike `fs.lstat()`, the returned value does not contain some
    +     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    +     * information is required, you will need to call `fs.lstat` yourself.
    +     *
    +     * If the Path refers to a nonexistent file, or if the lstat call fails for
    +     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    +     * returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     */
    +    async lstat() {
    +        if ((this.#type & ENOENT) === 0) {
    +            try {
    +                this.#applyStat(await this.#fs.promises.lstat(this.fullpath()));
    +                return this;
    +            }
    +            catch (er) {
    +                this.#lstatFail(er.code);
    +            }
    +        }
    +    }
    +    /**
    +     * synchronous {@link PathBase.lstat}
    +     */
    +    lstatSync() {
    +        if ((this.#type & ENOENT) === 0) {
    +            try {
    +                this.#applyStat(this.#fs.lstatSync(this.fullpath()));
    +                return this;
    +            }
    +            catch (er) {
    +                this.#lstatFail(er.code);
    +            }
    +        }
    +    }
    +    #applyStat(st) {
    +        const { atime, atimeMs, birthtime, birthtimeMs, blksize, blocks, ctime, ctimeMs, dev, gid, ino, mode, mtime, mtimeMs, nlink, rdev, size, uid, } = st;
    +        this.#atime = atime;
    +        this.#atimeMs = atimeMs;
    +        this.#birthtime = birthtime;
    +        this.#birthtimeMs = birthtimeMs;
    +        this.#blksize = blksize;
    +        this.#blocks = blocks;
    +        this.#ctime = ctime;
    +        this.#ctimeMs = ctimeMs;
    +        this.#dev = dev;
    +        this.#gid = gid;
    +        this.#ino = ino;
    +        this.#mode = mode;
    +        this.#mtime = mtime;
    +        this.#mtimeMs = mtimeMs;
    +        this.#nlink = nlink;
    +        this.#rdev = rdev;
    +        this.#size = size;
    +        this.#uid = uid;
    +        const ifmt = entToType(st);
    +        // retain any other flags, but set the ifmt
    +        this.#type = (this.#type & IFMT_UNKNOWN) | ifmt | LSTAT_CALLED;
    +        if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {
    +            this.#type |= ENOTDIR;
    +        }
    +    }
    +    #onReaddirCB = [];
    +    #readdirCBInFlight = false;
    +    #callOnReaddirCB(children) {
    +        this.#readdirCBInFlight = false;
    +        const cbs = this.#onReaddirCB.slice();
    +        this.#onReaddirCB.length = 0;
    +        cbs.forEach(cb => cb(null, children));
    +    }
    +    /**
    +     * Standard node-style callback interface to get list of directory entries.
    +     *
    +     * If the Path cannot or does not contain any children, then an empty array
    +     * is returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     *
    +     * @param cb The callback called with (er, entries).  Note that the `er`
    +     * param is somewhat extraneous, as all readdir() errors are handled and
    +     * simply result in an empty set of entries being returned.
    +     * @param allowZalgo Boolean indicating that immediately known results should
    +     * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release
    +     * zalgo at your peril, the dark pony lord is devious and unforgiving.
    +     */
    +    readdirCB(cb, allowZalgo = false) {
    +        if (!this.canReaddir()) {
    +            if (allowZalgo)
    +                cb(null, []);
    +            else
    +                queueMicrotask(() => cb(null, []));
    +            return;
    +        }
    +        const children = this.children();
    +        if (this.calledReaddir()) {
    +            const c = children.slice(0, children.provisional);
    +            if (allowZalgo)
    +                cb(null, c);
    +            else
    +                queueMicrotask(() => cb(null, c));
    +            return;
    +        }
    +        // don't have to worry about zalgo at this point.
    +        this.#onReaddirCB.push(cb);
    +        if (this.#readdirCBInFlight) {
    +            return;
    +        }
    +        this.#readdirCBInFlight = true;
    +        // else read the directory, fill up children
    +        // de-provisionalize any provisional children.
    +        const fullpath = this.fullpath();
    +        this.#fs.readdir(fullpath, { withFileTypes: true }, (er, entries) => {
    +            if (er) {
    +                this.#readdirFail(er.code);
    +                children.provisional = 0;
    +            }
    +            else {
    +                // if we didn't get an error, we always get entries.
    +                //@ts-ignore
    +                for (const e of entries) {
    +                    this.#readdirAddChild(e, children);
    +                }
    +                this.#readdirSuccess(children);
    +            }
    +            this.#callOnReaddirCB(children.slice(0, children.provisional));
    +            return;
    +        });
    +    }
    +    #asyncReaddirInFlight;
    +    /**
    +     * Return an array of known child entries.
    +     *
    +     * If the Path cannot or does not contain any children, then an empty array
    +     * is returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     */
    +    async readdir() {
    +        if (!this.canReaddir()) {
    +            return [];
    +        }
    +        const children = this.children();
    +        if (this.calledReaddir()) {
    +            return children.slice(0, children.provisional);
    +        }
    +        // else read the directory, fill up children
    +        // de-provisionalize any provisional children.
    +        const fullpath = this.fullpath();
    +        if (this.#asyncReaddirInFlight) {
    +            await this.#asyncReaddirInFlight;
    +        }
    +        else {
    +            /* c8 ignore start */
    +            let resolve = () => { };
    +            /* c8 ignore stop */
    +            this.#asyncReaddirInFlight = new Promise(res => (resolve = res));
    +            try {
    +                for (const e of await this.#fs.promises.readdir(fullpath, {
    +                    withFileTypes: true,
    +                })) {
    +                    this.#readdirAddChild(e, children);
    +                }
    +                this.#readdirSuccess(children);
    +            }
    +            catch (er) {
    +                this.#readdirFail(er.code);
    +                children.provisional = 0;
    +            }
    +            this.#asyncReaddirInFlight = undefined;
    +            resolve();
    +        }
    +        return children.slice(0, children.provisional);
    +    }
    +    /**
    +     * synchronous {@link PathBase.readdir}
    +     */
    +    readdirSync() {
    +        if (!this.canReaddir()) {
    +            return [];
    +        }
    +        const children = this.children();
    +        if (this.calledReaddir()) {
    +            return children.slice(0, children.provisional);
    +        }
    +        // else read the directory, fill up children
    +        // de-provisionalize any provisional children.
    +        const fullpath = this.fullpath();
    +        try {
    +            for (const e of this.#fs.readdirSync(fullpath, {
    +                withFileTypes: true,
    +            })) {
    +                this.#readdirAddChild(e, children);
    +            }
    +            this.#readdirSuccess(children);
    +        }
    +        catch (er) {
    +            this.#readdirFail(er.code);
    +            children.provisional = 0;
    +        }
    +        return children.slice(0, children.provisional);
    +    }
    +    canReaddir() {
    +        if (this.#type & ENOCHILD)
    +            return false;
    +        const ifmt = IFMT & this.#type;
    +        // we always set ENOTDIR when setting IFMT, so should be impossible
    +        /* c8 ignore start */
    +        if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {
    +            return false;
    +        }
    +        /* c8 ignore stop */
    +        return true;
    +    }
    +    shouldWalk(dirs, walkFilter) {
    +        return ((this.#type & IFDIR) === IFDIR &&
    +            !(this.#type & ENOCHILD) &&
    +            !dirs.has(this) &&
    +            (!walkFilter || walkFilter(this)));
    +    }
    +    /**
    +     * Return the Path object corresponding to path as resolved
    +     * by realpath(3).
    +     *
    +     * If the realpath call fails for any reason, `undefined` is returned.
    +     *
    +     * Result is cached, and thus may be outdated if the filesystem is mutated.
    +     * On success, returns a Path object.
    +     */
    +    async realpath() {
    +        if (this.#realpath)
    +            return this.#realpath;
    +        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    +            return undefined;
    +        try {
    +            const rp = await this.#fs.promises.realpath(this.fullpath());
    +            return (this.#realpath = this.resolve(rp));
    +        }
    +        catch (_) {
    +            this.#markENOREALPATH();
    +        }
    +    }
    +    /**
    +     * Synchronous {@link realpath}
    +     */
    +    realpathSync() {
    +        if (this.#realpath)
    +            return this.#realpath;
    +        if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type)
    +            return undefined;
    +        try {
    +            const rp = this.#fs.realpathSync(this.fullpath());
    +            return (this.#realpath = this.resolve(rp));
    +        }
    +        catch (_) {
    +            this.#markENOREALPATH();
    +        }
    +    }
    +}
    +/**
    + * Path class used on win32 systems
    + *
    + * Uses `'\\'` as the path separator for returned paths, either `'\\'` or `'/'`
    + * as the path separator for parsing paths.
    + */
    +export class PathWin32 extends PathBase {
    +    /**
    +     * Separator for generating path strings.
    +     */
    +    sep = '\\';
    +    /**
    +     * Separator for parsing path strings.
    +     */
    +    splitSep = eitherSep;
    +    /**
    +     * Do not create new Path objects directly.  They should always be accessed
    +     * via the PathScurry class or other methods on the Path class.
    +     *
    +     * @internal
    +     */
    +    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    +        super(name, type, root, roots, nocase, children, opts);
    +    }
    +    /**
    +     * @internal
    +     */
    +    newChild(name, type = UNKNOWN, opts = {}) {
    +        return new PathWin32(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRootString(path) {
    +        return win32.parse(path).root;
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRoot(rootPath) {
    +        rootPath = uncToDrive(rootPath.toUpperCase());
    +        if (rootPath === this.root.name) {
    +            return this.root;
    +        }
    +        // ok, not that one, check if it matches another we know about
    +        for (const [compare, root] of Object.entries(this.roots)) {
    +            if (this.sameRoot(rootPath, compare)) {
    +                return (this.roots[rootPath] = root);
    +            }
    +        }
    +        // otherwise, have to create a new one.
    +        return (this.roots[rootPath] = new PathScurryWin32(rootPath, this).root);
    +    }
    +    /**
    +     * @internal
    +     */
    +    sameRoot(rootPath, compare = this.root.name) {
    +        // windows can (rarely) have case-sensitive filesystem, but
    +        // UNC and drive letters are always case-insensitive, and canonically
    +        // represented uppercase.
    +        rootPath = rootPath
    +            .toUpperCase()
    +            .replace(/\//g, '\\')
    +            .replace(uncDriveRegexp, '$1\\');
    +        return rootPath === compare;
    +    }
    +}
    +/**
    + * Path class used on all posix systems.
    + *
    + * Uses `'/'` as the path separator.
    + */
    +export class PathPosix extends PathBase {
    +    /**
    +     * separator for parsing path strings
    +     */
    +    splitSep = '/';
    +    /**
    +     * separator for generating path strings
    +     */
    +    sep = '/';
    +    /**
    +     * Do not create new Path objects directly.  They should always be accessed
    +     * via the PathScurry class or other methods on the Path class.
    +     *
    +     * @internal
    +     */
    +    constructor(name, type = UNKNOWN, root, roots, nocase, children, opts) {
    +        super(name, type, root, roots, nocase, children, opts);
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRootString(path) {
    +        return path.startsWith('/') ? '/' : '';
    +    }
    +    /**
    +     * @internal
    +     */
    +    getRoot(_rootPath) {
    +        return this.root;
    +    }
    +    /**
    +     * @internal
    +     */
    +    newChild(name, type = UNKNOWN, opts = {}) {
    +        return new PathPosix(name, type, this.root, this.roots, this.nocase, this.childrenCache(), opts);
    +    }
    +}
    +/**
    + * The base class for all PathScurry classes, providing the interface for path
    + * resolution and filesystem operations.
    + *
    + * Typically, you should *not* instantiate this class directly, but rather one
    + * of the platform-specific classes, or the exported {@link PathScurry} which
    + * defaults to the current platform.
    + */
    +export class PathScurryBase {
    +    /**
    +     * The root Path entry for the current working directory of this Scurry
    +     */
    +    root;
    +    /**
    +     * The string path for the root of this Scurry's current working directory
    +     */
    +    rootPath;
    +    /**
    +     * A collection of all roots encountered, referenced by rootPath
    +     */
    +    roots;
    +    /**
    +     * The Path entry corresponding to this PathScurry's current working directory.
    +     */
    +    cwd;
    +    #resolveCache;
    +    #children;
    +    /**
    +     * Perform path comparisons case-insensitively.
    +     *
    +     * Defaults true on Darwin and Windows systems, false elsewhere.
    +     */
    +    nocase;
    +    #fs;
    +    /**
    +     * This class should not be instantiated directly.
    +     *
    +     * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry
    +     *
    +     * @internal
    +     */
    +    constructor(cwd = process.cwd(), pathImpl, sep, { nocase, childrenCacheSize = 16 * 1024, fs = defaultFS, } = {}) {
    +        this.#fs = fsFromOption(fs);
    +        if (cwd instanceof URL || cwd.startsWith('file://')) {
    +            cwd = fileURLToPath(cwd);
    +        }
    +        // resolve and split root, and then add to the store.
    +        // this is the only time we call path.resolve()
    +        const cwdPath = pathImpl.resolve(cwd);
    +        this.roots = Object.create(null);
    +        this.rootPath = this.parseRootPath(cwdPath);
    +        this.#resolveCache = new ResolveCache();
    +        this.#children = new ChildrenCache(childrenCacheSize);
    +        const split = cwdPath.substring(this.rootPath.length).split(sep);
    +        // resolve('/') leaves '', splits to [''], we don't want that.
    +        if (split.length === 1 && !split[0]) {
    +            split.pop();
    +        }
    +        /* c8 ignore start */
    +        if (nocase === undefined) {
    +            throw new TypeError('must provide nocase setting to PathScurryBase ctor');
    +        }
    +        /* c8 ignore stop */
    +        this.nocase = nocase;
    +        this.root = this.newRoot(this.#fs);
    +        this.roots[this.rootPath] = this.root;
    +        let prev = this.root;
    +        let len = split.length - 1;
    +        const joinSep = pathImpl.sep;
    +        let abs = this.rootPath;
    +        let sawFirst = false;
    +        for (const part of split) {
    +            prev = prev.child(part, {
    +                relative: new Array(len--).fill('..').join(joinSep),
    +                fullpath: (abs += (sawFirst ? '' : joinSep) + part),
    +            });
    +            sawFirst = true;
    +        }
    +        this.cwd = prev;
    +    }
    +    /**
    +     * Get the depth of a provided path, string, or the cwd
    +     */
    +    depth(path = this.cwd) {
    +        if (typeof path === 'string') {
    +            path = this.cwd.resolve(path);
    +        }
    +        return path.depth();
    +    }
    +    /**
    +     * Return the cache of child entries.  Exposed so subclasses can create
    +     * child Path objects in a platform-specific way.
    +     *
    +     * @internal
    +     */
    +    childrenCache() {
    +        return this.#children;
    +    }
    +    /**
    +     * Resolve one or more path strings to a resolved string
    +     *
    +     * Same interface as require('path').resolve.
    +     *
    +     * Much faster than path.resolve() when called multiple times for the same
    +     * path, because the resolved Path objects are cached.  Much slower
    +     * otherwise.
    +     */
    +    resolve(...paths) {
    +        // first figure out the minimum number of paths we have to test
    +        // we always start at cwd, but any absolutes will bump the start
    +        let r = '';
    +        for (let i = paths.length - 1; i >= 0; i--) {
    +            const p = paths[i];
    +            if (!p || p === '.')
    +                continue;
    +            r = r ? `${p}/${r}` : p;
    +            if (this.isAbsolute(p)) {
    +                break;
    +            }
    +        }
    +        const cached = this.#resolveCache.get(r);
    +        if (cached !== undefined) {
    +            return cached;
    +        }
    +        const result = this.cwd.resolve(r).fullpath();
    +        this.#resolveCache.set(r, result);
    +        return result;
    +    }
    +    /**
    +     * find the relative path from the cwd to the supplied path string or entry
    +     */
    +    relative(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.relative();
    +    }
    +    /**
    +     * Return the basename for the provided string or Path object
    +     */
    +    basename(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.name;
    +    }
    +    /**
    +     * Return the dirname for the provided string or Path object
    +     */
    +    dirname(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return (entry.parent || entry).fullpath();
    +    }
    +    async readdir(entry = this.cwd, opts = {
    +        withFileTypes: true,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes } = opts;
    +        if (!entry.canReaddir()) {
    +            return [];
    +        }
    +        else {
    +            const p = await entry.readdir();
    +            return withFileTypes ? p : p.map(e => e.name);
    +        }
    +    }
    +    readdirSync(entry = this.cwd, opts = {
    +        withFileTypes: true,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true } = opts;
    +        if (!entry.canReaddir()) {
    +            return [];
    +        }
    +        else if (withFileTypes) {
    +            return entry.readdirSync();
    +        }
    +        else {
    +            return entry.readdirSync().map(e => e.name);
    +        }
    +    }
    +    /**
    +     * Call lstat() on the string or Path object, and update all known
    +     * information that can be determined.
    +     *
    +     * Note that unlike `fs.lstat()`, the returned value does not contain some
    +     * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that
    +     * information is required, you will need to call `fs.lstat` yourself.
    +     *
    +     * If the Path refers to a nonexistent file, or if the lstat call fails for
    +     * any reason, `undefined` is returned.  Otherwise the updated Path object is
    +     * returned.
    +     *
    +     * Results are cached, and thus may be out of date if the filesystem is
    +     * mutated.
    +     */
    +    async lstat(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.lstat();
    +    }
    +    /**
    +     * synchronous {@link PathScurryBase.lstat}
    +     */
    +    lstatSync(entry = this.cwd) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        return entry.lstatSync();
    +    }
    +    async readlink(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = await entry.readlink();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    readlinkSync(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = entry.readlinkSync();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    async realpath(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = await entry.realpath();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    realpathSync(entry = this.cwd, { withFileTypes } = {
    +        withFileTypes: false,
    +    }) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            withFileTypes = entry.withFileTypes;
    +            entry = this.cwd;
    +        }
    +        const e = entry.realpathSync();
    +        return withFileTypes ? e : e?.fullpath();
    +    }
    +    async walk(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = [];
    +        if (!filter || filter(entry)) {
    +            results.push(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const dirs = new Set();
    +        const walk = (dir, cb) => {
    +            dirs.add(dir);
    +            dir.readdirCB((er, entries) => {
    +                /* c8 ignore start */
    +                if (er) {
    +                    return cb(er);
    +                }
    +                /* c8 ignore stop */
    +                let len = entries.length;
    +                if (!len)
    +                    return cb();
    +                const next = () => {
    +                    if (--len === 0) {
    +                        cb();
    +                    }
    +                };
    +                for (const e of entries) {
    +                    if (!filter || filter(e)) {
    +                        results.push(withFileTypes ? e : e.fullpath());
    +                    }
    +                    if (follow && e.isSymbolicLink()) {
    +                        e.realpath()
    +                            .then(r => (r?.isUnknown() ? r.lstat() : r))
    +                            .then(r => r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next());
    +                    }
    +                    else {
    +                        if (e.shouldWalk(dirs, walkFilter)) {
    +                            walk(e, next);
    +                        }
    +                        else {
    +                            next();
    +                        }
    +                    }
    +                }
    +            }, true); // zalgooooooo
    +        };
    +        const start = entry;
    +        return new Promise((res, rej) => {
    +            walk(start, er => {
    +                /* c8 ignore start */
    +                if (er)
    +                    return rej(er);
    +                /* c8 ignore stop */
    +                res(results);
    +            });
    +        });
    +    }
    +    walkSync(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = [];
    +        if (!filter || filter(entry)) {
    +            results.push(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const dirs = new Set([entry]);
    +        for (const dir of dirs) {
    +            const entries = dir.readdirSync();
    +            for (const e of entries) {
    +                if (!filter || filter(e)) {
    +                    results.push(withFileTypes ? e : e.fullpath());
    +                }
    +                let r = e;
    +                if (e.isSymbolicLink()) {
    +                    if (!(follow && (r = e.realpathSync())))
    +                        continue;
    +                    if (r.isUnknown())
    +                        r.lstatSync();
    +                }
    +                if (r.shouldWalk(dirs, walkFilter)) {
    +                    dirs.add(r);
    +                }
    +            }
    +        }
    +        return results;
    +    }
    +    /**
    +     * Support for `for await`
    +     *
    +     * Alias for {@link PathScurryBase.iterate}
    +     *
    +     * Note: As of Node 19, this is very slow, compared to other methods of
    +     * walking.  Consider using {@link PathScurryBase.stream} if memory overhead
    +     * and backpressure are concerns, or {@link PathScurryBase.walk} if not.
    +     */
    +    [Symbol.asyncIterator]() {
    +        return this.iterate();
    +    }
    +    iterate(entry = this.cwd, options = {}) {
    +        // iterating async over the stream is significantly more performant,
    +        // especially in the warm-cache scenario, because it buffers up directory
    +        // entries in the background instead of waiting for a yield for each one.
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            options = entry;
    +            entry = this.cwd;
    +        }
    +        return this.stream(entry, options)[Symbol.asyncIterator]();
    +    }
    +    /**
    +     * Iterating over a PathScurry performs a synchronous walk.
    +     *
    +     * Alias for {@link PathScurryBase.iterateSync}
    +     */
    +    [Symbol.iterator]() {
    +        return this.iterateSync();
    +    }
    +    *iterateSync(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        if (!filter || filter(entry)) {
    +            yield withFileTypes ? entry : entry.fullpath();
    +        }
    +        const dirs = new Set([entry]);
    +        for (const dir of dirs) {
    +            const entries = dir.readdirSync();
    +            for (const e of entries) {
    +                if (!filter || filter(e)) {
    +                    yield withFileTypes ? e : e.fullpath();
    +                }
    +                let r = e;
    +                if (e.isSymbolicLink()) {
    +                    if (!(follow && (r = e.realpathSync())))
    +                        continue;
    +                    if (r.isUnknown())
    +                        r.lstatSync();
    +                }
    +                if (r.shouldWalk(dirs, walkFilter)) {
    +                    dirs.add(r);
    +                }
    +            }
    +        }
    +    }
    +    stream(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = new Minipass({ objectMode: true });
    +        if (!filter || filter(entry)) {
    +            results.write(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const dirs = new Set();
    +        const queue = [entry];
    +        let processing = 0;
    +        const process = () => {
    +            let paused = false;
    +            while (!paused) {
    +                const dir = queue.shift();
    +                if (!dir) {
    +                    if (processing === 0)
    +                        results.end();
    +                    return;
    +                }
    +                processing++;
    +                dirs.add(dir);
    +                const onReaddir = (er, entries, didRealpaths = false) => {
    +                    /* c8 ignore start */
    +                    if (er)
    +                        return results.emit('error', er);
    +                    /* c8 ignore stop */
    +                    if (follow && !didRealpaths) {
    +                        const promises = [];
    +                        for (const e of entries) {
    +                            if (e.isSymbolicLink()) {
    +                                promises.push(e
    +                                    .realpath()
    +                                    .then((r) => r?.isUnknown() ? r.lstat() : r));
    +                            }
    +                        }
    +                        if (promises.length) {
    +                            Promise.all(promises).then(() => onReaddir(null, entries, true));
    +                            return;
    +                        }
    +                    }
    +                    for (const e of entries) {
    +                        if (e && (!filter || filter(e))) {
    +                            if (!results.write(withFileTypes ? e : e.fullpath())) {
    +                                paused = true;
    +                            }
    +                        }
    +                    }
    +                    processing--;
    +                    for (const e of entries) {
    +                        const r = e.realpathCached() || e;
    +                        if (r.shouldWalk(dirs, walkFilter)) {
    +                            queue.push(r);
    +                        }
    +                    }
    +                    if (paused && !results.flowing) {
    +                        results.once('drain', process);
    +                    }
    +                    else if (!sync) {
    +                        process();
    +                    }
    +                };
    +                // zalgo containment
    +                let sync = true;
    +                dir.readdirCB(onReaddir, true);
    +                sync = false;
    +            }
    +        };
    +        process();
    +        return results;
    +    }
    +    streamSync(entry = this.cwd, opts = {}) {
    +        if (typeof entry === 'string') {
    +            entry = this.cwd.resolve(entry);
    +        }
    +        else if (!(entry instanceof PathBase)) {
    +            opts = entry;
    +            entry = this.cwd;
    +        }
    +        const { withFileTypes = true, follow = false, filter, walkFilter, } = opts;
    +        const results = new Minipass({ objectMode: true });
    +        const dirs = new Set();
    +        if (!filter || filter(entry)) {
    +            results.write(withFileTypes ? entry : entry.fullpath());
    +        }
    +        const queue = [entry];
    +        let processing = 0;
    +        const process = () => {
    +            let paused = false;
    +            while (!paused) {
    +                const dir = queue.shift();
    +                if (!dir) {
    +                    if (processing === 0)
    +                        results.end();
    +                    return;
    +                }
    +                processing++;
    +                dirs.add(dir);
    +                const entries = dir.readdirSync();
    +                for (const e of entries) {
    +                    if (!filter || filter(e)) {
    +                        if (!results.write(withFileTypes ? e : e.fullpath())) {
    +                            paused = true;
    +                        }
    +                    }
    +                }
    +                processing--;
    +                for (const e of entries) {
    +                    let r = e;
    +                    if (e.isSymbolicLink()) {
    +                        if (!(follow && (r = e.realpathSync())))
    +                            continue;
    +                        if (r.isUnknown())
    +                            r.lstatSync();
    +                    }
    +                    if (r.shouldWalk(dirs, walkFilter)) {
    +                        queue.push(r);
    +                    }
    +                }
    +            }
    +            if (paused && !results.flowing)
    +                results.once('drain', process);
    +        };
    +        process();
    +        return results;
    +    }
    +}
    +/**
    + * Windows implementation of {@link PathScurryBase}
    + *
    + * Defaults to case insensitve, uses `'\\'` to generate path strings.  Uses
    + * {@link PathWin32} for Path objects.
    + */
    +export class PathScurryWin32 extends PathScurryBase {
    +    /**
    +     * separator for generating path strings
    +     */
    +    sep = '\\';
    +    constructor(cwd = process.cwd(), opts = {}) {
    +        const { nocase = true } = opts;
    +        super(cwd, win32, '\\', { ...opts, nocase });
    +        this.nocase = nocase;
    +        for (let p = this.cwd; p; p = p.parent) {
    +            p.nocase = this.nocase;
    +        }
    +    }
    +    /**
    +     * @internal
    +     */
    +    parseRootPath(dir) {
    +        // if the path starts with a single separator, it's not a UNC, and we'll
    +        // just get separator as the root, and driveFromUNC will return \
    +        // In that case, mount \ on the root from the cwd.
    +        return win32.parse(dir).root.toUpperCase();
    +    }
    +    /**
    +     * @internal
    +     */
    +    newRoot(fs) {
    +        return new PathWin32(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    +    }
    +    /**
    +     * Return true if the provided path string is an absolute path
    +     */
    +    isAbsolute(p) {
    +        return (p.startsWith('/') || p.startsWith('\\') || /^[a-z]:(\/|\\)/i.test(p));
    +    }
    +}
    +/**
    + * {@link PathScurryBase} implementation for all posix systems other than Darwin.
    + *
    + * Defaults to case-sensitive matching, uses `'/'` to generate path strings.
    + *
    + * Uses {@link PathPosix} for Path objects.
    + */
    +export class PathScurryPosix extends PathScurryBase {
    +    /**
    +     * separator for generating path strings
    +     */
    +    sep = '/';
    +    constructor(cwd = process.cwd(), opts = {}) {
    +        const { nocase = false } = opts;
    +        super(cwd, posix, '/', { ...opts, nocase });
    +        this.nocase = nocase;
    +    }
    +    /**
    +     * @internal
    +     */
    +    parseRootPath(_dir) {
    +        return '/';
    +    }
    +    /**
    +     * @internal
    +     */
    +    newRoot(fs) {
    +        return new PathPosix(this.rootPath, IFDIR, undefined, this.roots, this.nocase, this.childrenCache(), { fs });
    +    }
    +    /**
    +     * Return true if the provided path string is an absolute path
    +     */
    +    isAbsolute(p) {
    +        return p.startsWith('/');
    +    }
    +}
    +/**
    + * {@link PathScurryBase} implementation for Darwin (macOS) systems.
    + *
    + * Defaults to case-insensitive matching, uses `'/'` for generating path
    + * strings.
    + *
    + * Uses {@link PathPosix} for Path objects.
    + */
    +export class PathScurryDarwin extends PathScurryPosix {
    +    constructor(cwd = process.cwd(), opts = {}) {
    +        const { nocase = true } = opts;
    +        super(cwd, { ...opts, nocase });
    +    }
    +}
    +/**
    + * Default {@link PathBase} implementation for the current platform.
    + *
    + * {@link PathWin32} on Windows systems, {@link PathPosix} on all others.
    + */
    +export const Path = process.platform === 'win32' ? PathWin32 : PathPosix;
    +/**
    + * Default {@link PathScurryBase} implementation for the current platform.
    + *
    + * {@link PathScurryWin32} on Windows systems, {@link PathScurryDarwin} on
    + * Darwin (macOS) systems, {@link PathScurryPosix} on all others.
    + */
    +export const PathScurry = process.platform === 'win32'
    +    ? PathScurryWin32
    +    : process.platform === 'darwin'
    +        ? PathScurryDarwin
    +        : PathScurryPosix;
    +//# sourceMappingURL=index.js.map
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/path-scurry/dist/mjs/package.json b/deps/npm/node_modules/path-scurry/dist/mjs/package.json
    new file mode 100644
    index 00000000000000..3dbc1ca591c055
    --- /dev/null
    +++ b/deps/npm/node_modules/path-scurry/dist/mjs/package.json
    @@ -0,0 +1,3 @@
    +{
    +  "type": "module"
    +}
    diff --git a/deps/npm/node_modules/path-scurry/package.json b/deps/npm/node_modules/path-scurry/package.json
    new file mode 100644
    index 00000000000000..d19262f6591a3a
    --- /dev/null
    +++ b/deps/npm/node_modules/path-scurry/package.json
    @@ -0,0 +1,87 @@
    +{
    +  "name": "path-scurry",
    +  "version": "1.6.1",
    +  "description": "walk paths fast and efficiently",
    +  "author": "Isaac Z. Schlueter  (https://blog.izs.me)",
    +  "main": "./dist/cjs/index.js",
    +  "module": "./dist/mjs/index.js",
    +  "exports": {
    +    ".": {
    +      "import": {
    +        "types": "./dist/mjs/index.d.ts",
    +        "default": "./dist/mjs/index.js"
    +      },
    +      "require": {
    +        "types": "./dist/cjs/index.d.ts",
    +        "default": "./dist/cjs/index.js"
    +      }
    +    }
    +  },
    +  "files": [
    +    "dist"
    +  ],
    +  "license": "BlueOak-1.0.0",
    +  "scripts": {
    +    "preversion": "npm test",
    +    "postversion": "npm publish",
    +    "prepublishOnly": "git push origin --follow-tags",
    +    "preprepare": "rm -rf dist",
    +    "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json",
    +    "postprepare": "bash ./scripts/fixup.sh",
    +    "pretest": "npm run prepare",
    +    "presnap": "npm run prepare",
    +    "test": "c8 tap",
    +    "snap": "c8 tap",
    +    "format": "prettier --write . --loglevel warn",
    +    "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts",
    +    "bench": "bash ./scripts/bench.sh"
    +  },
    +  "prettier": {
    +    "semi": false,
    +    "printWidth": 75,
    +    "tabWidth": 2,
    +    "useTabs": false,
    +    "singleQuote": true,
    +    "jsxSingleQuote": false,
    +    "bracketSameLine": true,
    +    "arrowParens": "avoid",
    +    "endOfLine": "lf"
    +  },
    +  "tap": {
    +    "coverage": false,
    +    "node-arg": [
    +      "--no-warnings",
    +      "--loader",
    +      "ts-node/esm"
    +    ],
    +    "ts": false
    +  },
    +  "devDependencies": {
    +    "@nodelib/fs.walk": "^1.2.8",
    +    "@types/node": "^18.11.18",
    +    "@types/tap": "^15.0.7",
    +    "c8": "^7.12.0",
    +    "eslint-config-prettier": "^8.6.0",
    +    "mkdirp": "^2.1.3",
    +    "prettier": "^2.8.3",
    +    "rimraf": "^4.1.2",
    +    "tap": "^16.3.4",
    +    "ts-node": "^10.9.1",
    +    "typedoc": "^0.23.24",
    +    "typescript": "^4.9.4"
    +  },
    +  "engines": {
    +    "node": ">=14"
    +  },
    +  "funding": {
    +    "url": "https://github.com/sponsors/isaacs"
    +  },
    +  "repository": {
    +    "type": "git",
    +    "url": "git+https://github.com/isaacs/path-walker"
    +  },
    +  "dependencies": {
    +    "lru-cache": "^7.14.1",
    +    "minipass": "^4.0.2"
    +  }
    +}
    diff --git a/deps/npm/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts b/deps/npm/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts
    deleted file mode 100644
    index 89a2c5239edb16..00000000000000
    --- a/deps/npm/node_modules/postcss-selector-parser/postcss-selector-parser.d.ts
    +++ /dev/null
    @@ -1,555 +0,0 @@
    -// Type definitions for postcss-selector-parser 2.2.3
    -// Definitions by: Chris Eppstein 
    -
    -/*~ Note that ES6 modules cannot directly export callable functions.
    - *~ This file should be imported using the CommonJS-style:
    - *~   import x = require('someLibrary');
    - *~
    - *~ Refer to the documentation to understand common
    - *~ workarounds for this limitation of ES6 modules.
    - */
    -
    -/*~ This declaration specifies that the function
    - *~ is the exported object from the file
    - */
    -export = parser;
    -
    -// A type that's T but not U.
    -type Diff = T extends U ? never : T;
    -
    -// TODO: Conditional types in TS 1.8 will really clean this up.
    -declare function parser(): parser.Processor;
    -declare function parser(processor: parser.AsyncProcessor): parser.Processor;
    -declare function parser(processor: parser.AsyncProcessor): parser.Processor;
    -declare function parser(processor: parser.SyncProcessor): parser.Processor;
    -declare function parser(processor: parser.SyncProcessor): parser.Processor;
    -declare function parser(processor?: parser.SyncProcessor | parser.AsyncProcessor): parser.Processor;
    -
    -/*~ If you want to expose types from your module as well, you can
    - *~ place them in this block. Often you will want to describe the
    - *~ shape of the return type of the function; that type should
    - *~ be declared in here, as this example shows.
    - */
    -declare namespace parser {
    -    /* copied from postcss -- so we don't need to add a dependency */
    -    type ErrorOptions = {
    -        plugin?: string;
    -        word?: string;
    -        index?: number
    -    };
    -    /* the bits we use of postcss.Rule, copied from postcss -- so we don't need to add a dependency */
    -    type PostCSSRuleNode = {
    -        selector: string
    -        /**
    -         * @returns postcss.CssSyntaxError but it's a complex object, caller
    -         *   should cast to it if they have a dependency on postcss.
    -         */
    -        error(message: string, options?: ErrorOptions): Error;
    -    };
    -    /** Accepts a string  */
    -    type Selectors = string | PostCSSRuleNode
    -    type ProcessorFn = (root: parser.Root) => ReturnType;
    -    type SyncProcessor = ProcessorFn;
    -    type AsyncProcessor = ProcessorFn>;
    -
    -    const TAG: "tag";
    -    const STRING: "string";
    -    const SELECTOR: "selector";
    -    const ROOT: "root";
    -    const PSEUDO: "pseudo";
    -    const NESTING: "nesting";
    -    const ID: "id";
    -    const COMMENT: "comment";
    -    const COMBINATOR: "combinator";
    -    const CLASS: "class";
    -    const ATTRIBUTE: "attribute";
    -    const UNIVERSAL: "universal";
    -
    -    interface NodeTypes {
    -        tag: Tag,
    -        string: String,
    -        selector: Selector,
    -        root: Root,
    -        pseudo: Pseudo,
    -        nesting: Nesting,
    -        id: Identifier,
    -        comment: Comment,
    -        combinator: Combinator,
    -        class: ClassName,
    -        attribute: Attribute,
    -        universal: Universal
    -    }
    -
    -    type Node = NodeTypes[keyof NodeTypes];
    -
    -    function isNode(node: any): node is Node;
    -
    -    interface Options {
    -        /**
    -         * Preserve whitespace when true. Default: false;
    -         */
    -        lossless: boolean;
    -        /**
    -         * When true and a postcss.Rule is passed, set the result of
    -         * processing back onto the rule when done. Default: false.
    -         */
    -        updateSelector: boolean;
    -    }
    -    class Processor<
    -        TransformType = never,
    -        SyncSelectorsType extends Selectors | never = Selectors
    -    > {
    -        res: Root;
    -        readonly result: String;
    -        ast(selectors: Selectors, options?: Partial): Promise;
    -        astSync(selectors: SyncSelectorsType, options?: Partial): Root;
    -        transform(selectors: Selectors, options?: Partial): Promise;
    -        transformSync(selectors: SyncSelectorsType, options?: Partial): TransformType;
    -        process(selectors: Selectors, options?: Partial): Promise;
    -        processSync(selectors: SyncSelectorsType, options?: Partial): string;
    -    }
    -    interface ParserOptions {
    -        css: string;
    -        error: (message: string, options: ErrorOptions) => Error;
    -        options: Options;
    -    }
    -    class Parser {
    -        input: ParserOptions;
    -        lossy: boolean;
    -        position: number;
    -        root: Root;
    -        selectors: string;
    -        current: Selector;
    -        constructor(input: ParserOptions);
    -        /**
    -         * Raises an error, if the processor is invoked on
    -         * a postcss Rule node, a better error message is raised.
    -         */
    -        error(message: string, options?: ErrorOptions): void;
    -    }
    -    interface NodeSource {
    -        start?: {
    -            line: number,
    -            column: number
    -        },
    -        end?: {
    -            line: number,
    -            column: number
    -        }
    -    }
    -    interface SpaceAround {
    -      before: string;
    -      after: string;
    -    }
    -    interface Spaces extends SpaceAround {
    -      [spaceType: string]: string | Partial | undefined;
    -    }
    -    interface NodeOptions {
    -        value: Value;
    -        spaces?: Partial;
    -        source?: NodeSource;
    -        sourceIndex?: number;
    -    }
    -    interface Base<
    -        Value extends string | undefined = string,
    -        ParentType extends Container | undefined = Container | undefined
    -    > {
    -        type: keyof NodeTypes;
    -        parent: ParentType;
    -        value: Value;
    -        spaces: Spaces;
    -        source?: NodeSource;
    -        sourceIndex: number;
    -        rawSpaceBefore: string;
    -        rawSpaceAfter: string;
    -        remove(): Node;
    -        replaceWith(...nodes: Node[]): Node;
    -        next(): Node;
    -        prev(): Node;
    -        clone(opts: {[override: string]:any}): Node;
    -        /**
    -         * Return whether this node includes the character at the position of the given line and column.
    -         * Returns undefined if the nodes lack sufficient source metadata to determine the position.
    -         * @param line 1-index based line number relative to the start of the selector.
    -         * @param column 1-index based column number relative to the start of the selector.
    -         */
    -        isAtPosition(line: number, column: number): boolean | undefined;
    -        /**
    -         * Some non-standard syntax doesn't follow normal escaping rules for css,
    -         * this allows the escaped value to be specified directly, allowing illegal characters to be
    -         * directly inserted into css output.
    -         * @param name the property to set
    -         * @param value the unescaped value of the property
    -         * @param valueEscaped optional. the escaped value of the property.
    -         */
    -        setPropertyAndEscape(name: string, value: any, valueEscaped: string): void;
    -        /**
    -         * When you want a value to passed through to CSS directly. This method
    -         * deletes the corresponding raw value causing the stringifier to fallback
    -         * to the unescaped value.
    -         * @param name the property to set.
    -         * @param value The value that is both escaped and unescaped.
    -         */
    -        setPropertyWithoutEscape(name: string, value: any): void;
    -        /**
    -         * Some non-standard syntax doesn't follow normal escaping rules for css.
    -         * This allows non standard syntax to be appended to an existing property
    -         * by specifying the escaped value. By specifying the escaped value,
    -         * illegal characters are allowed to be directly inserted into css output.
    -         * @param {string} name the property to set
    -         * @param {any} value the unescaped value of the property
    -         * @param {string} valueEscaped optional. the escaped value of the property.
    -         */
    -        appendToPropertyAndEscape(name: string, value: any, valueEscaped: string): void;
    -        toString(): string;
    -    }
    -    interface ContainerOptions extends NodeOptions {
    -        nodes?: Array;
    -    }
    -    interface Container<
    -        Value extends string | undefined = string,
    -        Child extends Node = Node
    -    > extends Base {
    -        nodes: Array;
    -        append(selector: Selector): this;
    -        prepend(selector: Selector): this;
    -        at(index: number): Child;
    -        /**
    -         * Return the most specific node at the line and column number given.
    -         * The source location is based on the original parsed location, locations aren't
    -         * updated as selector nodes are mutated.
    -         *
    -         * Note that this location is relative to the location of the first character
    -         * of the selector, and not the location of the selector in the overall document
    -         * when used in conjunction with postcss.
    -         *
    -         * If not found, returns undefined.
    -         * @param line The line number of the node to find. (1-based index)
    -         * @param col  The column number of the node to find. (1-based index)
    -         */
    -        atPosition(line: number, column: number): Child;
    -        index(child: Child): number;
    -        readonly first: Child;
    -        readonly last: Child;
    -        readonly length: number;
    -        removeChild(child: Child): this;
    -        removeAll(): Container;
    -        empty(): Container;
    -        insertAfter(oldNode: Child, newNode: Child): this;
    -        insertBefore(oldNode: Child, newNode: Child): this;
    -        each(callback: (node: Child) => boolean | void): boolean | undefined;
    -        walk(
    -            callback: (node: Node) => boolean | void
    -        ): boolean | undefined;
    -        walkAttributes(
    -            callback: (node: Attribute) => boolean | void
    -        ): boolean | undefined;
    -        walkClasses(
    -            callback: (node: ClassName) => boolean | void
    -        ): boolean | undefined;
    -        walkCombinators(
    -            callback: (node: Combinator) => boolean | void
    -        ): boolean | undefined;
    -        walkComments(
    -            callback: (node: Comment) => boolean | void
    -        ): boolean | undefined;
    -        walkIds(
    -            callback: (node: Identifier) => boolean | void
    -        ): boolean | undefined;
    -        walkNesting(
    -            callback: (node: Nesting) => boolean | void
    -        ): boolean | undefined;
    -        walkPseudos(
    -            callback: (node: Pseudo) => boolean | void
    -        ): boolean | undefined;
    -        walkTags(callback: (node: Tag) => boolean | void): boolean | undefined;
    -        split(callback: (node: Child) => boolean): [Child[], Child[]];
    -        map(callback: (node: Child) => T): T[];
    -        reduce(
    -            callback: (
    -                previousValue: Child,
    -                currentValue: Child,
    -                currentIndex: number,
    -                array: readonly Child[]
    -            ) => Child
    -        ): Child;
    -        reduce(
    -            callback: (
    -                previousValue: Child,
    -                currentValue: Child,
    -                currentIndex: number,
    -                array: readonly Child[]
    -            ) => Child,
    -            initialValue: Child
    -        ): Child;
    -        reduce(
    -            callback: (
    -                previousValue: T,
    -                currentValue: Child,
    -                currentIndex: number,
    -                array: readonly Child[]
    -            ) => T,
    -            initialValue: T
    -        ): T;
    -        every(callback: (node: Child) => boolean): boolean;
    -        some(callback: (node: Child) => boolean): boolean;
    -        filter(callback: (node: Child) => boolean): Child[];
    -        sort(callback: (nodeA: Child, nodeB: Child) => number): Child[];
    -        toString(): string;
    -    }
    -    function isContainer(node: any): node is Root | Selector | Pseudo;
    -
    -    interface NamespaceOptions extends NodeOptions {
    -        namespace?: string | true;
    -    }
    -    interface Namespace extends Base {
    -        /** alias for namespace */
    -        ns: string | true;
    -        /**
    -         *  namespace prefix.
    -         */
    -        namespace: string | true;
    -        /**
    -         * If a namespace exists, prefix the value provided with it, separated by |.
    -         */
    -        qualifiedName(value: string): string;
    -        /**
    -         * A string representing the namespace suitable for output.
    -         */
    -        readonly namespaceString: string;
    -    }
    -    function isNamespace(node: any): node is Attribute | Tag;
    -
    -    interface Root extends Container {
    -        type: "root";
    -        /**
    -         * Raises an error, if the processor is invoked on
    -         * a postcss Rule node, a better error message is raised.
    -         */
    -        error(message: string, options?: ErrorOptions): Error;
    -        nodeAt(line: number, column: number): Node
    -    }
    -    function root(opts: ContainerOptions): Root;
    -    function isRoot(node: any): node is Root;
    -
    -    interface _Selector extends Container> {
    -        type: "selector";
    -    }
    -    type Selector = _Selector;
    -    function selector(opts: ContainerOptions): Selector;
    -    function isSelector(node: any): node is Selector;
    -
    -    interface CombinatorRaws {
    -        value?: string;
    -        spaces?: {
    -            before?: string;
    -            after?: string;
    -        };
    -    }
    -    interface Combinator extends Base {
    -        type: "combinator";
    -        raws?: CombinatorRaws;
    -    }
    -    function combinator(opts: NodeOptions): Combinator;
    -    function isCombinator(node: any): node is Combinator;
    -
    -    interface ClassName extends Base {
    -        type: "class";
    -    }
    -    function className(opts: NamespaceOptions): ClassName;
    -    function isClassName(node: any): node is ClassName;
    -
    -    type AttributeOperator = "=" | "~=" | "|=" | "^=" | "$=" | "*=";
    -    type QuoteMark = '"' | "'" | null;
    -    interface PreferredQuoteMarkOptions {
    -        quoteMark?: QuoteMark;
    -        preferCurrentQuoteMark?: boolean;
    -    }
    -    interface SmartQuoteMarkOptions extends PreferredQuoteMarkOptions {
    -        smart?: boolean;
    -    }
    -    interface AttributeOptions extends NamespaceOptions {
    -        attribute: string;
    -        operator?: AttributeOperator;
    -        insensitive?: boolean;
    -        quoteMark?: QuoteMark;
    -        /** @deprecated Use quoteMark instead. */
    -        quoted?: boolean;
    -        spaces?: {
    -            before?: string;
    -            after?: string;
    -            attribute?: Partial;
    -            operator?: Partial;
    -            value?: Partial;
    -            insensitive?: Partial;
    -        }
    -        raws: {
    -            unquoted?: string;
    -            attribute?: string;
    -            operator?: string;
    -            value?: string;
    -            insensitive?: string;
    -            spaces?: {
    -                attribute?: Partial;
    -                operator?: Partial;
    -                value?: Partial;
    -                insensitive?: Partial;
    -            }
    -        };
    -    }
    -    interface Attribute extends Namespace {
    -        type: "attribute";
    -        attribute: string;
    -        operator?: AttributeOperator;
    -        insensitive?: boolean;
    -        quoteMark: QuoteMark;
    -        quoted?: boolean;
    -        spaces: {
    -            before: string;
    -            after: string;
    -            attribute?: Partial;
    -            operator?: Partial;
    -            value?: Partial;
    -            insensitive?: Partial;
    -        }
    -        raws: {
    -            /** @deprecated The attribute value is unquoted, use that instead.. */
    -            unquoted?: string;
    -            attribute?: string;
    -            operator?: string;
    -            /** The value of the attribute with quotes and escapes. */
    -            value?: string;
    -            insensitive?: string;
    -            spaces?: {
    -                attribute?: Partial;
    -                operator?: Partial;
    -                value?: Partial;
    -                insensitive?: Partial;
    -            }
    -        };
    -        /**
    -         * The attribute name after having been qualified with a namespace.
    -         */
    -        readonly qualifiedAttribute: string;
    -
    -        /**
    -         * The case insensitivity flag or an empty string depending on whether this
    -         * attribute is case insensitive.
    -         */
    -        readonly insensitiveFlag : 'i' | '';
    -
    -        /**
    -         * Returns the attribute's value quoted such that it would be legal to use
    -         * in the value of a css file. The original value's quotation setting
    -         * used for stringification is left unchanged. See `setValue(value, options)`
    -         * if you want to control the quote settings of a new value for the attribute or
    -         * `set quoteMark(mark)` if you want to change the quote settings of the current
    -         * value.
    -         *
    -         * You can also change the quotation used for the current value by setting quoteMark.
    -         **/
    -        getQuotedValue(options?: SmartQuoteMarkOptions): string;
    -
    -        /**
    -         * Set the unescaped value with the specified quotation options. The value
    -         * provided must not include any wrapping quote marks -- those quotes will
    -         * be interpreted as part of the value and escaped accordingly.
    -         * @param value
    -         */
    -        setValue(value: string, options?: SmartQuoteMarkOptions): void;
    -
    -        /**
    -         * Intelligently select a quoteMark value based on the value's contents. If
    -         * the value is a legal CSS ident, it will not be quoted. Otherwise a quote
    -         * mark will be picked that minimizes the number of escapes.
    -         *
    -         * If there's no clear winner, the quote mark from these options is used,
    -         * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is
    -         * true). If the quoteMark is unspecified, a double quote is used.
    -         **/
    -        smartQuoteMark(options: PreferredQuoteMarkOptions): QuoteMark;
    -
    -        /**
    -         * Selects the preferred quote mark based on the options and the current quote mark value.
    -         * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`
    -         * instead.
    -         */
    -        preferredQuoteMark(options: PreferredQuoteMarkOptions): QuoteMark
    -
    -        /**
    -         * returns the offset of the attribute part specified relative to the
    -         * start of the node of the output string.
    -         *
    -         * * "ns" - alias for "namespace"
    -         * * "namespace" - the namespace if it exists.
    -         * * "attribute" - the attribute name
    -         * * "attributeNS" - the start of the attribute or its namespace
    -         * * "operator" - the match operator of the attribute
    -         * * "value" - The value (string or identifier)
    -         * * "insensitive" - the case insensitivity flag;
    -         * @param part One of the possible values inside an attribute.
    -         * @returns -1 if the name is invalid or the value doesn't exist in this attribute.
    -         */
    -        offsetOf(part: "ns" | "namespace" | "attribute" | "attributeNS" | "operator" | "value" | "insensitive"): number;
    -    }
    -    function attribute(opts: AttributeOptions): Attribute;
    -    function isAttribute(node: any): node is Attribute;
    -
    -    interface Pseudo extends Container {
    -        type: "pseudo";
    -    }
    -    function pseudo(opts: ContainerOptions): Pseudo;
    -    /**
    -     * Checks wether the node is the Psuedo subtype of node.
    -     */
    -    function isPseudo(node: any): node is Pseudo;
    -
    -    /**
    -     * Checks wether the node is, specifically, a pseudo element instead of
    -     * pseudo class.
    -     */
    -    function isPseudoElement(node: any): node is Pseudo;
    -
    -    /**
    -     * Checks wether the node is, specifically, a pseudo class instead of
    -     * pseudo element.
    -     */
    -    function isPseudoClass(node: any): node is Pseudo;
    -
    -
    -    interface Tag extends Namespace {
    -        type: "tag";
    -    }
    -    function tag(opts: NamespaceOptions): Tag;
    -    function isTag(node: any): node is Tag;
    -
    -    interface Comment extends Base {
    -        type: "comment";
    -    }
    -    function comment(opts: NodeOptions): Comment;
    -    function isComment(node: any): node is Comment;
    -
    -    interface Identifier extends Base {
    -        type: "id";
    -    }
    -    function id(opts: any): any;
    -    function isIdentifier(node: any): node is Identifier;
    -
    -    interface Nesting extends Base {
    -        type: "nesting";
    -    }
    -    function nesting(opts: any): any;
    -    function isNesting(node: any): node is Nesting;
    -
    -    interface String extends Base {
    -        type: "string";
    -    }
    -    function string(opts: NodeOptions): String;
    -    function isString(node: any): node is String;
    -
    -    interface Universal extends Base {
    -        type: "universal";
    -    }
    -    function universal(opts?: NamespaceOptions): any;
    -    function isUniversal(node: any): node is Universal;
    -}
    diff --git a/deps/npm/node_modules/read-package-json/lib/read-json.js b/deps/npm/node_modules/read-package-json/lib/read-json.js
    index c55eca32259edf..e47a1bb2febca4 100644
    --- a/deps/npm/node_modules/read-package-json/lib/read-json.js
    +++ b/deps/npm/node_modules/read-package-json/lib/read-json.js
    @@ -218,15 +218,12 @@ function gypfile (file, data, cb) {
         return cb(null, data)
       }
     
    -  glob('*.gyp', { cwd: dir }, function (er, files) {
    -    if (er) {
    -      return cb(er)
    -    }
    -    if (data.gypfile === false) {
    -      return cb(null, data)
    -    }
    -    gypfile_(file, data, files, cb)
    -  })
    +  if (data.gypfile === false) {
    +    return cb(null, data)
    +  }
    +  glob('*.gyp', { cwd: dir })
    +    .then(files => gypfile_(file, data, files, cb))
    +    .catch(er => cb(er))
     }
     
     function gypfile_ (file, data, files, cb) {
    @@ -246,22 +243,13 @@ function serverjs (file, data, cb) {
       if (s.start) {
         return cb(null, data)
       }
    -  glob('server.js', { cwd: dir }, function (er, files) {
    -    if (er) {
    -      return cb(er)
    +  fs.access(path.join(dir, 'server.js'), (err) => {
    +    if (!err) {
    +      s.start = 'node server.js'
    +      data.scripts = s
         }
    -    serverjs_(file, data, files, cb)
    -  })
    -}
    -
    -function serverjs_ (file, data, files, cb) {
    -  if (!files.length) {
         return cb(null, data)
    -  }
    -  var s = data.scripts || {}
    -  s.start = 'node server.js'
    -  data.scripts = s
    -  return cb(null, data)
    +  })
     }
     
     function authors (file, data, cb) {
    @@ -294,21 +282,20 @@ function readme (file, data, cb) {
       }
       var dir = path.dirname(file)
       var globOpts = { cwd: dir, nocase: true, mark: true }
    -  glob('{README,README.*}', globOpts, function (er, files) {
    -    if (er) {
    -      return cb(er)
    -    }
    -    // don't accept directories.
    -    files = files.filter(function (filtered) {
    -      return !filtered.match(/\/$/)
    +  glob('{README,README.*}', globOpts)
    +    .then(files => {
    +      // don't accept directories.
    +      files = files.filter(function (filtered) {
    +        return !filtered.match(/\/$/)
    +      })
    +      if (!files.length) {
    +        return cb()
    +      }
    +      var fn = preferMarkdownReadme(files)
    +      var rm = path.resolve(dir, fn)
    +      return readme_(file, data, rm, cb)
         })
    -    if (!files.length) {
    -      return cb()
    -    }
    -    var fn = preferMarkdownReadme(files)
    -    var rm = path.resolve(dir, fn)
    -    readme_(file, data, rm, cb)
    -  })
    +    .catch(er => cb(er))
     }
     
     function preferMarkdownReadme (files) {
    @@ -346,15 +333,14 @@ function mans (file, data, cb) {
       }
       const dirname = path.dirname(file)
       cwd = path.resolve(path.dirname(file), cwd)
    -  glob('**/*.[0-9]', { cwd }, function (er, mansGlob) {
    -    if (er) {
    -      return cb(er)
    -    }
    -    data.man = mansGlob.map(man =>
    -      path.relative(dirname, path.join(cwd, man)).split(path.sep).join('/')
    -    )
    -    return cb(null, data)
    -  })
    +  glob('**/*.[0-9]', { cwd })
    +    .then(mansGlob => {
    +      data.man = mansGlob.map(man =>
    +        path.relative(dirname, path.join(cwd, man)).split(path.sep).join('/')
    +      )
    +      return cb(null, data)
    +    })
    +    .catch(er => cb(er))
     }
     
     function bins (file, data, cb) {
    @@ -366,12 +352,9 @@ function bins (file, data, cb) {
       }
     
       m = path.resolve(path.dirname(file), m)
    -  glob('**', { cwd: m }, function (er, binsGlob) {
    -    if (er) {
    -      return cb(er)
    -    }
    -    bins_(file, data, binsGlob, cb)
    -  })
    +  glob('**', { cwd: m })
    +    .then(binsGlob => bins_(file, data, binsGlob, cb))
    +    .catch(er => cb(er))
     }
     
     function bins_ (file, data, binsGlob, cb) {
    diff --git a/deps/npm/node_modules/read-package-json/package.json b/deps/npm/node_modules/read-package-json/package.json
    index 09829fa3fbf785..d1618e3f8977fc 100644
    --- a/deps/npm/node_modules/read-package-json/package.json
    +++ b/deps/npm/node_modules/read-package-json/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "read-package-json",
    -  "version": "6.0.0",
    +  "version": "6.0.1",
       "author": "GitHub Inc.",
       "description": "The thing npm uses to read package.json files with semantics and defaults and validation",
       "repository": {
    @@ -23,14 +23,14 @@
         "template-oss-apply": "template-oss-apply --force"
       },
       "dependencies": {
    -    "glob": "^8.0.1",
    +    "glob": "^9.3.0",
         "json-parse-even-better-errors": "^3.0.0",
         "normalize-package-data": "^5.0.0",
         "npm-normalize-package-bin": "^3.0.0"
       },
       "devDependencies": {
         "@npmcli/eslint-config": "^4.0.0",
    -    "@npmcli/template-oss": "4.5.1",
    +    "@npmcli/template-oss": "4.12.0",
         "tap": "^16.0.1"
       },
       "license": "ISC",
    @@ -43,9 +43,9 @@
       },
       "tap": {
         "branches": 68,
    -    "functions": 83,
    -    "lines": 76,
    -    "statements": 77,
    +    "functions": 74,
    +    "lines": 74,
    +    "statements": 74,
         "nyc-arg": [
           "--exclude",
           "tap-snapshots/**"
    @@ -53,6 +53,6 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.5.1"
    +    "version": "4.12.0"
       }
     }
    diff --git a/deps/npm/node_modules/safe-buffer/index.d.ts b/deps/npm/node_modules/safe-buffer/index.d.ts
    deleted file mode 100644
    index e9fed809a5ab51..00000000000000
    --- a/deps/npm/node_modules/safe-buffer/index.d.ts
    +++ /dev/null
    @@ -1,187 +0,0 @@
    -declare module "safe-buffer" {
    -  export class Buffer {
    -    length: number
    -    write(string: string, offset?: number, length?: number, encoding?: string): number;
    -    toString(encoding?: string, start?: number, end?: number): string;
    -    toJSON(): { type: 'Buffer', data: any[] };
    -    equals(otherBuffer: Buffer): boolean;
    -    compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
    -    copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
    -    slice(start?: number, end?: number): Buffer;
    -    writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
    -    writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
    -    writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
    -    writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
    -    readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
    -    readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
    -    readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
    -    readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
    -    readUInt8(offset: number, noAssert?: boolean): number;
    -    readUInt16LE(offset: number, noAssert?: boolean): number;
    -    readUInt16BE(offset: number, noAssert?: boolean): number;
    -    readUInt32LE(offset: number, noAssert?: boolean): number;
    -    readUInt32BE(offset: number, noAssert?: boolean): number;
    -    readInt8(offset: number, noAssert?: boolean): number;
    -    readInt16LE(offset: number, noAssert?: boolean): number;
    -    readInt16BE(offset: number, noAssert?: boolean): number;
    -    readInt32LE(offset: number, noAssert?: boolean): number;
    -    readInt32BE(offset: number, noAssert?: boolean): number;
    -    readFloatLE(offset: number, noAssert?: boolean): number;
    -    readFloatBE(offset: number, noAssert?: boolean): number;
    -    readDoubleLE(offset: number, noAssert?: boolean): number;
    -    readDoubleBE(offset: number, noAssert?: boolean): number;
    -    swap16(): Buffer;
    -    swap32(): Buffer;
    -    swap64(): Buffer;
    -    writeUInt8(value: number, offset: number, noAssert?: boolean): number;
    -    writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
    -    writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
    -    writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
    -    writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;
    -    writeInt8(value: number, offset: number, noAssert?: boolean): number;
    -    writeInt16LE(value: number, offset: number, noAssert?: boolean): number;
    -    writeInt16BE(value: number, offset: number, noAssert?: boolean): number;
    -    writeInt32LE(value: number, offset: number, noAssert?: boolean): number;
    -    writeInt32BE(value: number, offset: number, noAssert?: boolean): number;
    -    writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
    -    writeFloatBE(value: number, offset: number, noAssert?: boolean): number;
    -    writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
    -    writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
    -    fill(value: any, offset?: number, end?: number): this;
    -    indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
    -    lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
    -    includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
    -
    -    /**
    -     * Allocates a new buffer containing the given {str}.
    -     *
    -     * @param str String to store in buffer.
    -     * @param encoding encoding to use, optional.  Default is 'utf8'
    -     */
    -     constructor (str: string, encoding?: string);
    -    /**
    -     * Allocates a new buffer of {size} octets.
    -     *
    -     * @param size count of octets to allocate.
    -     */
    -    constructor (size: number);
    -    /**
    -     * Allocates a new buffer containing the given {array} of octets.
    -     *
    -     * @param array The octets to store.
    -     */
    -    constructor (array: Uint8Array);
    -    /**
    -     * Produces a Buffer backed by the same allocated memory as
    -     * the given {ArrayBuffer}.
    -     *
    -     *
    -     * @param arrayBuffer The ArrayBuffer with which to share memory.
    -     */
    -    constructor (arrayBuffer: ArrayBuffer);
    -    /**
    -     * Allocates a new buffer containing the given {array} of octets.
    -     *
    -     * @param array The octets to store.
    -     */
    -    constructor (array: any[]);
    -    /**
    -     * Copies the passed {buffer} data onto a new {Buffer} instance.
    -     *
    -     * @param buffer The buffer to copy.
    -     */
    -    constructor (buffer: Buffer);
    -    prototype: Buffer;
    -    /**
    -     * Allocates a new Buffer using an {array} of octets.
    -     *
    -     * @param array
    -     */
    -    static from(array: any[]): Buffer;
    -    /**
    -     * When passed a reference to the .buffer property of a TypedArray instance,
    -     * the newly created Buffer will share the same allocated memory as the TypedArray.
    -     * The optional {byteOffset} and {length} arguments specify a memory range
    -     * within the {arrayBuffer} that will be shared by the Buffer.
    -     *
    -     * @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()
    -     * @param byteOffset
    -     * @param length
    -     */
    -    static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
    -    /**
    -     * Copies the passed {buffer} data onto a new Buffer instance.
    -     *
    -     * @param buffer
    -     */
    -    static from(buffer: Buffer): Buffer;
    -    /**
    -     * Creates a new Buffer containing the given JavaScript string {str}.
    -     * If provided, the {encoding} parameter identifies the character encoding.
    -     * If not provided, {encoding} defaults to 'utf8'.
    -     *
    -     * @param str
    -     */
    -    static from(str: string, encoding?: string): Buffer;
    -    /**
    -     * Returns true if {obj} is a Buffer
    -     *
    -     * @param obj object to test.
    -     */
    -    static isBuffer(obj: any): obj is Buffer;
    -    /**
    -     * Returns true if {encoding} is a valid encoding argument.
    -     * Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
    -     *
    -     * @param encoding string to test.
    -     */
    -    static isEncoding(encoding: string): boolean;
    -    /**
    -     * Gives the actual byte length of a string. encoding defaults to 'utf8'.
    -     * This is not the same as String.prototype.length since that returns the number of characters in a string.
    -     *
    -     * @param string string to test.
    -     * @param encoding encoding used to evaluate (defaults to 'utf8')
    -     */
    -    static byteLength(string: string, encoding?: string): number;
    -    /**
    -     * Returns a buffer which is the result of concatenating all the buffers in the list together.
    -     *
    -     * If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
    -     * If the list has exactly one item, then the first item of the list is returned.
    -     * If the list has more than one item, then a new Buffer is created.
    -     *
    -     * @param list An array of Buffer objects to concatenate
    -     * @param totalLength Total length of the buffers when concatenated.
    -     *   If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
    -     */
    -    static concat(list: Buffer[], totalLength?: number): Buffer;
    -    /**
    -     * The same as buf1.compare(buf2).
    -     */
    -    static compare(buf1: Buffer, buf2: Buffer): number;
    -    /**
    -     * Allocates a new buffer of {size} octets.
    -     *
    -     * @param size count of octets to allocate.
    -     * @param fill if specified, buffer will be initialized by calling buf.fill(fill).
    -     *    If parameter is omitted, buffer will be filled with zeros.
    -     * @param encoding encoding used for call to buf.fill while initalizing
    -     */
    -    static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
    -    /**
    -     * Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
    -     * of the newly created Buffer are unknown and may contain sensitive data.
    -     *
    -     * @param size count of octets to allocate
    -     */
    -    static allocUnsafe(size: number): Buffer;
    -    /**
    -     * Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
    -     * of the newly created Buffer are unknown and may contain sensitive data.
    -     *
    -     * @param size count of octets to allocate
    -     */
    -    static allocUnsafeSlow(size: number): Buffer;
    -  }
    -}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/sigstore/dist/ca/format.d.ts b/deps/npm/node_modules/sigstore/dist/ca/format.d.ts
    index 185b4c260afb40..9a20bf8f71dc56 100644
    --- a/deps/npm/node_modules/sigstore/dist/ca/format.d.ts
    +++ b/deps/npm/node_modules/sigstore/dist/ca/format.d.ts
    @@ -1,5 +1,5 @@
     /// 
     /// 
     import { KeyObject } from 'crypto';
    -import { CertificateRequest } from '../client/fulcio';
    -export declare function toCertificateRequest(publicKey: KeyObject, challenge: Buffer): CertificateRequest;
    +import { SigningCertificateRequest } from '../client/fulcio';
    +export declare function toCertificateRequest(identityToken: string, publicKey: KeyObject, challenge: Buffer): SigningCertificateRequest;
    diff --git a/deps/npm/node_modules/sigstore/dist/ca/format.js b/deps/npm/node_modules/sigstore/dist/ca/format.js
    index f168cbe3154792..6374243e80e026 100644
    --- a/deps/npm/node_modules/sigstore/dist/ca/format.js
    +++ b/deps/npm/node_modules/sigstore/dist/ca/format.js
    @@ -1,14 +1,20 @@
     "use strict";
     Object.defineProperty(exports, "__esModule", { value: true });
     exports.toCertificateRequest = void 0;
    -function toCertificateRequest(publicKey, challenge) {
    +function toCertificateRequest(identityToken, publicKey, challenge) {
         return {
    -        publicKey: {
    -            content: publicKey
    -                .export({ type: 'spki', format: 'der' })
    -                .toString('base64'),
    +        credentials: {
    +            oidcIdentityToken: identityToken,
    +        },
    +        publicKeyRequest: {
    +            publicKey: {
    +                algorithm: 'ECDSA',
    +                content: publicKey
    +                    .export({ format: 'pem', type: 'spki' })
    +                    .toString('ascii'),
    +            },
    +            proofOfPossession: challenge.toString('base64'),
             },
    -        signedEmailAddress: challenge.toString('base64'),
         };
     }
     exports.toCertificateRequest = toCertificateRequest;
    diff --git a/deps/npm/node_modules/sigstore/dist/ca/index.js b/deps/npm/node_modules/sigstore/dist/ca/index.js
    index 3b90f864f08916..6c6e267011e2cc 100644
    --- a/deps/npm/node_modules/sigstore/dist/ca/index.js
    +++ b/deps/npm/node_modules/sigstore/dist/ca/index.js
    @@ -3,17 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
     exports.CAClient = void 0;
     const client_1 = require("../client");
     const error_1 = require("../error");
    -const util_1 = require("../util");
     const format_1 = require("./format");
     class CAClient {
         constructor(options) {
             this.fulcio = new client_1.Fulcio({ baseURL: options.fulcioBaseURL });
         }
         async createSigningCertificate(identityToken, publicKey, challenge) {
    -        const request = (0, format_1.toCertificateRequest)(publicKey, challenge);
    +        const request = (0, format_1.toCertificateRequest)(identityToken, publicKey, challenge);
             try {
    -            const certificate = await this.fulcio.createSigningCertificate(identityToken, request);
    -            return util_1.pem.split(certificate);
    +            const certificate = await this.fulcio.createSigningCertificate(request);
    +            return certificate.signedCertificateEmbeddedSct.chain.certificates;
             }
             catch (err) {
                 throw new error_1.InternalError('error creating signing certificate', err);
    diff --git a/deps/npm/node_modules/sigstore/dist/cli/index.js b/deps/npm/node_modules/sigstore/dist/cli/index.js
    index 0937d3603a2a93..d7d6c76d73f6a1 100644
    --- a/deps/npm/node_modules/sigstore/dist/cli/index.js
    +++ b/deps/npm/node_modules/sigstore/dist/cli/index.js
    @@ -65,6 +65,7 @@ function printUsage() {
     const signOptions = {
         oidcClientID: 'sigstore',
         oidcIssuer: 'https://oauth2.sigstore.dev/auth',
    +    oidcRedirectURL: process.env.OIDC_REDIRECT_URL,
         rekorURL: index_1.sigstore.DEFAULT_REKOR_URL,
     };
     async function sign(artifactPath) {
    diff --git a/deps/npm/node_modules/sigstore/dist/client/fulcio.d.ts b/deps/npm/node_modules/sigstore/dist/client/fulcio.d.ts
    index 72ed51ae75d312..91fe53e69f9387 100644
    --- a/deps/npm/node_modules/sigstore/dist/client/fulcio.d.ts
    +++ b/deps/npm/node_modules/sigstore/dist/client/fulcio.d.ts
    @@ -1,11 +1,24 @@
     export interface FulcioOptions {
         baseURL: string;
     }
    -export interface CertificateRequest {
    -    publicKey: {
    -        content: string;
    +export interface SigningCertificateRequest {
    +    credentials: {
    +        oidcIdentityToken: string;
    +    };
    +    publicKeyRequest: {
    +        publicKey: {
    +            algorithm: string;
    +            content: string;
    +        };
    +        proofOfPossession: string;
    +    };
    +}
    +export interface SigningCertificateResponse {
    +    signedCertificateEmbeddedSct: {
    +        chain: {
    +            certificates: string[];
    +        };
         };
    -    signedEmailAddress: string;
     }
     /**
      * Fulcio API client.
    @@ -14,5 +27,5 @@ export declare class Fulcio {
         private fetch;
         private baseUrl;
         constructor(options: FulcioOptions);
    -    createSigningCertificate(idToken: string, request: CertificateRequest): Promise;
    +    createSigningCertificate(request: SigningCertificateRequest): Promise;
     }
    diff --git a/deps/npm/node_modules/sigstore/dist/client/fulcio.js b/deps/npm/node_modules/sigstore/dist/client/fulcio.js
    index 04041387f1a0b8..288ca32caaea78 100644
    --- a/deps/npm/node_modules/sigstore/dist/client/fulcio.js
    +++ b/deps/npm/node_modules/sigstore/dist/client/fulcio.js
    @@ -31,22 +31,20 @@ class Fulcio {
                 retry: { retries: 2 },
                 timeout: 5000,
                 headers: {
    -                Accept: 'application/pem-certificate-chain',
                     'Content-Type': 'application/json',
                     'User-Agent': util_1.ua.getUserAgent(),
                 },
             });
             this.baseUrl = options.baseURL;
         }
    -    async createSigningCertificate(idToken, request) {
    -        const url = `${this.baseUrl}/api/v1/signingCert`;
    +    async createSigningCertificate(request) {
    +        const url = `${this.baseUrl}/api/v2/signingCert`;
             const response = await this.fetch(url, {
                 method: 'POST',
    -            headers: { Authorization: `Bearer ${idToken}` },
                 body: JSON.stringify(request),
             });
             (0, error_1.checkStatus)(response);
    -        const data = await response.text();
    +        const data = await response.json();
             return data;
         }
     }
    diff --git a/deps/npm/node_modules/sigstore/dist/identity/index.d.ts b/deps/npm/node_modules/sigstore/dist/identity/index.d.ts
    index e3d23b4dbf8c6f..3eb0b444d120ff 100644
    --- a/deps/npm/node_modules/sigstore/dist/identity/index.d.ts
    +++ b/deps/npm/node_modules/sigstore/dist/identity/index.d.ts
    @@ -8,7 +8,12 @@ import { Provider } from './provider';
      * @param clientSecret Client secret for the issuer (optional)
      * @returns {Provider}
      */
    -declare function oauthProvider(issuer: string, clientID: string, clientSecret?: string): Provider;
    +declare function oauthProvider(options: {
    +    issuer: string;
    +    clientID: string;
    +    clientSecret?: string;
    +    redirectURL?: string;
    +}): Provider;
     /**
      * ciContextProvider returns a new Provider instance which attempts to retrieve
      * an identity token from the CI context.
    diff --git a/deps/npm/node_modules/sigstore/dist/identity/index.js b/deps/npm/node_modules/sigstore/dist/identity/index.js
    index bfb203aa39e8ce..351d607106700f 100644
    --- a/deps/npm/node_modules/sigstore/dist/identity/index.js
    +++ b/deps/npm/node_modules/sigstore/dist/identity/index.js
    @@ -27,8 +27,13 @@ const oauth_1 = require("./oauth");
      * @param clientSecret Client secret for the issuer (optional)
      * @returns {Provider}
      */
    -function oauthProvider(issuer, clientID, clientSecret) {
    -    return new oauth_1.OAuthProvider(new issuer_1.Issuer(issuer), clientID, clientSecret);
    +function oauthProvider(options) {
    +    return new oauth_1.OAuthProvider({
    +        issuer: new issuer_1.Issuer(options.issuer),
    +        clientID: options.clientID,
    +        clientSecret: options.clientSecret,
    +        redirectURL: options.redirectURL,
    +    });
     }
     /**
      * ciContextProvider returns a new Provider instance which attempts to retrieve
    diff --git a/deps/npm/node_modules/sigstore/dist/identity/oauth.d.ts b/deps/npm/node_modules/sigstore/dist/identity/oauth.d.ts
    index d02e212a7f88e7..3c9fae9ac15387 100644
    --- a/deps/npm/node_modules/sigstore/dist/identity/oauth.d.ts
    +++ b/deps/npm/node_modules/sigstore/dist/identity/oauth.d.ts
    @@ -1,5 +1,11 @@
     import { Issuer } from './issuer';
     import { Provider } from './provider';
    +interface OAuthProviderOptions {
    +    issuer: Issuer;
    +    clientID: string;
    +    clientSecret?: string;
    +    redirectURL?: string;
    +}
     export declare class OAuthProvider implements Provider {
         private clientID;
         private clientSecret;
    @@ -7,7 +13,7 @@ export declare class OAuthProvider implements Provider {
         private codeVerifier;
         private state;
         private redirectURI?;
    -    constructor(issuer: Issuer, clientID: string, clientSecret?: string);
    +    constructor(options: OAuthProviderOptions);
         getToken(): Promise;
         private initiateAuthRequest;
         private getIDToken;
    @@ -17,3 +23,4 @@ export declare class OAuthProvider implements Provider {
         private getCodeChallenge;
         private openURL;
     }
    +export {};
    diff --git a/deps/npm/node_modules/sigstore/dist/identity/oauth.js b/deps/npm/node_modules/sigstore/dist/identity/oauth.js
    index 651a0c7e80f1b7..7cb5a00cdb6942 100644
    --- a/deps/npm/node_modules/sigstore/dist/identity/oauth.js
    +++ b/deps/npm/node_modules/sigstore/dist/identity/oauth.js
    @@ -26,10 +26,11 @@ const make_fetch_happen_1 = __importDefault(require("make-fetch-happen"));
     const url_1 = require("url");
     const util_1 = require("../util");
     class OAuthProvider {
    -    constructor(issuer, clientID, clientSecret) {
    -        this.clientID = clientID;
    -        this.clientSecret = clientSecret || '';
    -        this.issuer = issuer;
    +    constructor(options) {
    +        this.clientID = options.clientID;
    +        this.clientSecret = options.clientSecret || '';
    +        this.issuer = options.issuer;
    +        this.redirectURI = options.redirectURL;
             this.codeVerifier = generateRandomString(32);
             this.state = generateRandomString(16);
         }
    @@ -43,9 +44,20 @@ class OAuthProvider {
         async initiateAuthRequest() {
             const server = http_1.default.createServer();
             const sockets = new Set();
    -        // Start server and wait till it is listening
    +        // Start server and wait till it is listening. If a redirect URL was
    +        // provided, use that. Otherwise, use a random port and construct the
    +        // redirect URL.
             await new Promise((resolve) => {
    -            server.listen(0, resolve);
    +            if (this.redirectURI) {
    +                const url = new url_1.URL(this.redirectURI);
    +                server.listen(Number(url.port), url.hostname, resolve);
    +            }
    +            else {
    +                server.listen(0, resolve);
    +                // Get port the server is listening on and construct the server URL
    +                const port = server.address().port;
    +                this.redirectURI = `http://localhost:${port}`;
    +            }
             });
             // Keep track of connections to the server so we can force a shutdown
             server.on('connection', (socket) => {
    @@ -54,9 +66,6 @@ class OAuthProvider {
                     sockets.delete(socket);
                 });
             });
    -        // Get port the server is listening on and construct the server URL
    -        const port = server.address().port;
    -        this.redirectURI = `http://localhost:${port}`;
             const result = new Promise((resolve, reject) => {
                 // Set-up handler for post-auth redirect
                 server.on('request', (req, res) => {
    diff --git a/deps/npm/node_modules/sigstore/dist/sigstore.d.ts b/deps/npm/node_modules/sigstore/dist/sigstore.d.ts
    index 22c5d2a45f87bf..69a28f7243048a 100644
    --- a/deps/npm/node_modules/sigstore/dist/sigstore.d.ts
    +++ b/deps/npm/node_modules/sigstore/dist/sigstore.d.ts
    @@ -18,6 +18,7 @@ export type SignOptions = {
         oidcIssuer?: string;
         oidcClientID?: string;
         oidcClientSecret?: string;
    +    oidcRedirectURL?: string;
     } & TLogOptions;
     export type VerifyOptions = {
         ctLogThreshold?: number;
    diff --git a/deps/npm/node_modules/sigstore/dist/sigstore.js b/deps/npm/node_modules/sigstore/dist/sigstore.js
    index 34b269aadd7d31..cf8c90c309148e 100644
    --- a/deps/npm/node_modules/sigstore/dist/sigstore.js
    +++ b/deps/npm/node_modules/sigstore/dist/sigstore.js
    @@ -115,7 +115,12 @@ function configureIdentityProviders(options) {
         else {
             idps.push(identity_1.default.ciContextProvider());
             if (options.oidcIssuer && options.oidcClientID) {
    -            idps.push(identity_1.default.oauthProvider(options.oidcIssuer, options.oidcClientID, options.oidcClientSecret));
    +            idps.push(identity_1.default.oauthProvider({
    +                issuer: options.oidcIssuer,
    +                clientID: options.oidcClientID,
    +                clientSecret: options.oidcClientSecret,
    +                redirectURL: options.oidcRedirectURL,
    +            }));
             }
         }
         return idps;
    diff --git a/deps/npm/node_modules/sigstore/dist/util/pem.d.ts b/deps/npm/node_modules/sigstore/dist/util/pem.d.ts
    index cb438c7937551c..6910679cae0654 100644
    --- a/deps/npm/node_modules/sigstore/dist/util/pem.d.ts
    +++ b/deps/npm/node_modules/sigstore/dist/util/pem.d.ts
    @@ -1,4 +1,3 @@
     /// 
    -export declare function split(certificate: string): string[];
     export declare function toDER(certificate: string): Buffer;
     export declare function fromDER(certificate: Buffer, type?: string): string;
    diff --git a/deps/npm/node_modules/sigstore/dist/util/pem.js b/deps/npm/node_modules/sigstore/dist/util/pem.js
    index 6bb8eda62a2ef6..8b03b364cd7efb 100644
    --- a/deps/npm/node_modules/sigstore/dist/util/pem.js
    +++ b/deps/npm/node_modules/sigstore/dist/util/pem.js
    @@ -1,6 +1,6 @@
     "use strict";
     Object.defineProperty(exports, "__esModule", { value: true });
    -exports.fromDER = exports.toDER = exports.split = void 0;
    +exports.fromDER = exports.toDER = void 0;
     /*
     Copyright 2022 The Sigstore Authors.
     
    @@ -18,27 +18,6 @@ limitations under the License.
     */
     const PEM_HEADER = /-----BEGIN (.*)-----/;
     const PEM_FOOTER = /-----END (.*)-----/;
    -// Given a set of PEM-encoded certificates bundled in a single string, returns
    -// an array of certificates. Standard PEM encoding dictates that each certificate
    -// should have a trailing newline after the footer.
    -function split(certificate) {
    -    const certs = [];
    -    let cert = [];
    -    certificate.split('\n').forEach((line) => {
    -        line.includes;
    -        if (line.match(PEM_HEADER)) {
    -            cert = [];
    -        }
    -        if (line.length > 0) {
    -            cert.push(line);
    -        }
    -        if (line.match(PEM_FOOTER)) {
    -            certs.push(cert.join('\n').concat('\n'));
    -        }
    -    });
    -    return certs;
    -}
    -exports.split = split;
     function toDER(certificate) {
         let der = '';
         certificate.split('\n').forEach((line) => {
    diff --git a/deps/npm/node_modules/sigstore/dist/util/stream.js b/deps/npm/node_modules/sigstore/dist/util/stream.js
    index b5c881bb388d43..d5c8236123cdfa 100644
    --- a/deps/npm/node_modules/sigstore/dist/util/stream.js
    +++ b/deps/npm/node_modules/sigstore/dist/util/stream.js
    @@ -112,5 +112,5 @@ class ByteStream {
             this.view = newView;
         }
     }
    -exports.ByteStream = ByteStream;
     ByteStream.BLOCK_SIZE = 1024;
    +exports.ByteStream = ByteStream;
    diff --git a/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.d.ts b/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.d.ts
    index 7f70a0ac3047bd..de54996c87faac 100644
    --- a/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.d.ts
    +++ b/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.d.ts
    @@ -3,12 +3,9 @@ import { ASN1Tag } from './tag';
     export declare class ASN1Obj {
         readonly tag: ASN1Tag;
         readonly subs: ASN1Obj[];
    -    private buf;
    -    private headerLength;
    -    constructor(tag: ASN1Tag, headerLength: number, buf: Buffer, subs: ASN1Obj[]);
    +    readonly value: Buffer;
    +    constructor(tag: ASN1Tag, value: Buffer, subs: ASN1Obj[]);
         static parseBuffer(buf: Buffer): ASN1Obj;
    -    get value(): Buffer;
    -    get raw(): Buffer;
         toDER(): Buffer;
         toBoolean(): boolean;
         toInteger(): bigint;
    diff --git a/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.js b/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.js
    index 9e67edcf60a0c2..712acf105adfc7 100644
    --- a/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.js
    +++ b/deps/npm/node_modules/sigstore/dist/x509/asn1/obj.js
    @@ -22,28 +22,15 @@ const length_1 = require("./length");
     const parse_1 = require("./parse");
     const tag_1 = require("./tag");
     class ASN1Obj {
    -    constructor(tag, headerLength, buf, subs) {
    +    constructor(tag, value, subs) {
             this.tag = tag;
    -        this.headerLength = headerLength;
    -        this.buf = buf;
    +        this.value = value;
             this.subs = subs;
         }
         // Constructs an ASN.1 object from a Buffer of DER-encoded bytes.
         static parseBuffer(buf) {
             return parseStream(new stream_1.ByteStream(buf));
         }
    -    // Returns the raw bytes of the ASN.1 object's value. For constructed objects,
    -    // this is the concatenation of the raw bytes of the values of its children.
    -    // For primitive objects, this is the raw bytes of the object's value.
    -    // Use the various to* methods to parse the value into a specific type.
    -    get value() {
    -        return this.buf.subarray(this.headerLength);
    -    }
    -    // Returns the raw bytes of the entire ASN.1 object (including tag, length,
    -    // and value)
    -    get raw() {
    -        return this.buf;
    -    }
         toDER() {
             const valueStream = new stream_1.ByteStream();
             if (this.subs.length > 0) {
    @@ -114,13 +101,11 @@ exports.ASN1Obj = ASN1Obj;
     /////////////////////////////////////////////////////////////////////////////
     // Internal stream parsing functions
     function parseStream(stream) {
    -    // Capture current stream position so we know where this object starts
    -    const startPos = stream.position;
    -    // Parse tag and length from stream
    +    // Parse tag, length, and value from stream
         const tag = new tag_1.ASN1Tag(stream.getUint8());
         const len = (0, length_1.decodeLength)(stream);
    -    // Calculate length of header (tag + length)
    -    const header = stream.position - startPos;
    +    const value = stream.slice(stream.position, len);
    +    const start = stream.position;
         let subs = [];
         // If the object is constructed, parse its children. Sometimes, children
         // are embedded in OCTESTRING objects, so we need to check those
    @@ -140,11 +125,9 @@ function parseStream(stream) {
         }
         // If there are no children, move stream cursor to the end of the object
         if (subs.length === 0) {
    -        stream.seek(startPos + header + len);
    +        stream.seek(start + len);
         }
    -    // Capture the raw bytes of the object (including tag, length, and value)
    -    const buf = stream.slice(startPos, header + len);
    -    return new ASN1Obj(tag, header, buf, subs);
    +    return new ASN1Obj(tag, value, subs);
     }
     function collectSubs(stream, len) {
         // Calculate end of object content
    diff --git a/deps/npm/node_modules/sigstore/dist/x509/cert.js b/deps/npm/node_modules/sigstore/dist/x509/cert.js
    index 55cf22f62e27e5..0b8ab54740a069 100644
    --- a/deps/npm/node_modules/sigstore/dist/x509/cert.js
    +++ b/deps/npm/node_modules/sigstore/dist/x509/cert.js
    @@ -59,7 +59,7 @@ class x509Certificate {
             return this.subjectObj.value;
         }
         get publicKey() {
    -        return this.subjectPublicKeyInfoObj.raw;
    +        return this.subjectPublicKeyInfoObj.toDER();
         }
         get signatureAlgorithm() {
             const oid = this.signatureAlgorithmObj.subs[0].toOID();
    @@ -115,13 +115,13 @@ class x509Certificate {
             // Use the issuer's public key if provided, otherwise use the subject's
             const publicKey = issuerCertificate?.publicKey || this.publicKey;
             const key = util_1.crypto.createPublicKey(publicKey);
    -        return util_1.crypto.verifyBlob(this.tbsCertificate.raw, key, this.signatureValue, this.signatureAlgorithm);
    +        return util_1.crypto.verifyBlob(this.tbsCertificate.toDER(), key, this.signatureValue, this.signatureAlgorithm);
         }
         validForDate(date) {
             return this.notBefore <= date && date <= this.notAfter;
         }
         equals(other) {
    -        return this.root.raw.equals(other.root.raw);
    +        return this.root.toDER().equals(other.root.toDER());
         }
         verifySCTs(issuer, logs) {
             let extSCT;
    @@ -167,8 +167,9 @@ class x509Certificate {
         }
         // Creates a copy of the certificate with a new buffer
         clone() {
    -        const clone = Buffer.alloc(this.root.raw.length);
    -        this.root.raw.copy(clone);
    +        const der = this.root.toDER();
    +        const clone = Buffer.alloc(der.length);
    +        der.copy(clone);
             return x509Certificate.parse(clone);
         }
         findExtension(oid) {
    diff --git a/deps/npm/node_modules/sigstore/package.json b/deps/npm/node_modules/sigstore/package.json
    index b0e856df9a340f..0ef3fe90f467e7 100644
    --- a/deps/npm/node_modules/sigstore/package.json
    +++ b/deps/npm/node_modules/sigstore/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "sigstore",
    -  "version": "1.1.1",
    +  "version": "1.2.0",
       "description": "code-signing for npm packages",
       "main": "dist/index.js",
       "types": "dist/index.d.ts",
    @@ -51,7 +51,7 @@
         "nock": "^13.2.4",
         "prettier": "^2.6.2",
         "ts-jest": "^29.0.5",
    -    "typescript": "^4.7.2"
    +    "typescript": "^5.0.2"
       },
       "dependencies": {
         "@sigstore/protobuf-specs": "^0.1.0",
    diff --git a/deps/npm/node_modules/smart-buffer/build/smartbuffer.js.map b/deps/npm/node_modules/smart-buffer/build/smartbuffer.js.map
    deleted file mode 100644
    index 37f0d6e16fc682..00000000000000
    --- a/deps/npm/node_modules/smart-buffer/build/smartbuffer.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"smartbuffer.js","sourceRoot":"","sources":["../src/smartbuffer.ts"],"names":[],"mappings":";;AAAA,mCAGiB;AAcjB,kDAAkD;AAClD,MAAM,wBAAwB,GAAW,IAAI,CAAC;AAE9C,kEAAkE;AAClE,MAAM,4BAA4B,GAAmB,MAAM,CAAC;AAE5D,MAAM,WAAW;IAQf;;;;OAIG;IACH,YAAY,OAA4B;QAZjC,WAAM,GAAW,CAAC,CAAC;QAElB,cAAS,GAAmB,4BAA4B,CAAC;QAEzD,iBAAY,GAAW,CAAC,CAAC;QACzB,gBAAW,GAAW,CAAC,CAAC;QAQ9B,IAAI,WAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;YAC7C,sBAAsB;YACtB,IAAI,OAAO,CAAC,QAAQ,EAAE;gBACpB,qBAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAChC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;aACnC;YAED,iCAAiC;YACjC,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,IAAI,uBAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE;oBACrD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC/C;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,cAAM,CAAC,wBAAwB,CAAC,CAAC;iBAClD;gBACD,2BAA2B;aAC5B;iBAAM,IAAI,OAAO,CAAC,IAAI,EAAE;gBACvB,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;oBAC1B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;iBACnC;qBAAM;oBACL,MAAM,IAAI,KAAK,CAAC,cAAM,CAAC,0BAA0B,CAAC,CAAC;iBACpD;aACF;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;aAC3D;SACF;aAAM;YACL,mEAAmE;YACnE,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,cAAM,CAAC,0BAA0B,CAAC,CAAC;aACpD;YAED,oCAAoC;YACpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;SAC3D;IACH,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,QAAQ,CAAC,IAAY,EAAE,QAAyB;QAC5D,OAAO,IAAI,IAAI,CAAC;YACd,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,QAAyB;QAC9D,OAAO,IAAI,IAAI,CAAC;YACd,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,WAAW,CAAC,OAA2B;QACnD,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,OAA2B;QACrD,MAAM,WAAW,GAAuB,OAAO,CAAC;QAEhD,OAAO,CACL,WAAW;YACX,CAAC,WAAW,CAAC,QAAQ,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,CACzG,CAAC;IACJ,CAAC;IAED,kBAAkB;IAElB;;;;;OAKG;IACH,QAAQ,CAAC,MAAe;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAe;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAe;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAe;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAe;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAe;QAC5B,iCAAyB,CAAC,gBAAgB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAe;QAC5B,iCAAyB,CAAC,gBAAgB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;OAOG;IACH,SAAS,CAAC,KAAa,EAAE,MAAe;QACtC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,KAAa,EAAE,MAAc;QACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa,EAAE,MAAe;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa,EAAE,MAAe;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa,EAAE,MAAe;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa,EAAE,MAAe;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,KAAa,EAAE,MAAe;QAC5C,iCAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAa,EAAE,MAAc;QAC5C,iCAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,KAAa,EAAE,MAAe;QAC5C,iCAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACpF,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAa,EAAE,MAAc;QAC5C,iCAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAED,oBAAoB;IAEpB;;;;;OAKG;IACH,SAAS,CAAC,MAAe;QACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAAe;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAAe;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAAe;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAAe;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,MAAe;QAC7B,iCAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,MAAe;QAC7B,iCAAyB,CAAC,iBAAiB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;OAOG;IACH,UAAU,CAAC,KAAa,EAAE,MAAe;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,KAAa,EAAE,MAAc;QACvC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAe;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAe;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAe;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAe;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAa,EAAE,MAAe;QAC7C,iCAAyB,CAAC,kBAAkB,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,KAAa,EAAE,MAAc;QAC7C,iCAAyB,CAAC,kBAAkB,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAa,EAAE,MAAe;QAC7C,iCAAyB,CAAC,kBAAkB,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,KAAa,EAAE,MAAc;QAC7C,iCAAyB,CAAC,kBAAkB,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IAED,iBAAiB;IAEjB;;;;;OAKG;IACH,WAAW,CAAC,MAAe;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,MAAe;QACzB,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa,EAAE,MAAe;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa,EAAE,MAAe;QACzC,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED,wBAAwB;IAExB;;;;;OAKG;IACH,YAAY,CAAC,MAAe;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED;;;;;OAKG;IACH,YAAY,CAAC,MAAe;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAe;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAe;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClF,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAED,UAAU;IAEV;;;;;;;;OAQG;IACH,UAAU,CAAC,IAA8B,EAAE,QAAyB;QAClE,IAAI,SAAS,CAAC;QAEd,kBAAkB;QAClB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,wBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;SAC5D;aAAM;YACL,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;SAC5C;QAED,iBAAiB;QACjB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,qBAAa,CAAC,QAAQ,CAAC,CAAC;SACzB;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpH,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,KAAa,EAAE,MAAc,EAAE,QAAyB;QACnE,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;;;OAQG;IACH,WAAW,CAAC,KAAa,EAAE,IAA8B,EAAE,QAAyB;QAClF,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,QAAyB;QACpC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,qBAAa,CAAC,QAAQ,CAAC,CAAC;SACzB;QAED,+DAA+D;QAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1B,6EAA6E;QAC7E,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC1B,OAAO,GAAG,CAAC,CAAC;gBACZ,MAAM;aACP;SACF;QAED,oBAAoB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE1D,wCAAwC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;QAE/B,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc,EAAE,QAAyB;QACrE,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,eAAe;QACf,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,aAAa,CAAC,KAAa,EAAE,IAA8B,EAAE,QAAyB;QACpF,eAAe;QACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;IAEV;;;;;;OAMG;IACH,UAAU,CAAC,MAAe;QACxB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,wBAAgB,CAAC,MAAM,CAAC,CAAC;SAC1B;QAED,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;QAErE,oBAAoB;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE3D,wCAAwC;QACxC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,KAAa,EAAE,MAAc;QACxC,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,KAAa,EAAE,MAAe;QACxC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,+DAA+D;QAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAE1B,6EAA6E;QAC7E,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnD,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBAC1B,OAAO,GAAG,CAAC,CAAC;gBACZ,MAAM;aACP;SACF;QAED,aAAa;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE1D,wCAAwC;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACH,cAAc,CAAC,KAAa,EAAE,MAAc;QAC1C,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,eAAe;QACf,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACH,aAAa,CAAC,KAAa,EAAE,MAAe;QAC1C,mCAAmC;QACnC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,wBAAgB,CAAC,MAAM,CAAC,CAAC;SAC1B;QAED,eAAe;QACf,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE9F,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,IAAI,UAAU,CAAC,MAAc;QAC3B,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,oBAAoB;QACpB,yBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,IAAI,WAAW,CAAC,MAAc;QAC5B,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,oBAAoB;QACpB,yBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEhC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,IAAI,QAAQ,CAAC,QAAwB;QACnC,qBAAa,CAAC,QAAQ,CAAC,CAAC;QAExB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,QAAyB;QAChC,MAAM,WAAW,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAE7E,8BAA8B;QAC9B,qBAAa,CAAC,WAAW,CAAC,CAAC;QAE3B,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;OAOG;IACK,aAAa,CACnB,KAAa,EACb,QAAiB,EACjB,IAA8B,EAC9B,QAAyB;QAEzB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,mBAAmB;QACnB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC5B,SAAS,GAAG,IAAI,CAAC;YACjB,qBAAqB;SACtB;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YACnC,qBAAa,CAAC,IAAI,CAAC,CAAC;YACpB,WAAW,GAAG,IAAI,CAAC;SACpB;QAED,mCAAmC;QACnC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YAChC,qBAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,WAAW,GAAG,QAAQ,CAAC;SACxB;QAED,kCAAkC;QAClC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAEzD,mDAAmD;QACnD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;SAC9C;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;SAC9C;QAED,cAAc;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAE5D,0CAA0C;QAC1C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC;SACjC;aAAM;YACL,mFAAmF;YACnF,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;gBAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,UAAU,CAAC,CAAC;aACzE;iBAAM;gBACL,2FAA2F;gBAC3F,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC;aACjC;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,aAAa,CAAC,KAAa,EAAE,QAAiB,EAAE,MAAe;QACrE,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE1E,mDAAmD;QACnD,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;SAChD;aAAM;YACL,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;SAChD;QAED,qBAAqB;QACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAElC,0CAA0C;QAC1C,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC;SACnC;aAAM;YACL,mFAAmF;YACnF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;gBAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;aAC3E;iBAAM;gBACL,2FAA2F;gBAC3F,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC;aACnC;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,cAAc,CAAC,MAAc,EAAE,MAAe;QACpD,gDAAgD;QAChD,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QAEjC,qCAAqC;QACrC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,mCAAmC;YACnC,wBAAgB,CAAC,MAAM,CAAC,CAAC;YAEzB,8BAA8B;YAC9B,SAAS,GAAG,MAAM,CAAC;SACpB;QAED,8GAA8G;QAC9G,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACrD,MAAM,IAAI,KAAK,CAAC,cAAM,CAAC,0BAA0B,CAAC,CAAC;SACpD;IACH,CAAC;IAED;;;;;OAKG;IACK,gBAAgB,CAAC,UAAkB,EAAE,MAAc;QACzD,mCAAmC;QACnC,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,mDAAmD;QACnD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QAE/C,kIAAkI;QAClI,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC7E;QAED,qCAAqC;QACrC,IAAI,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;SAC3B;IACH,CAAC;IAED;;;;;OAKG;IACK,gBAAgB,CAAC,UAAkB,EAAE,MAAe;QAC1D,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE1E,wCAAwC;QACxC,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC;QAE7C,8FAA8F;QAC9F,IAAI,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE;YACxC,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;SACtC;IACH,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,SAAiB;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAEpC,IAAI,SAAS,GAAG,SAAS,EAAE;YACzB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;YACtB,IAAI,SAAS,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,SAAS,GAAG,SAAS,EAAE;gBACzB,SAAS,GAAG,SAAS,CAAC;aACvB;YACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAE3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;SACxC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACK,gBAAgB,CAAI,IAA2B,EAAE,QAAgB,EAAE,MAAe;QACxF,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEtC,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5F,2EAA2E;QAC3E,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC;SAC9B;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;OAWG;IACK,kBAAkB,CACxB,IAA2C,EAC3C,QAAgB,EAChB,KAAQ,EACR,MAAc;QAEd,mCAAmC;QACnC,wBAAgB,CAAC,MAAM,CAAC,CAAC;QAEzB,0EAA0E;QAC1E,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAExC,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAErC,2CAA2C;QAC3C,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;OAWG;IACK,iBAAiB,CACvB,IAA2C,EAC3C,QAAgB,EAChB,KAAQ,EACR,MAAe;QAEf,0CAA0C;QAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,gEAAgE;YAChE,IAAI,MAAM,GAAG,CAAC,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,cAAM,CAAC,2BAA2B,CAAC,CAAC;aACrD;YAED,wBAAgB,CAAC,MAAM,CAAC,CAAC;SAC1B;QAED,uDAAuD;QACvD,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAE1E,0EAA0E;QAC1E,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAExC,mFAAmF;QACnF,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC;SACvE;aAAM;YACL,mGAAmG;YACnG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAE4B,kCAAW"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/smart-buffer/build/utils.js.map b/deps/npm/node_modules/smart-buffer/build/utils.js.map
    deleted file mode 100644
    index fc7388d3b7010c..00000000000000
    --- a/deps/npm/node_modules/smart-buffer/build/utils.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;AACA,mCAAgC;AAEhC;;GAEG;AACH,MAAM,MAAM,GAAG;IACb,gBAAgB,EAAE,kGAAkG;IACpH,wBAAwB,EAAE,wEAAwE;IAClG,0BAA0B,EAAE,gDAAgD;IAC5E,0BAA0B,EAAE,2FAA2F;IACvH,cAAc,EAAE,uCAAuC;IACvD,yBAAyB,EAAE,oEAAoE;IAC/F,cAAc,EAAE,uCAAuC;IACvD,yBAAyB,EAAE,oEAAoE;IAC/F,qBAAqB,EAAE,sEAAsE;IAC7F,qBAAqB,EAAE,yFAAyF;IAChH,0BAA0B,EAAE,0DAA0D;IACtF,2BAA2B,EAAE,2DAA2D;CACzF,CAAC;AAuGA,wBAAM;AArGR;;;;GAIG;AACH,SAAS,aAAa,CAAC,QAAwB;IAC7C,IAAI,CAAC,eAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAC1C;AACH,CAAC;AA4F0B,sCAAa;AA1FxC;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAC1E,CAAC;AAmFS,0CAAe;AAjFzB;;;;;GAKG;AACH,SAAS,wBAAwB,CAAC,KAAU,EAAE,MAAe;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,oCAAoC;QACpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;SACzE;KACF;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;KAC/F;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAW;IACnC,wBAAwB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AA0DC,4CAAgB;AAxDlB;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,MAAW;IACnC,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAgDyC,4CAAgB;AA9C1D;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,IAAiB;IAC1D,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;QACtC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;KAC/C;AACH,CAAC;AAqCmB,8CAAiB;AAnCrC;;;GAGG;AACH,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;AACrF,CAAC;AAcD;;GAEG;AACH,SAAS,yBAAyB,CAAC,YAA0B;IAC3D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC9D;IAED,IAAI,OAAO,eAAM,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,WAAW,EAAE;QACzD,MAAM,IAAI,KAAK,CAAC,8CAA8C,YAAY,GAAG,CAAC,CAAC;KAChF;AACH,CAAC;AAIsC,8DAAyB"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/smart-buffer/typings/smartbuffer.d.ts b/deps/npm/node_modules/smart-buffer/typings/smartbuffer.d.ts
    deleted file mode 100644
    index d07379b2983a44..00000000000000
    --- a/deps/npm/node_modules/smart-buffer/typings/smartbuffer.d.ts
    +++ /dev/null
    @@ -1,755 +0,0 @@
    -/// 
    -/**
    - * Object interface for constructing new SmartBuffer instances.
    - */
    -interface SmartBufferOptions {
    -    encoding?: BufferEncoding;
    -    size?: number;
    -    buff?: Buffer;
    -}
    -declare class SmartBuffer {
    -    length: number;
    -    private _encoding;
    -    private _buff;
    -    private _writeOffset;
    -    private _readOffset;
    -    /**
    -     * Creates a new SmartBuffer instance.
    -     *
    -     * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance.
    -     */
    -    constructor(options?: SmartBufferOptions);
    -    /**
    -     * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding.
    -     *
    -     * @param size { Number } The size of the internal Buffer.
    -     * @param encoding { String } The BufferEncoding to use for strings.
    -     *
    -     * @return { SmartBuffer }
    -     */
    -    static fromSize(size: number, encoding?: BufferEncoding): SmartBuffer;
    -    /**
    -     * Creates a new SmartBuffer instance with the provided Buffer and optional encoding.
    -     *
    -     * @param buffer { Buffer } The Buffer to use as the internal Buffer value.
    -     * @param encoding { String } The BufferEncoding to use for strings.
    -     *
    -     * @return { SmartBuffer }
    -     */
    -    static fromBuffer(buff: Buffer, encoding?: BufferEncoding): SmartBuffer;
    -    /**
    -     * Creates a new SmartBuffer instance with the provided SmartBufferOptions options.
    -     *
    -     * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance.
    -     */
    -    static fromOptions(options: SmartBufferOptions): SmartBuffer;
    -    /**
    -     * Type checking function that determines if an object is a SmartBufferOptions object.
    -     */
    -    static isSmartBufferOptions(options: SmartBufferOptions): options is SmartBufferOptions;
    -    /**
    -     * Reads an Int8 value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readInt8(offset?: number): number;
    -    /**
    -     * Reads an Int16BE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readInt16BE(offset?: number): number;
    -    /**
    -     * Reads an Int16LE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readInt16LE(offset?: number): number;
    -    /**
    -     * Reads an Int32BE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readInt32BE(offset?: number): number;
    -    /**
    -     * Reads an Int32LE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readInt32LE(offset?: number): number;
    -    /**
    -     * Reads a BigInt64BE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { BigInt }
    -     */
    -    readBigInt64BE(offset?: number): bigint;
    -    /**
    -     * Reads a BigInt64LE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { BigInt }
    -     */
    -    readBigInt64LE(offset?: number): bigint;
    -    /**
    -     * Writes an Int8 value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeInt8(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an Int8 value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertInt8(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an Int16BE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeInt16BE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an Int16BE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertInt16BE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an Int16LE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeInt16LE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an Int16LE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertInt16LE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an Int32BE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeInt32BE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an Int32BE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertInt32BE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an Int32LE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeInt32LE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an Int32LE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertInt32LE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes a BigInt64BE value to the current write position (or at optional offset).
    -     *
    -     * @param value { BigInt } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeBigInt64BE(value: bigint, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a BigInt64BE value at the given offset value.
    -     *
    -     * @param value { BigInt } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertBigInt64BE(value: bigint, offset: number): SmartBuffer;
    -    /**
    -     * Writes a BigInt64LE value to the current write position (or at optional offset).
    -     *
    -     * @param value { BigInt } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeBigInt64LE(value: bigint, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a Int64LE value at the given offset value.
    -     *
    -     * @param value { BigInt } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertBigInt64LE(value: bigint, offset: number): SmartBuffer;
    -    /**
    -     * Reads an UInt8 value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readUInt8(offset?: number): number;
    -    /**
    -     * Reads an UInt16BE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readUInt16BE(offset?: number): number;
    -    /**
    -     * Reads an UInt16LE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readUInt16LE(offset?: number): number;
    -    /**
    -     * Reads an UInt32BE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readUInt32BE(offset?: number): number;
    -    /**
    -     * Reads an UInt32LE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readUInt32LE(offset?: number): number;
    -    /**
    -     * Reads a BigUInt64BE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { BigInt }
    -     */
    -    readBigUInt64BE(offset?: number): bigint;
    -    /**
    -     * Reads a BigUInt64LE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { BigInt }
    -     */
    -    readBigUInt64LE(offset?: number): bigint;
    -    /**
    -     * Writes an UInt8 value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeUInt8(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an UInt8 value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertUInt8(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an UInt16BE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeUInt16BE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an UInt16BE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertUInt16BE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an UInt16LE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeUInt16LE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an UInt16LE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertUInt16LE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an UInt32BE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeUInt32BE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an UInt32BE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertUInt32BE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes an UInt32LE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeUInt32LE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts an UInt32LE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertUInt32LE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes a BigUInt64BE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeBigUInt64BE(value: bigint, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a BigUInt64BE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertBigUInt64BE(value: bigint, offset: number): SmartBuffer;
    -    /**
    -     * Writes a BigUInt64LE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeBigUInt64LE(value: bigint, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a BigUInt64LE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertBigUInt64LE(value: bigint, offset: number): SmartBuffer;
    -    /**
    -     * Reads an FloatBE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readFloatBE(offset?: number): number;
    -    /**
    -     * Reads an FloatLE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readFloatLE(offset?: number): number;
    -    /**
    -     * Writes a FloatBE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeFloatBE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a FloatBE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertFloatBE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes a FloatLE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeFloatLE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a FloatLE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertFloatLE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Reads an DoublEBE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readDoubleBE(offset?: number): number;
    -    /**
    -     * Reads an DoubleLE value from the current read position or an optionally provided offset.
    -     *
    -     * @param offset { Number } The offset to read data from (optional)
    -     * @return { Number }
    -     */
    -    readDoubleLE(offset?: number): number;
    -    /**
    -     * Writes a DoubleBE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeDoubleBE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a DoubleBE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertDoubleBE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Writes a DoubleLE value to the current write position (or at optional offset).
    -     *
    -     * @param value { Number } The value to write.
    -     * @param offset { Number } The offset to write the value at.
    -     *
    -     * @return this
    -     */
    -    writeDoubleLE(value: number, offset?: number): SmartBuffer;
    -    /**
    -     * Inserts a DoubleLE value at the given offset value.
    -     *
    -     * @param value { Number } The value to insert.
    -     * @param offset { Number } The offset to insert the value at.
    -     *
    -     * @return this
    -     */
    -    insertDoubleLE(value: number, offset: number): SmartBuffer;
    -    /**
    -     * Reads a String from the current read position.
    -     *
    -     * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for
    -     *             the string (Defaults to instance level encoding).
    -     * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding).
    -     *
    -     * @return { String }
    -     */
    -    readString(arg1?: number | BufferEncoding, encoding?: BufferEncoding): string;
    -    /**
    -     * Inserts a String
    -     *
    -     * @param value { String } The String value to insert.
    -     * @param offset { Number } The offset to insert the string at.
    -     * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
    -     *
    -     * @return this
    -     */
    -    insertString(value: string, offset: number, encoding?: BufferEncoding): SmartBuffer;
    -    /**
    -     * Writes a String
    -     *
    -     * @param value { String } The String value to write.
    -     * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use.
    -     * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
    -     *
    -     * @return this
    -     */
    -    writeString(value: string, arg2?: number | BufferEncoding, encoding?: BufferEncoding): SmartBuffer;
    -    /**
    -     * Reads a null-terminated String from the current read position.
    -     *
    -     * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding).
    -     *
    -     * @return { String }
    -     */
    -    readStringNT(encoding?: BufferEncoding): string;
    -    /**
    -     * Inserts a null-terminated String.
    -     *
    -     * @param value { String } The String value to write.
    -     * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use.
    -     * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
    -     *
    -     * @return this
    -     */
    -    insertStringNT(value: string, offset: number, encoding?: BufferEncoding): SmartBuffer;
    -    /**
    -     * Writes a null-terminated String.
    -     *
    -     * @param value { String } The String value to write.
    -     * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use.
    -     * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
    -     *
    -     * @return this
    -     */
    -    writeStringNT(value: string, arg2?: number | BufferEncoding, encoding?: BufferEncoding): SmartBuffer;
    -    /**
    -     * Reads a Buffer from the internal read position.
    -     *
    -     * @param length { Number } The length of data to read as a Buffer.
    -     *
    -     * @return { Buffer }
    -     */
    -    readBuffer(length?: number): Buffer;
    -    /**
    -     * Writes a Buffer to the current write position.
    -     *
    -     * @param value { Buffer } The Buffer to write.
    -     * @param offset { Number } The offset to write the Buffer to.
    -     *
    -     * @return this
    -     */
    -    insertBuffer(value: Buffer, offset: number): SmartBuffer;
    -    /**
    -     * Writes a Buffer to the current write position.
    -     *
    -     * @param value { Buffer } The Buffer to write.
    -     * @param offset { Number } The offset to write the Buffer to.
    -     *
    -     * @return this
    -     */
    -    writeBuffer(value: Buffer, offset?: number): SmartBuffer;
    -    /**
    -     * Reads a null-terminated Buffer from the current read poisiton.
    -     *
    -     * @return { Buffer }
    -     */
    -    readBufferNT(): Buffer;
    -    /**
    -     * Inserts a null-terminated Buffer.
    -     *
    -     * @param value { Buffer } The Buffer to write.
    -     * @param offset { Number } The offset to write the Buffer to.
    -     *
    -     * @return this
    -     */
    -    insertBufferNT(value: Buffer, offset: number): SmartBuffer;
    -    /**
    -     * Writes a null-terminated Buffer.
    -     *
    -     * @param value { Buffer } The Buffer to write.
    -     * @param offset { Number } The offset to write the Buffer to.
    -     *
    -     * @return this
    -     */
    -    writeBufferNT(value: Buffer, offset?: number): SmartBuffer;
    -    /**
    -     * Clears the SmartBuffer instance to its original empty state.
    -     */
    -    clear(): SmartBuffer;
    -    /**
    -     * Gets the remaining data left to be read from the SmartBuffer instance.
    -     *
    -     * @return { Number }
    -     */
    -    remaining(): number;
    -    /**
    -     * Gets the current read offset value of the SmartBuffer instance.
    -     *
    -     * @return { Number }
    -     */
    -    /**
    -    * Sets the read offset value of the SmartBuffer instance.
    -    *
    -    * @param offset { Number } - The offset value to set.
    -    */
    -    readOffset: number;
    -    /**
    -     * Gets the current write offset value of the SmartBuffer instance.
    -     *
    -     * @return { Number }
    -     */
    -    /**
    -    * Sets the write offset value of the SmartBuffer instance.
    -    *
    -    * @param offset { Number } - The offset value to set.
    -    */
    -    writeOffset: number;
    -    /**
    -     * Gets the currently set string encoding of the SmartBuffer instance.
    -     *
    -     * @return { BufferEncoding } The string Buffer encoding currently set.
    -     */
    -    /**
    -    * Sets the string encoding of the SmartBuffer instance.
    -    *
    -    * @param encoding { BufferEncoding } The string Buffer encoding to set.
    -    */
    -    encoding: BufferEncoding;
    -    /**
    -     * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer)
    -     *
    -     * @return { Buffer } The Buffer value.
    -     */
    -    readonly internalBuffer: Buffer;
    -    /**
    -     * Gets the value of the internal managed Buffer (Includes managed data only)
    -     *
    -     * @param { Buffer }
    -     */
    -    toBuffer(): Buffer;
    -    /**
    -     * Gets the String value of the internal managed Buffer
    -     *
    -     * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding).
    -     */
    -    toString(encoding?: BufferEncoding): string;
    -    /**
    -     * Destroys the SmartBuffer instance.
    -     */
    -    destroy(): SmartBuffer;
    -    /**
    -     * Handles inserting and writing strings.
    -     *
    -     * @param value { String } The String value to insert.
    -     * @param isInsert { Boolean } True if inserting a string, false if writing.
    -     * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use.
    -     * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding).
    -     */
    -    private _handleString;
    -    /**
    -     * Handles writing or insert of a Buffer.
    -     *
    -     * @param value { Buffer } The Buffer to write.
    -     * @param offset { Number } The offset to write the Buffer to.
    -     */
    -    private _handleBuffer;
    -    /**
    -     * Ensures that the internal Buffer is large enough to read data.
    -     *
    -     * @param length { Number } The length of the data that needs to be read.
    -     * @param offset { Number } The offset of the data that needs to be read.
    -     */
    -    private ensureReadable;
    -    /**
    -     * Ensures that the internal Buffer is large enough to insert data.
    -     *
    -     * @param dataLength { Number } The length of the data that needs to be written.
    -     * @param offset { Number } The offset of the data to be written.
    -     */
    -    private ensureInsertable;
    -    /**
    -     * Ensures that the internal Buffer is large enough to write data.
    -     *
    -     * @param dataLength { Number } The length of the data that needs to be written.
    -     * @param offset { Number } The offset of the data to be written (defaults to writeOffset).
    -     */
    -    private _ensureWriteable;
    -    /**
    -     * Ensures that the internal Buffer is large enough to write at least the given amount of data.
    -     *
    -     * @param minLength { Number } The minimum length of the data needs to be written.
    -     */
    -    private _ensureCapacity;
    -    /**
    -     * Reads a numeric number value using the provided function.
    -     *
    -     * @typeparam T { number | bigint } The type of the value to be read
    -     *
    -     * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with.
    -     * @param byteSize { Number } The number of bytes read.
    -     * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead.
    -     *
    -     * @returns { T } the number value
    -     */
    -    private _readNumberValue;
    -    /**
    -     * Inserts a numeric number value based on the given offset and value.
    -     *
    -     * @typeparam T { number | bigint } The type of the value to be written
    -     *
    -     * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with.
    -     * @param byteSize { Number } The number of bytes written.
    -     * @param value { T } The number value to write.
    -     * @param offset { Number } the offset to write the number at (REQUIRED).
    -     *
    -     * @returns SmartBuffer this buffer
    -     */
    -    private _insertNumberValue;
    -    /**
    -     * Writes a numeric number value based on the given offset and value.
    -     *
    -     * @typeparam T { number | bigint } The type of the value to be written
    -     *
    -     * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with.
    -     * @param byteSize { Number } The number of bytes written.
    -     * @param value { T } The number value to write.
    -     * @param offset { Number } the offset to write the number at (REQUIRED).
    -     *
    -     * @returns SmartBuffer this buffer
    -     */
    -    private _writeNumberValue;
    -}
    -export { SmartBufferOptions, SmartBuffer };
    diff --git a/deps/npm/node_modules/smart-buffer/typings/utils.d.ts b/deps/npm/node_modules/smart-buffer/typings/utils.d.ts
    deleted file mode 100644
    index b32b4d44c04c1d..00000000000000
    --- a/deps/npm/node_modules/smart-buffer/typings/utils.d.ts
    +++ /dev/null
    @@ -1,66 +0,0 @@
    -/// 
    -import { SmartBuffer } from './smartbuffer';
    -import { Buffer } from 'buffer';
    -/**
    - * Error strings
    - */
    -declare const ERRORS: {
    -    INVALID_ENCODING: string;
    -    INVALID_SMARTBUFFER_SIZE: string;
    -    INVALID_SMARTBUFFER_BUFFER: string;
    -    INVALID_SMARTBUFFER_OBJECT: string;
    -    INVALID_OFFSET: string;
    -    INVALID_OFFSET_NON_NUMBER: string;
    -    INVALID_LENGTH: string;
    -    INVALID_LENGTH_NON_NUMBER: string;
    -    INVALID_TARGET_OFFSET: string;
    -    INVALID_TARGET_LENGTH: string;
    -    INVALID_READ_BEYOND_BOUNDS: string;
    -    INVALID_WRITE_BEYOND_BOUNDS: string;
    -};
    -/**
    - * Checks if a given encoding is a valid Buffer encoding. (Throws an exception if check fails)
    - *
    - * @param { String } encoding The encoding string to check.
    - */
    -declare function checkEncoding(encoding: BufferEncoding): void;
    -/**
    - * Checks if a given number is a finite integer. (Throws an exception if check fails)
    - *
    - * @param { Number } value The number value to check.
    - */
    -declare function isFiniteInteger(value: number): boolean;
    -/**
    - * Checks if a length value is valid. (Throws an exception if check fails)
    - *
    - * @param { Number } length The value to check.
    - */
    -declare function checkLengthValue(length: any): void;
    -/**
    - * Checks if a offset value is valid. (Throws an exception if check fails)
    - *
    - * @param { Number } offset The value to check.
    - */
    -declare function checkOffsetValue(offset: any): void;
    -/**
    - * Checks if a target offset value is out of bounds. (Throws an exception if check fails)
    - *
    - * @param { Number } offset The offset value to check.
    - * @param { SmartBuffer } buff The SmartBuffer instance to check against.
    - */
    -declare function checkTargetOffset(offset: number, buff: SmartBuffer): void;
    -interface Buffer {
    -    readBigInt64BE(offset?: number): bigint;
    -    readBigInt64LE(offset?: number): bigint;
    -    readBigUInt64BE(offset?: number): bigint;
    -    readBigUInt64LE(offset?: number): bigint;
    -    writeBigInt64BE(value: bigint, offset?: number): number;
    -    writeBigInt64LE(value: bigint, offset?: number): number;
    -    writeBigUInt64BE(value: bigint, offset?: number): number;
    -    writeBigUInt64LE(value: bigint, offset?: number): number;
    -}
    -/**
    - * Throws if Node.js version is too low to support bigint
    - */
    -declare function bigIntAndBufferInt64Check(bufferMethod: keyof Buffer): void;
    -export { ERRORS, isFiniteInteger, checkEncoding, checkOffsetValue, checkLengthValue, checkTargetOffset, bigIntAndBufferInt64Check };
    diff --git a/deps/npm/node_modules/socks-proxy-agent/dist/index.d.ts b/deps/npm/node_modules/socks-proxy-agent/dist/index.d.ts
    deleted file mode 100644
    index 4de33b1252a18c..00000000000000
    --- a/deps/npm/node_modules/socks-proxy-agent/dist/index.d.ts
    +++ /dev/null
    @@ -1,33 +0,0 @@
    -/// 
    -import { SocksProxy } from 'socks';
    -import { Agent, ClientRequest, RequestOptions } from 'agent-base';
    -import { AgentOptions } from 'agent-base';
    -import { Url } from 'url';
    -import net from 'net';
    -import tls from 'tls';
    -interface BaseSocksProxyAgentOptions {
    -    host?: string | null;
    -    port?: string | number | null;
    -    username?: string | null;
    -    tls?: tls.ConnectionOptions | null;
    -}
    -interface SocksProxyAgentOptionsExtra {
    -    timeout?: number;
    -}
    -export interface SocksProxyAgentOptions extends AgentOptions, BaseSocksProxyAgentOptions, Partial> {
    -}
    -export declare class SocksProxyAgent extends Agent {
    -    private readonly shouldLookup;
    -    private readonly proxy;
    -    private readonly tlsConnectionOptions;
    -    timeout: number | null;
    -    constructor(input: string | SocksProxyAgentOptions, options?: SocksProxyAgentOptionsExtra);
    -    /**
    -     * Initiates a SOCKS connection to the specified SOCKS proxy server,
    -     * which in turn connects to the specified remote host and port.
    -     *
    -     * @api protected
    -     */
    -    callback(req: ClientRequest, opts: RequestOptions): Promise;
    -}
    -export {};
    diff --git a/deps/npm/node_modules/socks-proxy-agent/dist/index.js.map b/deps/npm/node_modules/socks-proxy-agent/dist/index.js.map
    deleted file mode 100644
    index e183e8e7a13ce0..00000000000000
    --- a/deps/npm/node_modules/socks-proxy-agent/dist/index.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iCAAmE;AACnE,2CAAiE;AAEjE,kDAA+B;AAE/B,8CAAqB;AAErB,8CAAqB;AAarB,MAAM,KAAK,GAAG,IAAA,eAAW,EAAC,mBAAmB,CAAC,CAAA;AAE9C,SAAS,eAAe,CAAE,IAA4B;;IACpD,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,IAAI,GAAuB,CAAC,CAAA;IAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAA;IAE1B,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,IAAI,SAAS,CAAC,WAAW,CAAC,CAAA;KACjC;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;QACjC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;KACjB;SAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;QACxC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;KAC/B;IAED,0EAA0E;IAC1E,iEAAiE;IACjE,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,IAAI,GAAG,IAAI,CAAA;KACZ;IAED,sEAAsE;IACtE,iBAAiB;IACjB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;QACzB,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YACtC,KAAK,QAAQ;gBACX,MAAM,GAAG,IAAI,CAAA;YACf,eAAe;YACf,KAAK,SAAS;gBACZ,IAAI,GAAG,CAAC,CAAA;gBACR,MAAK;YACP,KAAK,QAAQ;gBACX,MAAM,GAAG,IAAI,CAAA;YACf,eAAe;YACf,KAAK,OAAO,CAAC,CAAC,sCAAsC;YACpD,KAAK,SAAS;gBACZ,IAAI,GAAG,CAAC,CAAA;gBACR,MAAK;YACP;gBACE,MAAM,IAAI,SAAS,CAAC,8CAA8C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;SAC7F;KACF;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;QACpC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;YACtC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;SACjB;aAAM;YACL,MAAM,IAAI,SAAS,CAAC,+BAA+B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SACxE;KACF;IAED,MAAM,KAAK,GAAe;QACxB,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CAAA;IAED,IAAI,MAAM,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,IAAI,CAAC,QAAQ,CAAA;IACzC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC5B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAChB,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;KACnB;IACD,IAAI,MAAM,IAAI,IAAI,EAAE;QAClB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;YACrC,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,KAAK;SAClB,CAAC,CAAA;KACH;IACD,IAAI,QAAQ,IAAI,IAAI,EAAE;QACpB,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE;YACvC,KAAK,EAAE,QAAQ;YACf,UAAU,EAAE,KAAK;SAClB,CAAC,CAAA;KACH;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,qBAAqB,GAAG,CAAC,KAAsC,EAA0B,EAAE;IAC/F,IAAI,YAAoC,CAAA;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,YAAY,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;KAC9B;SAAM;QACL,YAAY,GAAG,KAAK,CAAA;KACrB;IACD,IAAI,YAAY,IAAI,IAAI,EAAE;QACxB,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAA;KACjF;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAID,MAAa,eAAgB,SAAQ,kBAAK;IAMxC,YAAa,KAAsC,EAAE,OAAqC;;QACxF,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;QACjD,KAAK,CAAC,YAAY,CAAC,CAAA;QAEnB,MAAM,WAAW,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;QAEjD,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,MAAM,CAAA;QACtC,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAA;QAC9B,IAAI,CAAC,oBAAoB,GAAG,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5E,IAAI,CAAC,OAAO,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,mCAAI,IAAI,CAAA;IACzC,CAAC;IAED;;;;;OAKG;IACG,QAAQ,CAAE,GAAkB,EAAE,IAAoB;;;YACtD,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;YAE7C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAA;YAEjD,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;aACtC;YAED,IAAI,YAAY,EAAE;gBAChB,mEAAmE;gBACnE,IAAI,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACnD,0DAA0D;oBAC1D,MAAM,QAAQ,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,aAAG,CAAC,MAAM,CAAA;oBAC7C,QAAQ,CAAC,IAAK,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;wBAC/B,IAAI,GAAG,EAAE;4BACP,MAAM,CAAC,GAAG,CAAC,CAAA;yBACZ;6BAAM;4BACL,OAAO,CAAC,GAAG,CAAC,CAAA;yBACb;oBACH,CAAC,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;aACH;YAED,MAAM,SAAS,GAAuB;gBACpC,KAAK;gBACL,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;gBAC3B,OAAO,EAAE,SAAS;gBAClB,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,SAAS;aAC9B,CAAA;YAED,MAAM,OAAO,GAAG,CAAC,SAAyB,EAAE,EAAE;gBAC5C,GAAG,CAAC,OAAO,EAAE,CAAA;gBACb,MAAM,CAAC,OAAO,EAAE,CAAA;gBAChB,IAAI,SAAS;oBAAE,SAAS,CAAC,OAAO,EAAE,CAAA;YACpC,CAAC,CAAA;YAED,KAAK,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAA;YACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,mBAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;YAChE,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAEpD,IAAI,OAAO,KAAK,IAAI,EAAE;gBACpB,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;gBAC1B,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;aACtC;YAED,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,sDAAsD;gBACtD,8CAA8C;gBAC9C,KAAK,CAAC,oCAAoC,CAAC,CAAA;gBAC3C,MAAM,UAAU,GAAG,MAAA,IAAI,CAAC,UAAU,mCAAI,IAAI,CAAC,IAAI,CAAA;gBAE/C,MAAM,SAAS,GAAG,aAAG,CAAC,OAAO,+CACxB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,KACjD,MAAM;oBACN,UAAU,KACP,IAAI,CAAC,oBAAoB,EAC5B,CAAA;gBAEF,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBAChC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;oBACxC,OAAO,CAAC,SAAS,CAAC,CAAA;gBACpB,CAAC,CAAC,CAAA;gBAEF,OAAO,SAAS,CAAA;aACjB;YAED,OAAO,MAAM,CAAA;;KACd;CACF;AA7FD,0CA6FC;AAED,SAAS,IAAI,CACX,GAAM,EACN,GAAG,IAAO;IAIV,MAAM,GAAG,GAAG,EAAgD,CAAA;IAC5D,IAAI,GAAqB,CAAA;IACzB,KAAK,GAAG,IAAI,GAAG,EAAE;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;SACpB;KACF;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/socks/build/client/socksclient.js.map b/deps/npm/node_modules/socks/build/client/socksclient.js.map
    deleted file mode 100644
    index f01f317e651bd2..00000000000000
    --- a/deps/npm/node_modules/socks/build/client/socksclient.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"socksclient.js","sourceRoot":"","sources":["../../src/client/socksclient.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAoC;AACpC,2BAA2B;AAC3B,yBAAyB;AACzB,+CAAyC;AACzC,mDAkB6B;AAC7B,+CAG2B;AAC3B,2DAAsD;AACtD,yCAA8D;AAw7B5D,iGAx7BM,uBAAgB,OAw7BN;AA95BlB,MAAM,WAAY,SAAQ,qBAAY;IAgBpC,YAAY,OAA2B;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,qBACP,OAAO,CACX,CAAC;QAEF,8BAA8B;QAC9B,IAAA,oCAA0B,EAAC,OAAO,CAAC,CAAC;QAEpC,gBAAgB;QAChB,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,gBAAgB,CACrB,OAA2B,EAC3B,QAGS;QAET,OAAO,IAAI,OAAO,CAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAClE,8BAA8B;YAC9B,IAAI;gBACF,IAAA,oCAA0B,EAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;aAClD;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACd,8DAA8D;oBAC9D,OAAO,OAAO,CAAC,GAAU,CAAC,CAAC,CAAC,oDAAoD;iBACjF;qBAAM;oBACL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpB;aACF;YAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,IAAiC,EAAE,EAAE;gBAC/D,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,oDAAoD;iBACpE;qBAAM;oBACL,OAAO,CAAC,IAAI,CAAC,CAAC;iBACf;YACH,CAAC,CAAC,CAAC;YAEH,kDAAkD;YAClD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAClC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACd,8DAA8D;oBAC9D,OAAO,CAAC,GAAU,CAAC,CAAC,CAAC,oDAAoD;iBAC1E;qBAAM;oBACL,MAAM,CAAC,GAAG,CAAC,CAAC;iBACb;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,qBAAqB,CAC1B,OAAgC,EAChC,QAGS;QAET,qDAAqD;QACrD,OAAO,IAAI,OAAO,CAA8B,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE;YACxE,mCAAmC;YACnC,IAAI;gBACF,IAAA,yCAA+B,EAAC,OAAO,CAAC,CAAC;aAC1C;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACd,8DAA8D;oBAC9D,OAAO,OAAO,CAAC,GAAU,CAAC,CAAC,CAAC,oDAAoD;iBACjF;qBAAM;oBACL,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpB;aACF;YAED,kBAAkB;YAClB,IAAI,OAAO,CAAC,cAAc,EAAE;gBAC1B,IAAA,mBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,IAAI;gBACF,IAAI,IAAgB,CAAC;gBAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAErC,0HAA0H;oBAC1H,MAAM,eAAe,GACnB,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;wBAC9B,CAAC,CAAC,OAAO,CAAC,WAAW;wBACrB,CAAC,CAAC;4BACE,IAAI,EACF,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;gCAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;4BAClC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;yBAClC,CAAC;oBAER,4CAA4C;oBAC5C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC;wBAChD,OAAO,EAAE,SAAS;wBAClB,KAAK,EAAE,SAAS;wBAChB,WAAW,EAAE,eAAe;wBAC5B,eAAe,EAAE,IAAI;qBACtB,CAAC,CAAC;oBAEH,wCAAwC;oBACxC,IAAI,GAAG,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC;iBAC9B;gBAED,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,IAAI,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;oBAC/B,OAAO,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC,oDAAoD;iBAC9E;qBAAM;oBACL,OAAO,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;iBACzB;aACF;YAAC,OAAO,GAAG,EAAE;gBACZ,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACd,8DAA8D;oBAC9D,OAAO,CAAC,GAAU,CAAC,CAAC,CAAC,oDAAoD;iBAC1E;qBAAM;oBACL,MAAM,CAAC,GAAG,CAAC,CAAC;iBACb;aACF;QACH,CAAC,CAAA,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,OAA6B;QACjD,MAAM,IAAI,GAAG,IAAI,0BAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAE1C,qBAAqB;QACrB,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACvC,IAAI,CAAC,UAAU,CAAC,0BAAc,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;SACxD;aAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YAC9C,IAAI,CAAC,UAAU,CAAC,0BAAc,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;SACxD;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,0BAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC3C;QAED,OAAO;QACP,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO;QACP,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,IAAY;QAC/B,MAAM,IAAI,GAAG,0BAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAmB,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,UAAU,CAAC;QAEf,IAAI,QAAQ,KAAK,0BAAc,CAAC,IAAI,EAAE;YACpC,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;SAC/C;aAAM,IAAI,QAAQ,KAAK,0BAAc,CAAC,IAAI,EAAE;YAC3C,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/C;aAAM;YACL,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;SAChD;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAEvC,OAAO;YACL,WAAW;YACX,UAAU,EAAE;gBACV,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,UAAU;aACjB;YACD,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,QAA0B;QACzC,IAAI,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,KAAK,EAAE;YACzC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;SACvB;IACH,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,cAAuB;QACpC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE/C,+CAA+C;QAC/C,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,EACjC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,2BAAe,CACxC,CAAC;QAEF,8EAA8E;QAC9E,IAAI,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,EAAE;YACpD,KAAK,CAAC,KAAK,EAAE,CAAC;SACf;QAED,yGAAyG;QACzG,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;SAChC;QAED,gCAAgC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE5C,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,UAAU,CAAC,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,6BAAa,EAAE,CAAC;QAEzC,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC7B;aAAM;YACJ,IAAI,CAAC,MAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAE7D,IACE,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;gBAC1C,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,IAAI,EACrC;gBACC,IAAI,CAAC,MAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;aACxE;SACF;QAED,6FAA6F;QAC7F,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/C,YAAY,CAAC,GAAG,EAAE;gBAChB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;iBACtC;gBACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IACvE,gBAAgB;QACtB,uCACK,IAAI,CAAC,OAAO,CAAC,cAAc,KAC9B,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAC7D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAC7B;IACJ,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,IACE,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,WAAW;YAC3C,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,yBAAyB,EACzD;YACA,IAAI,CAAC,WAAW,CAAC,kBAAM,CAAC,uBAAuB,CAAC,CAAC;SAClD;IACH,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,SAAS,CAAC,CAAC;QAE1C,0BAA0B;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,0BAA0B,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,oBAAoB,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,IAAY;QACxC;;;UAGE;QACF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhC,6BAA6B;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,mFAAmF;QACnF,OACE,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,WAAW;YAC3C,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,KAAK;YACrC,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,4BAA4B,EAC9D;YACA,gDAAgD;YAChD,IAAI,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,oBAAoB,EAAE;gBACxD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;oBACjC,4CAA4C;oBAC5C,IAAI,CAAC,kCAAkC,EAAE,CAAC;iBAC3C;qBAAM;oBACL,wDAAwD;oBACxD,IAAI,CAAC,oCAAoC,EAAE,CAAC;iBAC7C;gBACD,wDAAwD;aACzD;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,kBAAkB,EAAE;gBAC7D,IAAI,CAAC,kDAAkD,EAAE,CAAC;gBAC1D,6DAA6D;aAC9D;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,kBAAkB,EAAE;gBAC7D,IAAI,CAAC,kCAAkC,EAAE,CAAC;gBAC1C,mEAAmE;aACpE;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,yBAAyB,EAAE;gBACpE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;oBACjC,IAAI,CAAC,sCAAsC,EAAE,CAAC;iBAC/C;qBAAM;oBACL,IAAI,CAAC,sCAAsC,EAAE,CAAC;iBAC/C;aACF;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,kBAAM,CAAC,aAAa,CAAC,CAAC;gBACvC,MAAM;aACP;SACF;IACH,CAAC;IAED;;;OAGG;IACK,cAAc;QACpB,IAAI,CAAC,WAAW,CAAC,kBAAM,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,GAAU;QAC/B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,4BAA4B;QAClC,6FAA6F;QAC7F,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACxD,CAAC;IAED;;;OAGG;IACK,WAAW,CAAC,GAAW;QAC7B,2FAA2F;QAC3F,IAAI,IAAI,CAAC,KAAK,KAAK,4BAAgB,CAAC,KAAK,EAAE;YACzC,+BAA+B;YAC/B,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,KAAK,CAAC,CAAC;YAEtC,iBAAiB;YACjB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAEtB,4BAA4B;YAC5B,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAEpC,sBAAsB;YACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,uBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;SAC7D;IACH,CAAC;IAED;;OAEG;IACK,0BAA0B;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAE/C,MAAM,IAAI,GAAG,IAAI,0BAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,wBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAElD,iBAAiB;QACjB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,sBAAsB;SACvB;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,4BAA4B;YAC/B,uCAA2B,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACK,kCAAkC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,0BAAc,CAAC,OAAO,EAAE;YACtC,IAAI,CAAC,WAAW,CACd,GAAG,kBAAM,CAAC,6BAA6B,OACrC,0BAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB,GAAG,CACJ,CAAC;SACH;aAAM;YACL,gBAAgB;YAChB,IAAI,wBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,wBAAY,CAAC,IAAI,EAAE;gBAC5D,MAAM,IAAI,GAAG,0BAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBAEpB,MAAM,UAAU,GAAoB;oBAClC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;oBACzB,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvC,CAAC;gBAEF,yCAAyC;gBACzC,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;iBAChD;gBACD,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,yBAAyB,CAAC,CAAC;gBAC1D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;gBAEtD,mBAAmB;aACpB;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;aACjD;SACF;IACH,CAAC;IAED;;;OAGG;IACK,sCAAsC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,0BAAc,CAAC,OAAO,EAAE;YACtC,IAAI,CAAC,WAAW,CACd,GAAG,kBAAM,CAAC,0CAA0C,OAClD,0BAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CACxB,GAAG,CACJ,CAAC;SACH;aAAM;YACL,MAAM,IAAI,GAAG,0BAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAEpB,MAAM,UAAU,GAAoB;gBAClC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;gBACzB,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;aACvC,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;SAC7D;IACH,CAAC;IAED;;OAEG;IACK,0BAA0B;QAChC,MAAM,IAAI,GAAG,IAAI,0BAAW,EAAE,CAAC;QAE/B,wCAAwC;QACxC,MAAM,oBAAoB,GAAG,CAAC,sBAAU,CAAC,MAAM,CAAC,CAAC;QAEjD,6FAA6F;QAC7F,sHAAsH;QACtH,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC5D,oBAAoB,CAAC,IAAI,CAAC,sBAAU,CAAC,QAAQ,CAAC,CAAC;SAChD;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS,EAAE;YACvD,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;SAClE;QAED,yBAAyB;QACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,4BAA4B;YAC/B,uCAA2B,CAAC,8BAA8B,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,oBAAoB,CAAC,CAAC;IACvD,CAAC;IAED;;;OAGG;IACK,oCAAoC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,kBAAM,CAAC,yCAAyC,CAAC,CAAC;SACpE;aAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,qCAAyB,EAAE;YAChD,IAAI,CAAC,WAAW,CAAC,kBAAM,CAAC,+CAA+C,CAAC,CAAC;SAC1E;aAAM;YACL,6EAA6E;YAC7E,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,sBAAU,CAAC,MAAM,EAAE;gBACjC,IAAI,CAAC,oBAAoB,GAAG,sBAAU,CAAC,MAAM,CAAC;gBAC9C,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,0EAA0E;aAC3E;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,sBAAU,CAAC,QAAQ,EAAE;gBAC1C,IAAI,CAAC,oBAAoB,GAAG,sBAAU,CAAC,QAAQ,CAAC;gBAChD,IAAI,CAAC,gCAAgC,EAAE,CAAC;gBACxC,qFAAqF;aACtF;iBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE;gBAC5D,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAClE,IAAI,CAAC,8BAA8B,EAAE,CAAC;aACvC;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,kBAAM,CAAC,4CAA4C,CAAC,CAAC;aACvE;SACF;IACH,CAAC;IAED;;;;OAIG;IACK,gCAAgC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEnD,MAAM,IAAI,GAAG,IAAI,0BAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAE3B,IAAI,CAAC,4BAA4B;YAC/B,uCAA2B,CAAC,oCAAoC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAEa,8BAA8B;;YAC1C,IAAI,CAAC,4BAA4B;gBAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,kBAAkB,CAAC,CAAC;QACrD,CAAC;KAAA;IAEa,uCAAuC,CAAC,IAAY;;YAChE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;KAAA;IAEa,iDAAiD,CAC7D,IAAY;;YAEZ,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC1B,CAAC;KAAA;IAEa,mDAAmD,CAC/D,IAAY;;YAEZ,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAC1B,CAAC;KAAA;IAED;;;OAGG;IACW,kDAAkD;;YAC9D,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,8BAA8B,CAAC,CAAC;YAE/D,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,IAAI,IAAI,CAAC,oBAAoB,KAAK,sBAAU,CAAC,MAAM,EAAE;gBACnD,UAAU,GAAG,MAAM,IAAI,CAAC,iDAAiD,CACvE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAC1B,CAAC;aACH;iBAAM,IAAI,IAAI,CAAC,oBAAoB,KAAK,sBAAU,CAAC,QAAQ,EAAE;gBAC5D,UAAU;oBACR,MAAM,IAAI,CAAC,mDAAmD,CAC5D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAC1B,CAAC;aACL;iBAAM,IACL,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EACnE;gBACA,UAAU,GAAG,MAAM,IAAI,CAAC,uCAAuC,CAC7D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CACrE,CAAC;aACH;YAED,IAAI,CAAC,UAAU,EAAE;gBACf,IAAI,CAAC,WAAW,CAAC,kBAAM,CAAC,0BAA0B,CAAC,CAAC;aACrD;iBAAM;gBACL,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;QACH,CAAC;KAAA;IAED;;OAEG;IACK,wBAAwB;QAC9B,MAAM,IAAI,GAAG,IAAI,0BAAW,EAAE,CAAC;QAE/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,wBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAEtB,sBAAsB;QACtB,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,0BAAc,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9D;aAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACpD,IAAI,CAAC,UAAU,CAAC,0BAAc,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;SAC9D;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,0BAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,4BAA4B;YAC/B,uCAA2B,CAAC,oBAAoB,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACK,kCAAkC;QACxC,+EAA+E;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,0BAAc,CAAC,OAAO,EAAE;YAC9D,IAAI,CAAC,WAAW,CACd,GAAG,kBAAM,CAAC,mCAAmC,MAC3C,0BAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAC1B,EAAE,CACH,CAAC;SACH;aAAM;YACL,oBAAoB;YACpB,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAE9B,IAAI,UAA2B,CAAC;YAChC,IAAI,IAAiB,CAAC;YAEtB,OAAO;YACP,IAAI,WAAW,KAAK,0BAAc,CAAC,IAAI,EAAE;gBACvC,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,uCAA2B,CAAC,kBAAkB,CAAC;gBAClE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC1C,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,GAAG,0BAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;gBAEF,UAAU,GAAG;oBACX,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC1B,CAAC;gBAEF,4DAA4D;gBAC5D,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;iBAChD;gBAED,WAAW;aACZ;iBAAM,IAAI,WAAW,KAAK,0BAAc,CAAC,QAAQ,EAAE;gBAClD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,UAAU,GACd,uCAA2B,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,qCAAqC;gBAEvG,8BAA8B;gBAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC1C,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,GAAG,0BAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;gBAEF,UAAU,GAAG;oBACX,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;oBACjC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC1B,CAAC;gBACF,OAAO;aACR;iBAAM,IAAI,WAAW,KAAK,0BAAc,CAAC,IAAI,EAAE;gBAC9C,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,uCAA2B,CAAC,kBAAkB,CAAC;gBAClE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC1C,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,GAAG,0BAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;gBAEF,UAAU,GAAG;oBACX,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC1B,CAAC;aACH;YAED,6BAA6B;YAC7B,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,qBAAqB,CAAC,CAAC;YAEtD,gEAAgE;YAChE,IAAI,wBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,wBAAY,CAAC,OAAO,EAAE;gBAC/D,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;aAC7D;iBAAM,IAAI,wBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,wBAAY,CAAC,IAAI,EAAE;gBACnE;mHACmG;gBACnG,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,yBAAyB,CAAC,CAAC;gBAC1D,IAAI,CAAC,4BAA4B;oBAC/B,uCAA2B,CAAC,oBAAoB,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;gBACtD;;;kBAGE;aACH;iBAAM,IACL,wBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,wBAAY,CAAC,SAAS,EAC7D;gBACA,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC;gBAC5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACpC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACvB,UAAU;oBACV,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAED;;OAEG;IACK,sCAAsC;QAC5C,+EAA+E;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,0BAAc,CAAC,OAAO,EAAE;YAC9D,IAAI,CAAC,WAAW,CACd,GAAG,kBAAM,CAAC,0CAA0C,MAClD,0BAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAC1B,EAAE,CACH,CAAC;SACH;aAAM;YACL,oBAAoB;YACpB,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAE9B,IAAI,UAA2B,CAAC;YAChC,IAAI,IAAiB,CAAC;YAEtB,OAAO;YACP,IAAI,WAAW,KAAK,0BAAc,CAAC,IAAI,EAAE;gBACvC,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,uCAA2B,CAAC,kBAAkB,CAAC;gBAClE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC1C,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,GAAG,0BAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;gBAEF,UAAU,GAAG;oBACX,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC1B,CAAC;gBAEF,4DAA4D;gBAC5D,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;oBACjC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;iBAChD;gBAED,WAAW;aACZ;iBAAM,IAAI,WAAW,KAAK,0BAAc,CAAC,QAAQ,EAAE;gBAClD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM,UAAU,GACd,uCAA2B,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,8BAA8B;gBAEhG,8BAA8B;gBAC9B,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC1C,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,GAAG,0BAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;gBAEF,UAAU,GAAG;oBACX,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;oBACjC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC1B,CAAC;gBACF,OAAO;aACR;iBAAM,IAAI,WAAW,KAAK,0BAAc,CAAC,IAAI,EAAE;gBAC9C,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,uCAA2B,CAAC,kBAAkB,CAAC;gBAClE,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,UAAU,EAAE;oBAC1C,IAAI,CAAC,4BAA4B,GAAG,UAAU,CAAC;oBAC/C,OAAO;iBACR;gBAED,IAAI,GAAG,0BAAW,CAAC,UAAU,CAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;gBAEF,UAAU,GAAG;oBACX,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;oBACtC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC1B,CAAC;aACH;YAED,IAAI,CAAC,QAAQ,CAAC,4BAAgB,CAAC,WAAW,CAAC,CAAC;YAC5C,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAC;SAC7D;IACH,CAAC;IAED,IAAI,kBAAkB;QACpB,yBACK,IAAI,CAAC,OAAO,EACf;IACJ,CAAC;CACF;AAGC,kCAAW"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/socks/build/common/constants.js.map b/deps/npm/node_modules/socks/build/common/constants.js.map
    deleted file mode 100644
    index c1e070dea4ac3c..00000000000000
    --- a/deps/npm/node_modules/socks/build/common/constants.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/common/constants.ts"],"names":[],"mappings":";;;AAIA,MAAM,eAAe,GAAG,KAAK,CAAC;AA4M5B,0CAAe;AAxMjB,kBAAkB;AAClB,MAAM,MAAM,GAAG;IACb,mBAAmB,EAAE,wFAAwF;IAC7G,+BAA+B,EAAE,oGAAoG;IACrI,wBAAwB,EAAE,8FAA8F;IACxH,oCAAoC,EAAE,2CAA2C;IACjF,uCAAuC,EAAE,uFAAuF;IAChI,8BAA8B,EAAE,4CAA4C;IAC5E,gCAAgC,EAAE,8EAA8E;IAChH,sCAAsC,EAAE,2DAA2D;IACnG,wCAAwC,EAAE,oDAAoD;IAC9F,0CAA0C,EAAE,kKAAkK;IAC9M,gBAAgB,EAAE,mBAAmB;IACrC,YAAY,EAAE,eAAe;IAC7B,uBAAuB,EAAE,4BAA4B;IACrD,aAAa,EAAE,qDAAqD;IACpE,8BAA8B,EAAE,4CAA4C;IAC5E,6BAA6B,EAAE,kCAAkC;IACjE,uCAAuC,EAAE,6CAA6C;IACtF,0CAA0C,EAAE,iDAAiD;IAC7F,qCAAqC,EAAE,oDAAoD;IAC3F,yCAAyC,EAAE,mEAAmE;IAC9G,+CAA+C,EAAE,6EAA6E;IAC9H,4CAA4C,EAAE,yEAAyE;IACvH,0BAA0B,EAAE,8BAA8B;IAC1D,2BAA2B,EAAE,kDAAkD;IAC/E,mCAAmC,EAAE,kCAAkC;IACvE,uCAAuC,EAAE,sDAAsD;IAC/F,0CAA0C,EAAE,iDAAiD;CAC9F,CAAC;AA4KA,wBAAM;AA1KR,MAAM,2BAA2B,GAAG;IAClC,8BAA8B,EAAE,CAAC;IACjC,oCAAoC,EAAE,CAAC;IACvC,gDAAgD;IAChD,oBAAoB,EAAE,CAAC;IACvB,kBAAkB,EAAE,EAAE;IACtB,kBAAkB,EAAE,EAAE;IACtB,sBAAsB,EAAE,CAAC,cAAsB,EAAE,EAAE,CAAC,cAAc,GAAG,CAAC;IACtE,gDAAgD;IAChD,cAAc,EAAE,CAAC,EAAE,2BAA2B;CAC/C,CAAC;AAgLA,kEAA2B;AA5K7B,IAAK,YAIJ;AAJD,WAAK,YAAY;IACf,qDAAc,CAAA;IACd,+CAAW,CAAA;IACX,yDAAgB,CAAA;AAClB,CAAC,EAJI,YAAY,KAAZ,YAAY,QAIhB;AA0JC,oCAAY;AAxJd,IAAK,cAKJ;AALD,WAAK,cAAc;IACjB,0DAAc,CAAA;IACd,wDAAa,CAAA;IACb,4DAAe,CAAA;IACf,sEAAoB,CAAA;AACtB,CAAC,EALI,cAAc,KAAd,cAAc,QAKlB;AAoJC,wCAAc;AAlJhB,IAAK,UAIJ;AAJD,WAAK,UAAU;IACb,+CAAa,CAAA;IACb,+CAAa,CAAA;IACb,mDAAe,CAAA;AACjB,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AA+IC,gCAAU;AA7IZ,MAAM,wBAAwB,GAAG,IAAI,CAAC;AA0JpC,4DAAwB;AAzJ1B,MAAM,sBAAsB,GAAG,IAAI,CAAC;AA0JlC,wDAAsB;AAxJxB,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAyJrC,8DAAyB;AAvJ3B,IAAK,cAUJ;AAVD,WAAK,cAAc;IACjB,yDAAc,CAAA;IACd,yDAAc,CAAA;IACd,+DAAiB,CAAA;IACjB,+EAAyB,CAAA;IACzB,yEAAsB,CAAA;IACtB,6EAAwB,CAAA;IACxB,+DAAiB,CAAA;IACjB,iFAA0B,CAAA;IAC1B,iFAA0B,CAAA;AAC5B,CAAC,EAVI,cAAc,KAAd,cAAc,QAUlB;AAgIC,wCAAc;AA9HhB,IAAK,cAIJ;AAJD,WAAK,cAAc;IACjB,mDAAW,CAAA;IACX,2DAAe,CAAA;IACf,mDAAW,CAAA;AACb,CAAC,EAJI,cAAc,KAAd,cAAc,QAIlB;AAyHC,wCAAc;AAvHhB,IAAK,gBAcJ;AAdD,WAAK,gBAAgB;IACnB,6DAAW,CAAA;IACX,mEAAc,CAAA;IACd,iEAAa,CAAA;IACb,uFAAwB,CAAA;IACxB,+GAAoC,CAAA;IACpC,mFAAsB,CAAA;IACtB,2GAAkC,CAAA;IAClC,mFAAsB,CAAA;IACtB,yFAAyB,CAAA;IACzB,iGAA6B,CAAA;IAC7B,sEAAgB,CAAA;IAChB,wEAAiB,CAAA;IACjB,0DAAU,CAAA;AACZ,CAAC,EAdI,gBAAgB,KAAhB,gBAAgB,QAcpB;AA2GC,4CAAgB"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/socks/build/common/helpers.js.map b/deps/npm/node_modules/socks/build/common/helpers.js.map
    deleted file mode 100644
    index dae124861aa90f..00000000000000
    --- a/deps/npm/node_modules/socks/build/common/helpers.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/common/helpers.ts"],"names":[],"mappings":";;;AAKA,iCAAwC;AACxC,2CAMqB;AACrB,iCAAiC;AAEjC;;;;GAIG;AACH,SAAS,0BAA0B,CACjC,OAA2B,EAC3B,gBAAgB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC;IAEnD,8BAA8B;IAC9B,IAAI,CAAC,wBAAY,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAClC,MAAM,IAAI,uBAAgB,CAAC,kBAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;KACjE;IAED,6CAA6C;IAC7C,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;QACpD,MAAM,IAAI,uBAAgB,CAAC,kBAAM,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;KAC7E;IAED,oBAAoB;IACpB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAChD,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,oCAAoC,EAC3C,OAAO,CACR,CAAC;KACH;IAED,2BAA2B;IAC3B,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACrC,MAAM,IAAI,uBAAgB,CAAC,kBAAM,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;KAC5E;IAED,gCAAgC;IAChC,uBAAuB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEhD,gBAAgB;IAChB,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC5D,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,gCAAgC,EACvC,OAAO,CACR,CAAC;KACH;IAED,sCAAsC;IACtC,IACE,OAAO,CAAC,eAAe;QACvB,CAAC,CAAC,OAAO,CAAC,eAAe,YAAY,MAAM,CAAC,MAAM,CAAC,EACnD;QACA,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,uCAAuC,EAC9C,OAAO,CACR,CAAC;KACH;AACH,CAAC;AA6IO,gEAA0B;AA3IlC;;;GAGG;AACH,SAAS,+BAA+B,CAAC,OAAgC;IACvE,2CAA2C;IAC3C,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;QACjC,MAAM,IAAI,uBAAgB,CAAC,kBAAM,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;KACtE;IAED,oBAAoB;IACpB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;QAChD,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,oCAAoC,EAC3C,OAAO,CACR,CAAC;KACH;IAED,4BAA4B;IAC5B,IACE,CAAC,CACC,OAAO,CAAC,OAAO;QACf,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QAC9B,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAC5B,EACD;QACA,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,sCAAsC,EAC7C,OAAO,CACR,CAAC;KACH;IAED,mBAAmB;IACnB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAiB,EAAE,EAAE;QAC5C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,8BAA8B,EACrC,OAAO,CACR,CAAC;SACH;QAED,gCAAgC;QAChC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,gBAAgB;IAChB,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC5D,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,gCAAgC,EACvC,OAAO,CACR,CAAC;KACH;AACH,CAAC;AAuFmC,0EAA+B;AArFnE,SAAS,uBAAuB,CAC9B,KAAiB,EACjB,OAAqD;IAErD,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,EAAE;QAC1C,4BAA4B;QAC5B,IACE,KAAK,CAAC,kBAAkB,GAAG,oCAAwB;YACnD,KAAK,CAAC,kBAAkB,GAAG,kCAAsB,EACjD;YACA,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,wCAAwC,EAC/C,OAAO,CACR,CAAC;SACH;QAED,sCAAsC;QACtC,IACE,KAAK,CAAC,2BAA2B,KAAK,SAAS;YAC/C,OAAO,KAAK,CAAC,2BAA2B,KAAK,UAAU,EACvD;YACA,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,0CAA0C,EACjD,OAAO,CACR,CAAC;SACH;QAED,oCAAoC;QACpC,IAAI,KAAK,CAAC,yBAAyB,KAAK,SAAS,EAAE;YACjD,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,0CAA0C,EACjD,OAAO,CACR,CAAC;SACH;QAED,+CAA+C;QAC/C,IACE,KAAK,CAAC,4BAA4B,KAAK,SAAS;YAChD,OAAO,KAAK,CAAC,4BAA4B,KAAK,UAAU,EACxD;YACA,MAAM,IAAI,uBAAgB,CACxB,kBAAM,CAAC,0CAA0C,EACjD,OAAO,CACR,CAAC;SACH;KACF;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,UAA2B;IACzD,OAAO,CACL,UAAU;QACV,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ;QACnC,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ;QACnC,UAAU,CAAC,IAAI,IAAI,CAAC;QACpB,UAAU,CAAC,IAAI,IAAI,KAAK,CACzB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,OAAO,CACL,KAAK;QACL,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC;QACvE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,IAAI,IAAI,CAAC;QACf,KAAK,CAAC,IAAI,IAAI,KAAK;QACnB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CACvC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC;AAChD,CAAC"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/socks/build/common/receivebuffer.js.map b/deps/npm/node_modules/socks/build/common/receivebuffer.js.map
    deleted file mode 100644
    index af5e2209016951..00000000000000
    --- a/deps/npm/node_modules/socks/build/common/receivebuffer.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"receivebuffer.js","sourceRoot":"","sources":["../../src/common/receivebuffer.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa;IAKjB,YAAY,IAAI,GAAG,IAAI;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC1B,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;SACH;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACnD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,CAC9B,IAAI,CAAC,GAAG,CACN,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EACtC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CACjC,CACF,CAAC;YACF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvB;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,MAAc;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,GAAG,CAAC,MAAc;QAChB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;YACxB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;SACH;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC;QAEtB,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAEO,sCAAa"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/socks/build/common/util.js.map b/deps/npm/node_modules/socks/build/common/util.js.map
    deleted file mode 100644
    index f1993233d693d9..00000000000000
    --- a/deps/npm/node_modules/socks/build/common/util.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAM,gBAAiB,SAAQ,KAAK;IAClC,YACE,OAAe,EACR,OAAqD;QAE5D,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,YAAO,GAAP,OAAO,CAA8C;IAG9D,CAAC;CACF;AAuBuB,4CAAgB;AArBxC;;;GAGG;AACH,SAAS,YAAY,CAAC,KAAgB;IACpC,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;AACH,CAAC;AAYyC,oCAAY"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/socks/build/index.js.map b/deps/npm/node_modules/socks/build/index.js.map
    deleted file mode 100644
    index 0e2bcb27b8ba12..00000000000000
    --- a/deps/npm/node_modules/socks/build/index.js.map
    +++ /dev/null
    @@ -1 +0,0 @@
    -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC"}
    \ No newline at end of file
    diff --git a/deps/npm/node_modules/socks/typings/client/socksclient.d.ts b/deps/npm/node_modules/socks/typings/client/socksclient.d.ts
    deleted file mode 100644
    index b886d95710b31c..00000000000000
    --- a/deps/npm/node_modules/socks/typings/client/socksclient.d.ts
    +++ /dev/null
    @@ -1,162 +0,0 @@
    -/// 
    -/// 
    -/// 
    -import { EventEmitter } from 'events';
    -import { SocksClientOptions, SocksClientChainOptions, SocksRemoteHost, SocksProxy, SocksClientBoundEvent, SocksClientEstablishedEvent, SocksUDPFrameDetails } from '../common/constants';
    -import { SocksClientError } from '../common/util';
    -import { Duplex } from 'stream';
    -declare interface SocksClient {
    -    on(event: 'error', listener: (err: SocksClientError) => void): this;
    -    on(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this;
    -    on(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this;
    -    once(event: string, listener: (...args: unknown[]) => void): this;
    -    once(event: 'error', listener: (err: SocksClientError) => void): this;
    -    once(event: 'bound', listener: (info: SocksClientBoundEvent) => void): this;
    -    once(event: 'established', listener: (info: SocksClientEstablishedEvent) => void): this;
    -    emit(event: string | symbol, ...args: unknown[]): boolean;
    -    emit(event: 'error', err: SocksClientError): boolean;
    -    emit(event: 'bound', info: SocksClientBoundEvent): boolean;
    -    emit(event: 'established', info: SocksClientEstablishedEvent): boolean;
    -}
    -declare class SocksClient extends EventEmitter implements SocksClient {
    -    private options;
    -    private socket;
    -    private state;
    -    private receiveBuffer;
    -    private nextRequiredPacketBufferSize;
    -    private socks5ChosenAuthType;
    -    private onDataReceived;
    -    private onClose;
    -    private onError;
    -    private onConnect;
    -    constructor(options: SocksClientOptions);
    -    /**
    -     * Creates a new SOCKS connection.
    -     *
    -     * Note: Supports callbacks and promises. Only supports the connect command.
    -     * @param options { SocksClientOptions } Options.
    -     * @param callback { Function } An optional callback function.
    -     * @returns { Promise }
    -     */
    -    static createConnection(options: SocksClientOptions, callback?: (error: Error | null, info?: SocksClientEstablishedEvent) => void): Promise;
    -    /**
    -     * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies.
    -     *
    -     * Note: Supports callbacks and promises. Only supports the connect method.
    -     * Note: Implemented via createConnection() factory function.
    -     * @param options { SocksClientChainOptions } Options
    -     * @param callback { Function } An optional callback function.
    -     * @returns { Promise }
    -     */
    -    static createConnectionChain(options: SocksClientChainOptions, callback?: (error: Error | null, socket?: SocksClientEstablishedEvent) => void): Promise;
    -    /**
    -     * Creates a SOCKS UDP Frame.
    -     * @param options
    -     */
    -    static createUDPFrame(options: SocksUDPFrameDetails): Buffer;
    -    /**
    -     * Parses a SOCKS UDP frame.
    -     * @param data
    -     */
    -    static parseUDPFrame(data: Buffer): SocksUDPFrameDetails;
    -    /**
    -     * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state.
    -     */
    -    private setState;
    -    /**
    -     * Starts the connection establishment to the proxy and destination.
    -     * @param existingSocket Connected socket to use instead of creating a new one (internal use).
    -     */
    -    connect(existingSocket?: Duplex): void;
    -    private getSocketOptions;
    -    /**
    -     * Handles internal Socks timeout callback.
    -     * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed.
    -     */
    -    private onEstablishedTimeout;
    -    /**
    -     * Handles Socket connect event.
    -     */
    -    private onConnectHandler;
    -    /**
    -     * Handles Socket data event.
    -     * @param data
    -     */
    -    private onDataReceivedHandler;
    -    /**
    -     * Handles processing of the data we have received.
    -     */
    -    private processData;
    -    /**
    -     * Handles Socket close event.
    -     * @param had_error
    -     */
    -    private onCloseHandler;
    -    /**
    -     * Handles Socket error event.
    -     * @param err
    -     */
    -    private onErrorHandler;
    -    /**
    -     * Removes internal event listeners on the underlying Socket.
    -     */
    -    private removeInternalSocketHandlers;
    -    /**
    -     * Closes and destroys the underlying Socket. Emits an error event.
    -     * @param err { String } An error string to include in error event.
    -     */
    -    private closeSocket;
    -    /**
    -     * Sends initial Socks v4 handshake request.
    -     */
    -    private sendSocks4InitialHandshake;
    -    /**
    -     * Handles Socks v4 handshake response.
    -     * @param data
    -     */
    -    private handleSocks4FinalHandshakeResponse;
    -    /**
    -     * Handles Socks v4 incoming connection request (BIND)
    -     * @param data
    -     */
    -    private handleSocks4IncomingConnectionResponse;
    -    /**
    -     * Sends initial Socks v5 handshake request.
    -     */
    -    private sendSocks5InitialHandshake;
    -    /**
    -     * Handles initial Socks v5 handshake response.
    -     * @param data
    -     */
    -    private handleInitialSocks5HandshakeResponse;
    -    /**
    -     * Sends Socks v5 user & password auth handshake.
    -     *
    -     * Note: No auth and user/pass are currently supported.
    -     */
    -    private sendSocks5UserPassAuthentication;
    -    private sendSocks5CustomAuthentication;
    -    private handleSocks5CustomAuthHandshakeResponse;
    -    private handleSocks5AuthenticationNoAuthHandshakeResponse;
    -    private handleSocks5AuthenticationUserPassHandshakeResponse;
    -    /**
    -     * Handles Socks v5 auth handshake response.
    -     * @param data
    -     */
    -    private handleInitialSocks5AuthenticationHandshakeResponse;
    -    /**
    -     * Sends Socks v5 final handshake request.
    -     */
    -    private sendSocks5CommandRequest;
    -    /**
    -     * Handles Socks v5 final handshake response.
    -     * @param data
    -     */
    -    private handleSocks5FinalHandshakeResponse;
    -    /**
    -     * Handles Socks v5 incoming connection request (BIND).
    -     */
    -    private handleSocks5IncomingConnectionResponse;
    -    get socksClientOptions(): SocksClientOptions;
    -}
    -export { SocksClient, SocksClientOptions, SocksClientChainOptions, SocksClientError, SocksRemoteHost, SocksProxy, SocksUDPFrameDetails, };
    diff --git a/deps/npm/node_modules/socks/typings/common/constants.d.ts b/deps/npm/node_modules/socks/typings/common/constants.d.ts
    deleted file mode 100644
    index 32a57052835076..00000000000000
    --- a/deps/npm/node_modules/socks/typings/common/constants.d.ts
    +++ /dev/null
    @@ -1,152 +0,0 @@
    -/// 
    -/// 
    -/// 
    -import { Duplex } from 'stream';
    -import { Socket, SocketConnectOpts } from 'net';
    -import { RequireOnlyOne } from './util';
    -declare const DEFAULT_TIMEOUT = 30000;
    -declare type SocksProxyType = 4 | 5;
    -declare const ERRORS: {
    -    InvalidSocksCommand: string;
    -    InvalidSocksCommandForOperation: string;
    -    InvalidSocksCommandChain: string;
    -    InvalidSocksClientOptionsDestination: string;
    -    InvalidSocksClientOptionsExistingSocket: string;
    -    InvalidSocksClientOptionsProxy: string;
    -    InvalidSocksClientOptionsTimeout: string;
    -    InvalidSocksClientOptionsProxiesLength: string;
    -    InvalidSocksClientOptionsCustomAuthRange: string;
    -    InvalidSocksClientOptionsCustomAuthOptions: string;
    -    NegotiationError: string;
    -    SocketClosed: string;
    -    ProxyConnectionTimedOut: string;
    -    InternalError: string;
    -    InvalidSocks4HandshakeResponse: string;
    -    Socks4ProxyRejectedConnection: string;
    -    InvalidSocks4IncomingConnectionResponse: string;
    -    Socks4ProxyRejectedIncomingBoundConnection: string;
    -    InvalidSocks5InitialHandshakeResponse: string;
    -    InvalidSocks5IntiailHandshakeSocksVersion: string;
    -    InvalidSocks5InitialHandshakeNoAcceptedAuthType: string;
    -    InvalidSocks5InitialHandshakeUnknownAuthType: string;
    -    Socks5AuthenticationFailed: string;
    -    InvalidSocks5FinalHandshake: string;
    -    InvalidSocks5FinalHandshakeRejected: string;
    -    InvalidSocks5IncomingConnectionResponse: string;
    -    Socks5ProxyRejectedIncomingBoundConnection: string;
    -};
    -declare const SOCKS_INCOMING_PACKET_SIZES: {
    -    Socks5InitialHandshakeResponse: number;
    -    Socks5UserPassAuthenticationResponse: number;
    -    Socks5ResponseHeader: number;
    -    Socks5ResponseIPv4: number;
    -    Socks5ResponseIPv6: number;
    -    Socks5ResponseHostname: (hostNameLength: number) => number;
    -    Socks4Response: number;
    -};
    -declare type SocksCommandOption = 'connect' | 'bind' | 'associate';
    -declare enum SocksCommand {
    -    connect = 1,
    -    bind = 2,
    -    associate = 3
    -}
    -declare enum Socks4Response {
    -    Granted = 90,
    -    Failed = 91,
    -    Rejected = 92,
    -    RejectedIdent = 93
    -}
    -declare enum Socks5Auth {
    -    NoAuth = 0,
    -    GSSApi = 1,
    -    UserPass = 2
    -}
    -declare const SOCKS5_CUSTOM_AUTH_START = 128;
    -declare const SOCKS5_CUSTOM_AUTH_END = 254;
    -declare const SOCKS5_NO_ACCEPTABLE_AUTH = 255;
    -declare enum Socks5Response {
    -    Granted = 0,
    -    Failure = 1,
    -    NotAllowed = 2,
    -    NetworkUnreachable = 3,
    -    HostUnreachable = 4,
    -    ConnectionRefused = 5,
    -    TTLExpired = 6,
    -    CommandNotSupported = 7,
    -    AddressNotSupported = 8
    -}
    -declare enum Socks5HostType {
    -    IPv4 = 1,
    -    Hostname = 3,
    -    IPv6 = 4
    -}
    -declare enum SocksClientState {
    -    Created = 0,
    -    Connecting = 1,
    -    Connected = 2,
    -    SentInitialHandshake = 3,
    -    ReceivedInitialHandshakeResponse = 4,
    -    SentAuthentication = 5,
    -    ReceivedAuthenticationResponse = 6,
    -    SentFinalHandshake = 7,
    -    ReceivedFinalResponse = 8,
    -    BoundWaitingForConnection = 9,
    -    Established = 10,
    -    Disconnected = 11,
    -    Error = 99
    -}
    -/**
    - * Represents a SocksProxy
    - */
    -declare type SocksProxy = RequireOnlyOne<{
    -    ipaddress?: string;
    -    host?: string;
    -    port: number;
    -    type: SocksProxyType;
    -    userId?: string;
    -    password?: string;
    -    custom_auth_method?: number;
    -    custom_auth_request_handler?: () => Promise;
    -    custom_auth_response_size?: number;
    -    custom_auth_response_handler?: (data: Buffer) => Promise;
    -}, 'host' | 'ipaddress'>;
    -/**
    - * Represents a remote host
    - */
    -interface SocksRemoteHost {
    -    host: string;
    -    port: number;
    -}
    -/**
    - * SocksClient connection options.
    - */
    -interface SocksClientOptions {
    -    command: SocksCommandOption;
    -    destination: SocksRemoteHost;
    -    proxy: SocksProxy;
    -    timeout?: number;
    -    existing_socket?: Duplex;
    -    set_tcp_nodelay?: boolean;
    -    socket_options?: SocketConnectOpts;
    -}
    -/**
    - * SocksClient chain connection options.
    - */
    -interface SocksClientChainOptions {
    -    command: 'connect';
    -    destination: SocksRemoteHost;
    -    proxies: SocksProxy[];
    -    timeout?: number;
    -    randomizeChain?: false;
    -}
    -interface SocksClientEstablishedEvent {
    -    socket: Socket;
    -    remoteHost?: SocksRemoteHost;
    -}
    -declare type SocksClientBoundEvent = SocksClientEstablishedEvent;
    -interface SocksUDPFrameDetails {
    -    frameNumber?: number;
    -    remoteHost: SocksRemoteHost;
    -    data: Buffer;
    -}
    -export { DEFAULT_TIMEOUT, ERRORS, SocksProxyType, SocksCommand, Socks4Response, Socks5Auth, Socks5HostType, Socks5Response, SocksClientState, SocksProxy, SocksRemoteHost, SocksCommandOption, SocksClientOptions, SocksClientChainOptions, SocksClientEstablishedEvent, SocksClientBoundEvent, SocksUDPFrameDetails, SOCKS_INCOMING_PACKET_SIZES, SOCKS5_CUSTOM_AUTH_START, SOCKS5_CUSTOM_AUTH_END, SOCKS5_NO_ACCEPTABLE_AUTH, };
    diff --git a/deps/npm/node_modules/socks/typings/common/helpers.d.ts b/deps/npm/node_modules/socks/typings/common/helpers.d.ts
    deleted file mode 100644
    index 8c3a106979df17..00000000000000
    --- a/deps/npm/node_modules/socks/typings/common/helpers.d.ts
    +++ /dev/null
    @@ -1,13 +0,0 @@
    -import { SocksClientOptions, SocksClientChainOptions } from '../client/socksclient';
    -/**
    - * Validates the provided SocksClientOptions
    - * @param options { SocksClientOptions }
    - * @param acceptedCommands { string[] } A list of accepted SocksProxy commands.
    - */
    -declare function validateSocksClientOptions(options: SocksClientOptions, acceptedCommands?: string[]): void;
    -/**
    - * Validates the SocksClientChainOptions
    - * @param options { SocksClientChainOptions }
    - */
    -declare function validateSocksClientChainOptions(options: SocksClientChainOptions): void;
    -export { validateSocksClientOptions, validateSocksClientChainOptions };
    diff --git a/deps/npm/node_modules/socks/typings/common/receivebuffer.d.ts b/deps/npm/node_modules/socks/typings/common/receivebuffer.d.ts
    deleted file mode 100644
    index 756e98b5893ed8..00000000000000
    --- a/deps/npm/node_modules/socks/typings/common/receivebuffer.d.ts
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -/// 
    -declare class ReceiveBuffer {
    -    private buffer;
    -    private offset;
    -    private originalSize;
    -    constructor(size?: number);
    -    get length(): number;
    -    append(data: Buffer): number;
    -    peek(length: number): Buffer;
    -    get(length: number): Buffer;
    -}
    -export { ReceiveBuffer };
    diff --git a/deps/npm/node_modules/socks/typings/common/util.d.ts b/deps/npm/node_modules/socks/typings/common/util.d.ts
    deleted file mode 100644
    index 83f20e7b5978e8..00000000000000
    --- a/deps/npm/node_modules/socks/typings/common/util.d.ts
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -import { SocksClientOptions, SocksClientChainOptions } from './constants';
    -/**
    - * Error wrapper for SocksClient
    - */
    -declare class SocksClientError extends Error {
    -    options: SocksClientOptions | SocksClientChainOptions;
    -    constructor(message: string, options: SocksClientOptions | SocksClientChainOptions);
    -}
    -/**
    - * Shuffles a given array.
    - * @param array The array to shuffle.
    - */
    -declare function shuffleArray(array: unknown[]): void;
    -declare type RequireOnlyOne = Pick> & {
    -    [K in Keys]?: Required> & Partial, undefined>>;
    -}[Keys];
    -export { RequireOnlyOne, SocksClientError, shuffleArray };
    diff --git a/deps/npm/node_modules/socks/typings/index.d.ts b/deps/npm/node_modules/socks/typings/index.d.ts
    deleted file mode 100644
    index fbf9006ef1d3de..00000000000000
    --- a/deps/npm/node_modules/socks/typings/index.d.ts
    +++ /dev/null
    @@ -1 +0,0 @@
    -export * from './client/socksclient';
    diff --git a/deps/npm/node_modules/spdx-license-ids/index.json b/deps/npm/node_modules/spdx-license-ids/index.json
    index fdd78fa0329faf..04c03126d98eb8 100644
    --- a/deps/npm/node_modules/spdx-license-ids/index.json
    +++ b/deps/npm/node_modules/spdx-license-ids/index.json
    @@ -23,6 +23,7 @@
     	"APSL-1.2",
     	"APSL-2.0",
     	"Abstyles",
    +	"AdaCore-doc",
     	"Adobe-2006",
     	"Adobe-Glyph",
     	"Afmparse",
    @@ -53,6 +54,10 @@
     	"BSD-4-Clause",
     	"BSD-4-Clause-Shortened",
     	"BSD-4-Clause-UC",
    +	"BSD-4.3RENO",
    +	"BSD-4.3TAHOE",
    +	"BSD-Advertising-Acknowledgement",
    +	"BSD-Attribution-HPND-disclaimer",
     	"BSD-Protection",
     	"BSD-Source-Code",
     	"BSL-1.0",
    @@ -63,9 +68,11 @@
     	"Beerware",
     	"BitTorrent-1.0",
     	"BitTorrent-1.1",
    +	"Bitstream-Charter",
     	"Bitstream-Vera",
     	"BlueOak-1.0.0",
     	"Borceux",
    +	"Brian-Gladman-3-Clause",
     	"C-UDA-1.0",
     	"CAL-1.0",
     	"CAL-1.0-Combined-Work-Exception",
    @@ -96,6 +103,7 @@
     	"CC-BY-NC-ND-4.0",
     	"CC-BY-NC-SA-1.0",
     	"CC-BY-NC-SA-2.0",
    +	"CC-BY-NC-SA-2.0-DE",
     	"CC-BY-NC-SA-2.0-FR",
     	"CC-BY-NC-SA-2.0-UK",
     	"CC-BY-NC-SA-2.5",
    @@ -137,6 +145,8 @@
     	"CERN-OHL-P-2.0",
     	"CERN-OHL-S-2.0",
     	"CERN-OHL-W-2.0",
    +	"CFITSIO",
    +	"CMU-Mach",
     	"CNRI-Jython",
     	"CNRI-Python",
     	"CNRI-Python-GPL-Compatible",
    @@ -147,8 +157,10 @@
     	"CUA-OPL-1.0",
     	"Caldera",
     	"ClArtistic",
    +	"Clips",
     	"Community-Spec-1.0",
     	"Condor-1.1",
    +	"Cornell-Lossless-JPEG",
     	"Crossword",
     	"CrystalStacker",
     	"Cube",
    @@ -177,6 +189,7 @@
     	"FSFAP",
     	"FSFUL",
     	"FSFULLR",
    +	"FSFULLRWD",
     	"FTL",
     	"Fair",
     	"Frameworx-1.0",
    @@ -212,14 +225,21 @@
     	"Giftware",
     	"Glide",
     	"Glulxe",
    +	"Graphics-Gems",
    +	"HP-1986",
     	"HPND",
    +	"HPND-Markus-Kuhn",
    +	"HPND-export-US",
     	"HPND-sell-variant",
    +	"HPND-sell-variant-MIT-disclaimer",
     	"HTMLTIDY",
     	"HaskellReport",
     	"Hippocratic-2.1",
     	"IBM-pibs",
     	"ICU",
    +	"IEC-Code-Components-EULA",
     	"IJG",
    +	"IJG-short",
     	"IPA",
     	"IPL-1.0",
     	"ISC",
    @@ -229,10 +249,13 @@
     	"Intel",
     	"Intel-ACPI",
     	"Interbase-1.0",
    +	"JPL-image",
     	"JPNIC",
     	"JSON",
     	"Jam",
     	"JasPer-2.0",
    +	"Kazlib",
    +	"Knuth-CTAN",
     	"LAL-1.2",
     	"LAL-1.3",
     	"LGPL-2.0-only",
    @@ -242,6 +265,7 @@
     	"LGPL-3.0-only",
     	"LGPL-3.0-or-later",
     	"LGPLLR",
    +	"LOOP",
     	"LPL-1.0",
     	"LPL-1.02",
     	"LPPL-1.0",
    @@ -263,6 +287,7 @@
     	"MIT-0",
     	"MIT-CMU",
     	"MIT-Modern-Variant",
    +	"MIT-Wu",
     	"MIT-advertising",
     	"MIT-enna",
     	"MIT-feh",
    @@ -277,6 +302,7 @@
     	"MS-RL",
     	"MTLL",
     	"MakeIndex",
    +	"Martin-Birgmeier",
     	"Minpack",
     	"MirOS",
     	"Motosoto",
    @@ -314,6 +340,7 @@
     	"OCLC-2.0",
     	"ODC-By-1.0",
     	"ODbL-1.0",
    +	"OFFIS",
     	"OFL-1.0",
     	"OFL-1.0-RFN",
     	"OFL-1.0-no-RFN",
    @@ -352,6 +379,7 @@
     	"OSL-2.0",
     	"OSL-2.1",
     	"OSL-3.0",
    +	"OpenPBS-2.3",
     	"OpenSSL",
     	"PDDL-1.0",
     	"PHP-3.0",
    @@ -366,6 +394,7 @@
     	"Python-2.0",
     	"Python-2.0.1",
     	"QPL-1.0",
    +	"QPL-1.0-INRIA-2004",
     	"Qhull",
     	"RHeCos-1.1",
     	"RPL-1.1",
    @@ -402,14 +431,20 @@
     	"Spencer-94",
     	"Spencer-99",
     	"SugarCRM-1.1.3",
    +	"SunPro",
    +	"Symlinks",
     	"TAPR-OHL-1.0",
     	"TCL",
     	"TCP-wrappers",
     	"TMate",
     	"TORQUE-1.1",
     	"TOSL",
    +	"TPDL",
    +	"TPL-1.0",
    +	"TTWL",
     	"TU-Berlin-1.0",
     	"TU-Berlin-2.0",
    +	"UCAR",
     	"UCL-1.0",
     	"UPL-1.0",
     	"Unicode-DFS-2015",
    @@ -443,6 +478,7 @@
     	"Zlib",
     	"blessing",
     	"bzip2-1.0.6",
    +	"checkmk",
     	"copyleft-next-0.3.0",
     	"copyleft-next-0.3.1",
     	"curl",
    @@ -456,12 +492,16 @@
     	"libpng-2.0",
     	"libselinux-1.0",
     	"libtiff",
    +	"libutil-David-Nugent",
     	"mpi-permissive",
     	"mpich2",
     	"mplus",
     	"psfrag",
     	"psutils",
    +	"snprintf",
    +	"w3m",
     	"xinetd",
    +	"xlock",
     	"xpp",
     	"zlib-acknowledgement"
     ]
    diff --git a/deps/npm/node_modules/spdx-license-ids/package.json b/deps/npm/node_modules/spdx-license-ids/package.json
    index e3622fccaf7bc4..ea060776d9cf76 100644
    --- a/deps/npm/node_modules/spdx-license-ids/package.json
    +++ b/deps/npm/node_modules/spdx-license-ids/package.json
    @@ -1,6 +1,6 @@
     {
     	"name": "spdx-license-ids",
    -	"version": "3.0.12",
    +	"version": "3.0.13",
     	"description": "A list of SPDX license identifiers",
     	"repository": "jslicense/spdx-license-ids",
     	"author": "Shinnosuke Watanabe (https://github.com/shinnn)",
    diff --git a/deps/npm/node_modules/string-width/index.d.ts b/deps/npm/node_modules/string-width/index.d.ts
    deleted file mode 100644
    index 12b5309751dd50..00000000000000
    --- a/deps/npm/node_modules/string-width/index.d.ts
    +++ /dev/null
    @@ -1,29 +0,0 @@
    -declare const stringWidth: {
    -	/**
    -	Get the visual width of a string - the number of columns required to display it.
    -
    -	Some Unicode characters are [fullwidth](https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms) and use double the normal width. [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) are stripped and doesn't affect the width.
    -
    -	@example
    -	```
    -	import stringWidth = require('string-width');
    -
    -	stringWidth('a');
    -	//=> 1
    -
    -	stringWidth('古');
    -	//=> 2
    -
    -	stringWidth('\u001B[1m古\u001B[22m');
    -	//=> 2
    -	```
    -	*/
    -	(string: string): number;
    -
    -	// TODO: remove this in the next major version, refactor the whole definition to:
    -	// declare function stringWidth(string: string): number;
    -	// export = stringWidth;
    -	default: typeof stringWidth;
    -}
    -
    -export = stringWidth;
    diff --git a/deps/npm/node_modules/strip-ansi/index.d.ts b/deps/npm/node_modules/strip-ansi/index.d.ts
    deleted file mode 100644
    index 907fccc29269eb..00000000000000
    --- a/deps/npm/node_modules/strip-ansi/index.d.ts
    +++ /dev/null
    @@ -1,17 +0,0 @@
    -/**
    -Strip [ANSI escape codes](https://en.wikipedia.org/wiki/ANSI_escape_code) from a string.
    -
    -@example
    -```
    -import stripAnsi = require('strip-ansi');
    -
    -stripAnsi('\u001B[4mUnicorn\u001B[0m');
    -//=> 'Unicorn'
    -
    -stripAnsi('\u001B]8;;https://github.com\u0007Click\u001B]8;;\u0007');
    -//=> 'Click'
    -```
    -*/
    -declare function stripAnsi(string: string): string;
    -
    -export = stripAnsi;
    diff --git a/deps/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass/index.d.ts b/deps/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass/index.d.ts
    deleted file mode 100644
    index 65faf63686c213..00000000000000
    --- a/deps/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass/index.d.ts
    +++ /dev/null
    @@ -1,155 +0,0 @@
    -/// 
    -import { EventEmitter } from 'events'
    -import { Stream } from 'stream'
    -
    -declare namespace Minipass {
    -  type Encoding = BufferEncoding | 'buffer' | null
    -
    -  interface Writable extends EventEmitter {
    -    end(): any
    -    write(chunk: any, ...args: any[]): any
    -  }
    -
    -  interface Readable extends EventEmitter {
    -    pause(): any
    -    resume(): any
    -    pipe(): any
    -  }
    -
    -  interface Pipe {
    -    src: Minipass
    -    dest: Writable
    -    opts: PipeOptions
    -  }
    -
    -  type DualIterable = Iterable & AsyncIterable
    -
    -  type ContiguousData = Buffer | ArrayBufferLike | ArrayBufferView | string
    -
    -  type BufferOrString = Buffer | string
    -
    -  interface StringOptions {
    -    encoding: BufferEncoding
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface BufferOptions {
    -    encoding?: null | 'buffer'
    -    objectMode?: boolean
    -    async?: boolean
    -  }
    -
    -  interface ObjectModeOptions {
    -    objectMode: true
    -    async?: boolean
    -  }
    -
    -  interface PipeOptions {
    -    end?: boolean
    -    proxyErrors?: boolean
    -  }
    -
    -  type Options = T extends string
    -    ? StringOptions
    -    : T extends Buffer
    -    ? BufferOptions
    -    : ObjectModeOptions
    -}
    -
    -declare class Minipass<
    -    RType extends any = Buffer,
    -    WType extends any = RType extends Minipass.BufferOrString
    -      ? Minipass.ContiguousData
    -      : RType
    -  >
    -  extends Stream
    -  implements Minipass.DualIterable
    -{
    -  static isStream(stream: any): stream is Minipass.Readable | Minipass.Writable
    -
    -  readonly bufferLength: number
    -  readonly flowing: boolean
    -  readonly writable: boolean
    -  readonly readable: boolean
    -  readonly paused: boolean
    -  readonly emittedEnd: boolean
    -  readonly destroyed: boolean
    -
    -  /**
    -   * Not technically private or readonly, but not safe to mutate.
    -   */
    -  private readonly buffer: RType[]
    -  private readonly pipes: Minipass.Pipe[]
    -
    -  /**
    -   * Technically writable, but mutating it can change the type,
    -   * so is not safe to do in TypeScript.
    -   */
    -  readonly objectMode: boolean
    -  async: boolean
    -
    -  /**
    -   * Note: encoding is not actually read-only, and setEncoding(enc)
    -   * exists. However, this type definition will insist that TypeScript
    -   * programs declare the type of a Minipass stream up front, and if
    -   * that type is string, then an encoding MUST be set in the ctor. If
    -   * the type is Buffer, then the encoding must be missing, or set to
    -   * 'buffer' or null. If the type is anything else, then objectMode
    -   * must be set in the constructor options.  So there is effectively
    -   * no allowed way that a TS program can set the encoding after
    -   * construction, as doing so will destroy any hope of type safety.
    -   * TypeScript does not provide many options for changing the type of
    -   * an object at run-time, which is what changing the encoding does.
    -   */
    -  readonly encoding: Minipass.Encoding
    -  // setEncoding(encoding: Encoding): void
    -
    -  // Options required if not reading buffers
    -  constructor(
    -    ...args: RType extends Buffer
    -      ? [] | [Minipass.Options]
    -      : [Minipass.Options]
    -  )
    -
    -  write(chunk: WType, cb?: () => void): boolean
    -  write(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): boolean
    -  read(size?: number): RType
    -  end(cb?: () => void): this
    -  end(chunk: any, cb?: () => void): this
    -  end(chunk: any, encoding?: Minipass.Encoding, cb?: () => void): this
    -  pause(): void
    -  resume(): void
    -  promise(): Promise
    -  collect(): Promise
    -
    -  concat(): RType extends Minipass.BufferOrString ? Promise : never
    -  destroy(er?: any): void
    -  pipe(dest: W, opts?: Minipass.PipeOptions): W
    -  unpipe(dest: W): void
    -
    -  /**
    -   * alias for on()
    -   */
    -  addEventHandler(event: string, listener: (...args: any[]) => any): this
    -
    -  on(event: string, listener: (...args: any[]) => any): this
    -  on(event: 'data', listener: (chunk: RType) => any): this
    -  on(event: 'error', listener: (error: any) => any): this
    -  on(
    -    event:
    -      | 'readable'
    -      | 'drain'
    -      | 'resume'
    -      | 'end'
    -      | 'prefinish'
    -      | 'finish'
    -      | 'close',
    -    listener: () => any
    -  ): this
    -
    -  [Symbol.iterator](): Iterator
    -  [Symbol.asyncIterator](): AsyncIterator
    -}
    -
    -export = Minipass
    diff --git a/deps/npm/node_modules/tuf-js/dist/config.d.ts b/deps/npm/node_modules/tuf-js/dist/config.d.ts
    deleted file mode 100644
    index 2a906c7c28d86b..00000000000000
    --- a/deps/npm/node_modules/tuf-js/dist/config.d.ts
    +++ /dev/null
    @@ -1,12 +0,0 @@
    -export declare const defaultConfig: {
    -    maxRootRotations: number;
    -    maxDelegations: number;
    -    rootMaxLength: number;
    -    timestampMaxLength: number;
    -    snapshotMaxLength: number;
    -    targetsMaxLength: number;
    -    prefixTargetsWithHash: boolean;
    -    fetchTimeout: number;
    -    fetchRetries: number;
    -};
    -export type Config = typeof defaultConfig;
    diff --git a/deps/npm/node_modules/tuf-js/dist/error.d.ts b/deps/npm/node_modules/tuf-js/dist/error.d.ts
    deleted file mode 100644
    index 3a42f0441b68f9..00000000000000
    --- a/deps/npm/node_modules/tuf-js/dist/error.d.ts
    +++ /dev/null
    @@ -1,22 +0,0 @@
    -export declare class ValueError extends Error {
    -}
    -export declare class RuntimeError extends Error {
    -}
    -export declare class PersistError extends Error {
    -}
    -export declare class RepositoryError extends Error {
    -}
    -export declare class BadVersionError extends RepositoryError {
    -}
    -export declare class EqualVersionError extends BadVersionError {
    -}
    -export declare class ExpiredMetadataError extends RepositoryError {
    -}
    -export declare class DownloadError extends Error {
    -}
    -export declare class DownloadLengthMismatchError extends DownloadError {
    -}
    -export declare class DownloadHTTPError extends DownloadError {
    -    statusCode: number;
    -    constructor(message: string, statusCode: number);
    -}
    diff --git a/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts b/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts
    deleted file mode 100644
    index 126e9eb11afc0e..00000000000000
    --- a/deps/npm/node_modules/tuf-js/dist/fetcher.d.ts
    +++ /dev/null
    @@ -1,23 +0,0 @@
    -/// 
    -/// 
    -type DownloadFileHandler = (file: string) => Promise;
    -export interface Fetcher {
    -    downloadFile(url: string, maxLength: number, handler: DownloadFileHandler): Promise;
    -    downloadBytes(url: string, maxLength: number): Promise;
    -}
    -export declare abstract class BaseFetcher implements Fetcher {
    -    abstract fetch(url: string): Promise;
    -    downloadFile(url: string, maxLength: number, handler: DownloadFileHandler): Promise;
    -    downloadBytes(url: string, maxLength: number): Promise;
    -}
    -interface FetcherOptions {
    -    timeout?: number;
    -    retries?: number;
    -}
    -export declare class DefaultFetcher extends BaseFetcher {
    -    private timeout?;
    -    private retries?;
    -    constructor(options?: FetcherOptions);
    -    fetch(url: string): Promise;
    -}
    -export {};
    diff --git a/deps/npm/node_modules/tuf-js/dist/index.d.ts b/deps/npm/node_modules/tuf-js/dist/index.d.ts
    deleted file mode 100644
    index b4d1bc2b9c8737..00000000000000
    --- a/deps/npm/node_modules/tuf-js/dist/index.d.ts
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -export { TargetFile } from '@tufjs/models';
    -export { BaseFetcher, Fetcher } from './fetcher';
    -export { Updater } from './updater';
    diff --git a/deps/npm/node_modules/tuf-js/dist/store.d.ts b/deps/npm/node_modules/tuf-js/dist/store.d.ts
    deleted file mode 100644
    index aed13b300d468d..00000000000000
    --- a/deps/npm/node_modules/tuf-js/dist/store.d.ts
    +++ /dev/null
    @@ -1,19 +0,0 @@
    -/// 
    -import { Metadata, Root, Snapshot, Targets, Timestamp } from '@tufjs/models';
    -export declare class TrustedMetadataStore {
    -    private trustedSet;
    -    private referenceTime;
    -    constructor(rootData: Buffer);
    -    get root(): Metadata;
    -    get timestamp(): Metadata | undefined;
    -    get snapshot(): Metadata | undefined;
    -    get targets(): Metadata | undefined;
    -    getRole(name: string): Metadata | undefined;
    -    updateRoot(bytesBuffer: Buffer): Metadata;
    -    updateTimestamp(bytesBuffer: Buffer): Metadata;
    -    updateSnapshot(bytesBuffer: Buffer, trusted?: boolean): Metadata;
    -    updateDelegatedTargets(bytesBuffer: Buffer, roleName: string, delegatorName: string): void;
    -    private loadTrustedRoot;
    -    private checkFinalTimestamp;
    -    private checkFinalSnapsnot;
    -}
    diff --git a/deps/npm/node_modules/tuf-js/dist/updater.d.ts b/deps/npm/node_modules/tuf-js/dist/updater.d.ts
    deleted file mode 100644
    index 9da17d74714cfa..00000000000000
    --- a/deps/npm/node_modules/tuf-js/dist/updater.d.ts
    +++ /dev/null
    @@ -1,33 +0,0 @@
    -import { TargetFile } from '@tufjs/models';
    -import { Config } from './config';
    -import { Fetcher } from './fetcher';
    -export interface UpdaterOptions {
    -    metadataDir: string;
    -    metadataBaseUrl: string;
    -    targetDir?: string;
    -    targetBaseUrl?: string;
    -    fetcher?: Fetcher;
    -    config?: Partial;
    -}
    -export declare class Updater {
    -    private dir;
    -    private metadataBaseUrl;
    -    private targetDir?;
    -    private targetBaseUrl?;
    -    private trustedSet;
    -    private config;
    -    private fetcher;
    -    constructor(options: UpdaterOptions);
    -    refresh(): Promise;
    -    getTargetInfo(targetPath: string): Promise;
    -    downloadTarget(targetInfo: TargetFile, filePath?: string, targetBaseUrl?: string): Promise;
    -    findCachedTarget(targetInfo: TargetFile, filePath?: string): Promise;
    -    private loadLocalMetadata;
    -    private loadRoot;
    -    private loadTimestamp;
    -    private loadSnapshot;
    -    private loadTargets;
    -    private preorderDepthFirstWalk;
    -    private generateTargetPath;
    -    private persistMetadata;
    -}
    diff --git a/deps/npm/node_modules/tuf-js/dist/utils/tmpfile.d.ts b/deps/npm/node_modules/tuf-js/dist/utils/tmpfile.d.ts
    deleted file mode 100644
    index 4d5ee8abb84a6b..00000000000000
    --- a/deps/npm/node_modules/tuf-js/dist/utils/tmpfile.d.ts
    +++ /dev/null
    @@ -1,3 +0,0 @@
    -type TempFileHandler = (file: string) => Promise;
    -export declare const withTempFile: (handler: TempFileHandler) => Promise;
    -export {};
    diff --git a/deps/npm/node_modules/tuf-js/package.json b/deps/npm/node_modules/tuf-js/package.json
    index 29436c760ff20f..4396e202369b8b 100644
    --- a/deps/npm/node_modules/tuf-js/package.json
    +++ b/deps/npm/node_modules/tuf-js/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "tuf-js",
    -  "version": "1.1.1",
    +  "version": "1.1.2",
       "description": "JavaScript implementation of The Update Framework (TUF)",
       "main": "dist/index.js",
       "types": "dist/index.d.ts",
    @@ -26,17 +26,17 @@
       "bugs": {
         "url": "https://github.com/theupdateframework/tuf-js/issues"
       },
    -  "homepage": "https://github.com/theupdateframework/tuf-js/packages/client#readme",
    +  "homepage": "https://github.com/theupdateframework/tuf-js/tree/main/packages/client#readme",
       "devDependencies": {
    -    "@tufjs/repo-mock": "1.0.0",
    +    "@tufjs/repo-mock": "1.0.1",
         "@types/make-fetch-happen": "^10.0.1",
    -    "@types/node": "^18.14.5",
    +    "@types/node": "^18.15.3",
         "nock": "^13.2.9",
         "typescript": "^4.9.5"
       },
       "dependencies": {
         "make-fetch-happen": "^11.0.1",
    -    "@tufjs/models": "1.0.0"
    +    "@tufjs/models": "1.0.1"
       },
       "engines": {
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
    diff --git a/deps/npm/package.json b/deps/npm/package.json
    index bfd702e4e7afe8..2a61a1dda52e46 100644
    --- a/deps/npm/package.json
    +++ b/deps/npm/package.json
    @@ -1,5 +1,5 @@
     {
    -  "version": "9.6.2",
    +  "version": "9.6.3",
       "name": "npm",
       "description": "a package manager for JavaScript",
       "workspaces": [
    @@ -53,14 +53,14 @@
       },
       "dependencies": {
         "@isaacs/string-locale-compare": "^1.1.0",
    -    "@npmcli/arborist": "^6.2.5",
    -    "@npmcli/config": "^6.1.4",
    -    "@npmcli/map-workspaces": "^3.0.2",
    +    "@npmcli/arborist": "^6.2.6",
    +    "@npmcli/config": "^6.1.5",
    +    "@npmcli/map-workspaces": "^3.0.3",
         "@npmcli/package-json": "^3.0.0",
         "@npmcli/run-script": "^6.0.0",
         "abbrev": "^2.0.0",
         "archy": "~1.0.0",
    -    "cacache": "^17.0.4",
    +    "cacache": "^17.0.5",
         "chalk": "^4.1.2",
         "ci-info": "^3.8.0",
         "cli-columns": "^4.0.0",
    @@ -68,33 +68,33 @@
         "columnify": "^1.6.0",
         "fastest-levenshtein": "^1.0.16",
         "fs-minipass": "^3.0.1",
    -    "glob": "^8.1.0",
    -    "graceful-fs": "^4.2.10",
    +    "glob": "^9.3.1",
    +    "graceful-fs": "^4.2.11",
         "hosted-git-info": "^6.1.1",
         "ini": "^3.0.1",
         "init-package-json": "^5.0.0",
         "is-cidr": "^4.0.2",
         "json-parse-even-better-errors": "^3.0.0",
         "libnpmaccess": "^7.0.2",
    -    "libnpmdiff": "^5.0.13",
    -    "libnpmexec": "^5.0.13",
    -    "libnpmfund": "^4.0.13",
    +    "libnpmdiff": "^5.0.14",
    +    "libnpmexec": "^5.0.14",
    +    "libnpmfund": "^4.0.14",
         "libnpmhook": "^9.0.3",
         "libnpmorg": "^5.0.3",
    -    "libnpmpack": "^5.0.13",
    -    "libnpmpublish": "^7.1.2",
    +    "libnpmpack": "^5.0.14",
    +    "libnpmpublish": "^7.1.3",
         "libnpmsearch": "^6.0.2",
         "libnpmteam": "^5.0.3",
         "libnpmversion": "^4.0.2",
         "make-fetch-happen": "^11.0.3",
    -    "minimatch": "^6.2.0",
    -    "minipass": "^4.2.4",
    +    "minimatch": "^7.4.3",
    +    "minipass": "^4.2.5",
         "minipass-pipeline": "^1.2.4",
         "ms": "^2.1.2",
         "node-gyp": "^9.3.1",
    -    "nopt": "^7.0.0",
    +    "nopt": "^7.1.0",
         "npm-audit-report": "^4.0.0",
    -    "npm-install-checks": "^6.0.0",
    +    "npm-install-checks": "^6.1.0",
         "npm-package-arg": "^10.1.0",
         "npm-pick-manifest": "^8.0.1",
         "npm-profile": "^7.0.1",
    @@ -103,11 +103,11 @@
         "npmlog": "^7.0.1",
         "p-map": "^4.0.0",
         "pacote": "^15.1.1",
    -    "parse-conflict-json": "^3.0.0",
    +    "parse-conflict-json": "^3.0.1",
         "proc-log": "^3.0.0",
         "qrcode-terminal": "^0.12.0",
         "read": "^2.0.0",
    -    "read-package-json": "^6.0.0",
    +    "read-package-json": "^6.0.1",
         "read-package-json-fast": "^3.0.2",
         "semver": "^7.3.8",
         "ssri": "^10.0.1",
    @@ -191,10 +191,10 @@
         "@npmcli/docs": "^1.0.0",
         "@npmcli/eslint-config": "^4.0.0",
         "@npmcli/fs": "^3.1.0",
    -    "@npmcli/git": "^4.0.1",
    +    "@npmcli/git": "^4.0.4",
         "@npmcli/mock-registry": "^1.0.0",
         "@npmcli/promise-spawn": "^6.0.2",
    -    "@npmcli/template-oss": "4.12.0",
    +    "@npmcli/template-oss": "4.12.1",
         "licensee": "^10.0.0",
         "nock": "^13.3.0",
         "npm-packlist": "^7.0.4",
    @@ -248,7 +248,7 @@
       },
       "templateOSS": {
         "//@npmcli/template-oss": "This file is partially managed by @npmcli/template-oss. Edits may be overwritten.",
    -    "version": "4.12.0",
    +    "version": "4.12.1",
         "content": "./scripts/template-oss/root.js"
       },
       "license": "Artistic-2.0",
    diff --git a/deps/npm/tap-snapshots/test/lib/commands/completion.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/completion.js.test.cjs
    index 3e7125bc33ba97..b21e378b1cfbe8 100644
    --- a/deps/npm/tap-snapshots/test/lib/commands/completion.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/commands/completion.js.test.cjs
    @@ -66,6 +66,7 @@ Array [
           fund
           get
           help
    +      help-search
           hook
           init
           install
    diff --git a/deps/npm/tap-snapshots/test/lib/commands/profile.js.test.cjs b/deps/npm/tap-snapshots/test/lib/commands/profile.js.test.cjs
    index 4959f7cdd2cc32..4530dbf95cec24 100644
    --- a/deps/npm/tap-snapshots/test/lib/commands/profile.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/commands/profile.js.test.cjs
    @@ -31,6 +31,19 @@ exports[`test/lib/commands/profile.js TAP profile get multiple args default outp
     foo	foo@github.com (verified)	https://github.com/npm
     `
     
    +exports[`test/lib/commands/profile.js TAP profile get no args --color > should output all profile info with color result 1`] = `
    +name: foo
    +email: foo@github.com (verified)
    +two-factor auth: auth-and-writes
    +fullname: Foo Bar
    +homepage: https://github.com
    +freenode: foobar
    +twitter: https://twitter.com/npmjs
    +github: https://github.com/npm
    +created: 2015-02-26T01:26:37.384Z
    +updated: 2020-08-12T16:19:35.326Z
    +`
    +
     exports[`test/lib/commands/profile.js TAP profile get no args --parseable > should output all profile info as parseable result 1`] = `
     tfa	auth-and-writes
     name	foo
    @@ -46,56 +59,56 @@ github	https://github.com/npm
     `
     
     exports[`test/lib/commands/profile.js TAP profile get no args default output > should output table with contents 1`] = `
    -name: foo
    -email: foo@github.com (verified)
    -two-factor auth: auth-and-writes
    -fullname: Foo Bar
    -homepage: https://github.com
    -freenode: foobar
    -twitter: https://twitter.com/npmjs
    -github: https://github.com/npm
    -created: 2015-02-26T01:26:37.384Z
    -updated: 2020-08-12T16:19:35.326Z
    +name: foo
    +email: foo@github.com (verified)
    +two-factor auth: auth-and-writes
    +fullname: Foo Bar
    +homepage: https://github.com
    +freenode: foobar
    +twitter: https://twitter.com/npmjs
    +github: https://github.com/npm
    +created: 2015-02-26T01:26:37.384Z
    +updated: 2020-08-12T16:19:35.326Z
     `
     
     exports[`test/lib/commands/profile.js TAP profile get no args no tfa enabled > should output expected profile values 1`] = `
    -name: foo
    -email: foo@github.com (verified)
    -two-factor auth: disabled
    -fullname: Foo Bar
    -homepage: https://github.com
    -freenode: foobar
    -twitter: https://twitter.com/npmjs
    -github: https://github.com/npm
    -created: 2015-02-26T01:26:37.384Z
    -updated: 2020-08-12T16:19:35.326Z
    +name: foo
    +email: foo@github.com (verified)
    +two-factor auth: disabled
    +fullname: Foo Bar
    +homepage: https://github.com
    +freenode: foobar
    +twitter: https://twitter.com/npmjs
    +github: https://github.com/npm
    +created: 2015-02-26T01:26:37.384Z
    +updated: 2020-08-12T16:19:35.326Z
     `
     
     exports[`test/lib/commands/profile.js TAP profile get no args profile has cidr_whitelist item > should output table with contents 1`] = `
    -name: foo
    -email: foo@github.com (verified)
    -two-factor auth: auth-and-writes
    -fullname: Foo Bar
    -homepage: https://github.com
    -freenode: foobar
    -twitter: https://twitter.com/npmjs
    -github: https://github.com/npm
    -created: 2015-02-26T01:26:37.384Z
    -updated: 2020-08-12T16:19:35.326Z
    -cidr_whitelist: 192.168.1.1
    +name: foo
    +email: foo@github.com (verified)
    +two-factor auth: auth-and-writes
    +fullname: Foo Bar
    +homepage: https://github.com
    +freenode: foobar
    +twitter: https://twitter.com/npmjs
    +github: https://github.com/npm
    +created: 2015-02-26T01:26:37.384Z
    +updated: 2020-08-12T16:19:35.326Z
    +cidr_whitelist: 192.168.1.1
     `
     
     exports[`test/lib/commands/profile.js TAP profile get no args unverified email > should output table with contents 1`] = `
    -name: foo
    -email: foo@github.com(unverified)
    -two-factor auth: auth-and-writes
    -fullname: Foo Bar
    -homepage: https://github.com
    -freenode: foobar
    -twitter: https://twitter.com/npmjs
    -github: https://github.com/npm
    -created: 2015-02-26T01:26:37.384Z
    -updated: 2020-08-12T16:19:35.326Z
    +name: foo
    +email: foo@github.com(unverified)
    +two-factor auth: auth-and-writes
    +fullname: Foo Bar
    +homepage: https://github.com
    +freenode: foobar
    +twitter: https://twitter.com/npmjs
    +github: https://github.com/npm
    +created: 2015-02-26T01:26:37.384Z
    +updated: 2020-08-12T16:19:35.326Z
     `
     
     exports[`test/lib/commands/profile.js TAP profile set   writable key --parseable > should output parseable set key success msg 1`] = `
    diff --git a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
    index 270d9b631ee55e..94b429988def4b 100644
    --- a/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/docs.js.test.cjs
    @@ -33,349 +33,6 @@ Configuration fields: npm help 7 config
     npm@{VERSION} {BASEDIR}
     `
     
    -exports[`test/lib/docs.js TAP command list > abbrevs 1`] = `
    -Object {
    -  "ac": "access",
    -  "acc": "access",
    -  "acce": "access",
    -  "acces": "access",
    -  "access": "access",
    -  "add": "add",
    -  "add-": "add-user",
    -  "add-u": "add-user",
    -  "add-us": "add-user",
    -  "add-use": "add-user",
    -  "add-user": "add-user",
    -  "addu": "adduser",
    -  "addus": "adduser",
    -  "adduse": "adduser",
    -  "adduser": "adduser",
    -  "aud": "audit",
    -  "audi": "audit",
    -  "audit": "audit",
    -  "aut": "author",
    -  "auth": "author",
    -  "autho": "author",
    -  "author": "author",
    -  "b": "bugs",
    -  "bu": "bugs",
    -  "bug": "bugs",
    -  "bugs": "bugs",
    -  "c": "c",
    -  "ca": "cache",
    -  "cac": "cache",
    -  "cach": "cache",
    -  "cache": "cache",
    -  "ci": "ci",
    -  "cit": "cit",
    -  "clean-install": "clean-install",
    -  "clean-install-": "clean-install-test",
    -  "clean-install-t": "clean-install-test",
    -  "clean-install-te": "clean-install-test",
    -  "clean-install-tes": "clean-install-test",
    -  "clean-install-test": "clean-install-test",
    -  "com": "completion",
    -  "comp": "completion",
    -  "compl": "completion",
    -  "comple": "completion",
    -  "complet": "completion",
    -  "completi": "completion",
    -  "completio": "completion",
    -  "completion": "completion",
    -  "con": "config",
    -  "conf": "config",
    -  "confi": "config",
    -  "config": "config",
    -  "cr": "create",
    -  "cre": "create",
    -  "crea": "create",
    -  "creat": "create",
    -  "create": "create",
    -  "dd": "ddp",
    -  "ddp": "ddp",
    -  "ded": "dedupe",
    -  "dedu": "dedupe",
    -  "dedup": "dedupe",
    -  "dedupe": "dedupe",
    -  "dep": "deprecate",
    -  "depr": "deprecate",
    -  "depre": "deprecate",
    -  "deprec": "deprecate",
    -  "depreca": "deprecate",
    -  "deprecat": "deprecate",
    -  "deprecate": "deprecate",
    -  "dif": "diff",
    -  "diff": "diff",
    -  "dist-tag": "dist-tag",
    -  "dist-tags": "dist-tags",
    -  "docs": "docs",
    -  "doct": "doctor",
    -  "docto": "doctor",
    -  "doctor": "doctor",
    -  "ed": "edit",
    -  "edi": "edit",
    -  "edit": "edit",
    -  "exe": "exec",
    -  "exec": "exec",
    -  "expla": "explain",
    -  "explai": "explain",
    -  "explain": "explain",
    -  "explo": "explore",
    -  "explor": "explore",
    -  "explore": "explore",
    -  "find": "find",
    -  "find-": "find-dupes",
    -  "find-d": "find-dupes",
    -  "find-du": "find-dupes",
    -  "find-dup": "find-dupes",
    -  "find-dupe": "find-dupes",
    -  "find-dupes": "find-dupes",
    -  "fu": "fund",
    -  "fun": "fund",
    -  "fund": "fund",
    -  "g": "get",
    -  "ge": "get",
    -  "get": "get",
    -  "he": "help",
    -  "hel": "help",
    -  "help": "help",
    -  "hl": "hlep",
    -  "hle": "hlep",
    -  "hlep": "hlep",
    -  "hom": "home",
    -  "home": "home",
    -  "hoo": "hook",
    -  "hook": "hook",
    -  "i": "i",
    -  "ic": "ic",
    -  "in": "in",
    -  "inf": "info",
    -  "info": "info",
    -  "ini": "init",
    -  "init": "init",
    -  "inn": "innit",
    -  "inni": "innit",
    -  "innit": "innit",
    -  "ins": "ins",
    -  "inst": "inst",
    -  "insta": "insta",
    -  "instal": "instal",
    -  "install": "install",
    -  "install-ci": "install-ci-test",
    -  "install-ci-": "install-ci-test",
    -  "install-ci-t": "install-ci-test",
    -  "install-ci-te": "install-ci-test",
    -  "install-ci-tes": "install-ci-test",
    -  "install-ci-test": "install-ci-test",
    -  "install-cl": "install-clean",
    -  "install-cle": "install-clean",
    -  "install-clea": "install-clean",
    -  "install-clean": "install-clean",
    -  "install-t": "install-test",
    -  "install-te": "install-test",
    -  "install-tes": "install-test",
    -  "install-test": "install-test",
    -  "isnt": "isnt",
    -  "isnta": "isnta",
    -  "isntal": "isntal",
    -  "isntall": "isntall",
    -  "isntall-": "isntall-clean",
    -  "isntall-c": "isntall-clean",
    -  "isntall-cl": "isntall-clean",
    -  "isntall-cle": "isntall-clean",
    -  "isntall-clea": "isntall-clean",
    -  "isntall-clean": "isntall-clean",
    -  "iss": "issues",
    -  "issu": "issues",
    -  "issue": "issues",
    -  "issues": "issues",
    -  "it": "it",
    -  "la": "la",
    -  "lin": "link",
    -  "link": "link",
    -  "lis": "list",
    -  "list": "list",
    -  "ll": "ll",
    -  "ln": "ln",
    -  "logi": "login",
    -  "login": "login",
    -  "logo": "logout",
    -  "logou": "logout",
    -  "logout": "logout",
    -  "ls": "ls",
    -  "og": "ogr",
    -  "ogr": "ogr",
    -  "or": "org",
    -  "org": "org",
    -  "ou": "outdated",
    -  "out": "outdated",
    -  "outd": "outdated",
    -  "outda": "outdated",
    -  "outdat": "outdated",
    -  "outdate": "outdated",
    -  "outdated": "outdated",
    -  "ow": "owner",
    -  "own": "owner",
    -  "owne": "owner",
    -  "owner": "owner",
    -  "pa": "pack",
    -  "pac": "pack",
    -  "pack": "pack",
    -  "pi": "ping",
    -  "pin": "ping",
    -  "ping": "ping",
    -  "pk": "pkg",
    -  "pkg": "pkg",
    -  "pre": "prefix",
    -  "pref": "prefix",
    -  "prefi": "prefix",
    -  "prefix": "prefix",
    -  "pro": "profile",
    -  "prof": "profile",
    -  "profi": "profile",
    -  "profil": "profile",
    -  "profile": "profile",
    -  "pru": "prune",
    -  "prun": "prune",
    -  "prune": "prune",
    -  "pu": "publish",
    -  "pub": "publish",
    -  "publ": "publish",
    -  "publi": "publish",
    -  "publis": "publish",
    -  "publish": "publish",
    -  "q": "query",
    -  "qu": "query",
    -  "que": "query",
    -  "quer": "query",
    -  "query": "query",
    -  "r": "r",
    -  "rb": "rb",
    -  "reb": "rebuild",
    -  "rebu": "rebuild",
    -  "rebui": "rebuild",
    -  "rebuil": "rebuild",
    -  "rebuild": "rebuild",
    -  "rem": "remove",
    -  "remo": "remove",
    -  "remov": "remove",
    -  "remove": "remove",
    -  "rep": "repo",
    -  "repo": "repo",
    -  "res": "restart",
    -  "rest": "restart",
    -  "resta": "restart",
    -  "restar": "restart",
    -  "restart": "restart",
    -  "rm": "rm",
    -  "ro": "root",
    -  "roo": "root",
    -  "root": "root",
    -  "rum": "rum",
    -  "run": "run",
    -  "run-": "run-script",
    -  "run-s": "run-script",
    -  "run-sc": "run-script",
    -  "run-scr": "run-script",
    -  "run-scri": "run-script",
    -  "run-scrip": "run-script",
    -  "run-script": "run-script",
    -  "s": "s",
    -  "se": "se",
    -  "sea": "search",
    -  "sear": "search",
    -  "searc": "search",
    -  "search": "search",
    -  "set": "set",
    -  "sho": "show",
    -  "show": "show",
    -  "shr": "shrinkwrap",
    -  "shri": "shrinkwrap",
    -  "shrin": "shrinkwrap",
    -  "shrink": "shrinkwrap",
    -  "shrinkw": "shrinkwrap",
    -  "shrinkwr": "shrinkwrap",
    -  "shrinkwra": "shrinkwrap",
    -  "shrinkwrap": "shrinkwrap",
    -  "si": "sit",
    -  "sit": "sit",
    -  "star": "star",
    -  "stars": "stars",
    -  "start": "start",
    -  "sto": "stop",
    -  "stop": "stop",
    -  "t": "t",
    -  "tea": "team",
    -  "team": "team",
    -  "tes": "test",
    -  "test": "test",
    -  "to": "token",
    -  "tok": "token",
    -  "toke": "token",
    -  "token": "token",
    -  "ts": "tst",
    -  "tst": "tst",
    -  "ud": "udpate",
    -  "udp": "udpate",
    -  "udpa": "udpate",
    -  "udpat": "udpate",
    -  "udpate": "udpate",
    -  "un": "un",
    -  "uni": "uninstall",
    -  "unin": "uninstall",
    -  "unins": "uninstall",
    -  "uninst": "uninstall",
    -  "uninsta": "uninstall",
    -  "uninstal": "uninstall",
    -  "uninstall": "uninstall",
    -  "unl": "unlink",
    -  "unli": "unlink",
    -  "unlin": "unlink",
    -  "unlink": "unlink",
    -  "unp": "unpublish",
    -  "unpu": "unpublish",
    -  "unpub": "unpublish",
    -  "unpubl": "unpublish",
    -  "unpubli": "unpublish",
    -  "unpublis": "unpublish",
    -  "unpublish": "unpublish",
    -  "uns": "unstar",
    -  "unst": "unstar",
    -  "unsta": "unstar",
    -  "unstar": "unstar",
    -  "up": "up",
    -  "upd": "update",
    -  "upda": "update",
    -  "updat": "update",
    -  "update": "update",
    -  "upg": "upgrade",
    -  "upgr": "upgrade",
    -  "upgra": "upgrade",
    -  "upgrad": "upgrade",
    -  "upgrade": "upgrade",
    -  "ur": "urn",
    -  "urn": "urn",
    -  "v": "v",
    -  "veri": "verison",
    -  "veris": "verison",
    -  "veriso": "verison",
    -  "verison": "verison",
    -  "vers": "version",
    -  "versi": "version",
    -  "versio": "version",
    -  "version": "version",
    -  "vi": "view",
    -  "vie": "view",
    -  "view": "view",
    -  "who": "whoami",
    -  "whoa": "whoami",
    -  "whoam": "whoami",
    -  "whoami": "whoami",
    -  "why": "why",
    -  "x": "x",
    -}
    -`
    -
     exports[`test/lib/docs.js TAP command list > aliases 1`] = `
     Object {
       "add": "install",
    @@ -437,77 +94,6 @@ Object {
     }
     `
     
    -exports[`test/lib/docs.js TAP command list > allCommands 1`] = `
    -Array [
    -  "access",
    -  "adduser",
    -  "audit",
    -  "bugs",
    -  "cache",
    -  "ci",
    -  "completion",
    -  "config",
    -  "dedupe",
    -  "deprecate",
    -  "diff",
    -  "dist-tag",
    -  "docs",
    -  "doctor",
    -  "edit",
    -  "exec",
    -  "explain",
    -  "explore",
    -  "find-dupes",
    -  "fund",
    -  "get",
    -  "help",
    -  "help-search",
    -  "hook",
    -  "init",
    -  "install",
    -  "install-ci-test",
    -  "install-test",
    -  "link",
    -  "ll",
    -  "login",
    -  "logout",
    -  "ls",
    -  "org",
    -  "outdated",
    -  "owner",
    -  "pack",
    -  "ping",
    -  "pkg",
    -  "prefix",
    -  "profile",
    -  "prune",
    -  "publish",
    -  "query",
    -  "rebuild",
    -  "repo",
    -  "restart",
    -  "root",
    -  "run-script",
    -  "search",
    -  "set",
    -  "shrinkwrap",
    -  "star",
    -  "stars",
    -  "start",
    -  "stop",
    -  "team",
    -  "test",
    -  "token",
    -  "uninstall",
    -  "unpublish",
    -  "unstar",
    -  "update",
    -  "version",
    -  "view",
    -  "whoami",
    -]
    -`
    -
     exports[`test/lib/docs.js TAP command list > commands 1`] = `
     Array [
       "access",
    @@ -532,6 +118,7 @@ Array [
       "fund",
       "get",
       "help",
    +  "help-search",
       "hook",
       "init",
       "install",
    @@ -578,12 +165,6 @@ Array [
     ]
     `
     
    -exports[`test/lib/docs.js TAP command list > plumbing 1`] = `
    -Array [
    -  "help-search",
    -]
    -`
    -
     exports[`test/lib/docs.js TAP config > all definitions 1`] = `
     #### \`_auth\`
     
    diff --git a/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs b/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs
    new file mode 100644
    index 00000000000000..7bebf9b78f2bb4
    --- /dev/null
    +++ b/deps/npm/tap-snapshots/test/lib/npm.js.test.cjs
    @@ -0,0 +1,450 @@
    +/* IMPORTANT
    + * This snapshot file is auto-generated, but designed for humans.
    + * It should be checked into source control and tracked carefully.
    + * Re-generate by setting TAP_SNAPSHOT=1 and running tests.
    + * Make sure to inspect the output below.  Do not ignore changes!
    + */
    +'use strict'
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 0 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser, audit, bugs, cache, ci, completion,
    +    config, dedupe, deprecate, diff, dist-tag, docs, doctor,
    +    edit, exec, explain, explore, find-dupes, fund, get, help,
    +    help-search, hook, init, install, install-ci-test,
    +    install-test, link, ll, login, logout, ls, org, outdated,
    +    owner, pack, ping, pkg, prefix, profile, prune, publish,
    +    query, rebuild, repo, restart, root, run-script, search,
    +    set, shrinkwrap, star, stars, start, stop, team, test,
    +    token, uninstall, unpublish, unstar, update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 1 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser,
    +    audit, bugs, cache, ci,
    +    completion, config,
    +    dedupe, deprecate, diff,
    +    dist-tag, docs, doctor,
    +    edit, exec, explain,
    +    explore, find-dupes,
    +    fund, get, help,
    +    help-search, hook, init,
    +    install,
    +    install-ci-test,
    +    install-test, link, ll,
    +    login, logout, ls, org,
    +    outdated, owner, pack,
    +    ping, pkg, prefix,
    +    profile, prune, publish,
    +    query, rebuild, repo,
    +    restart, root,
    +    run-script, search, set,
    +    shrinkwrap, star, stars,
    +    start, stop, team, test,
    +    token, uninstall,
    +    unpublish, unstar,
    +    update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 10 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser,
    +    audit, bugs, cache, ci,
    +    completion, config,
    +    dedupe, deprecate, diff,
    +    dist-tag, docs, doctor,
    +    edit, exec, explain,
    +    explore, find-dupes,
    +    fund, get, help,
    +    help-search, hook, init,
    +    install,
    +    install-ci-test,
    +    install-test, link, ll,
    +    login, logout, ls, org,
    +    outdated, owner, pack,
    +    ping, pkg, prefix,
    +    profile, prune, publish,
    +    query, rebuild, repo,
    +    restart, root,
    +    run-script, search, set,
    +    shrinkwrap, star, stars,
    +    start, stop, team, test,
    +    token, uninstall,
    +    unpublish, unstar,
    +    update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 100 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser, audit, bugs, cache, ci, completion,
    +    config, dedupe, deprecate, diff, dist-tag, docs, doctor,
    +    edit, exec, explain, explore, find-dupes, fund, get, help,
    +    help-search, hook, init, install, install-ci-test,
    +    install-test, link, ll, login, logout, ls, org, outdated,
    +    owner, pack, ping, pkg, prefix, profile, prune, publish,
    +    query, rebuild, repo, restart, root, run-script, search,
    +    set, shrinkwrap, star, stars, start, stop, team, test,
    +    token, uninstall, unpublish, unstar, update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 24 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser,
    +    audit, bugs, cache, ci,
    +    completion, config,
    +    dedupe, deprecate, diff,
    +    dist-tag, docs, doctor,
    +    edit, exec, explain,
    +    explore, find-dupes,
    +    fund, get, help,
    +    help-search, hook, init,
    +    install,
    +    install-ci-test,
    +    install-test, link, ll,
    +    login, logout, ls, org,
    +    outdated, owner, pack,
    +    ping, pkg, prefix,
    +    profile, prune, publish,
    +    query, rebuild, repo,
    +    restart, root,
    +    run-script, search, set,
    +    shrinkwrap, star, stars,
    +    start, stop, team, test,
    +    token, uninstall,
    +    unpublish, unstar,
    +    update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 40 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser,
    +    audit, bugs, cache, ci,
    +    completion, config,
    +    dedupe, deprecate, diff,
    +    dist-tag, docs, doctor,
    +    edit, exec, explain,
    +    explore, find-dupes,
    +    fund, get, help,
    +    help-search, hook, init,
    +    install,
    +    install-ci-test,
    +    install-test, link, ll,
    +    login, logout, ls, org,
    +    outdated, owner, pack,
    +    ping, pkg, prefix,
    +    profile, prune, publish,
    +    query, rebuild, repo,
    +    restart, root,
    +    run-script, search, set,
    +    shrinkwrap, star, stars,
    +    start, stop, team, test,
    +    token, uninstall,
    +    unpublish, unstar,
    +    update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 41 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser, audit,
    +    bugs, cache, ci,
    +    completion, config,
    +    dedupe, deprecate, diff,
    +    dist-tag, docs, doctor,
    +    edit, exec, explain,
    +    explore, find-dupes,
    +    fund, get, help,
    +    help-search, hook, init,
    +    install, install-ci-test,
    +    install-test, link, ll,
    +    login, logout, ls, org,
    +    outdated, owner, pack,
    +    ping, pkg, prefix,
    +    profile, prune, publish,
    +    query, rebuild, repo,
    +    restart, root,
    +    run-script, search, set,
    +    shrinkwrap, star, stars,
    +    start, stop, team, test,
    +    token, uninstall,
    +    unpublish, unstar,
    +    update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 75 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser, audit, bugs, cache, ci, completion,
    +    config, dedupe, deprecate, diff, dist-tag, docs, doctor,
    +    edit, exec, explain, explore, find-dupes, fund, get, help,
    +    help-search, hook, init, install, install-ci-test,
    +    install-test, link, ll, login, logout, ls, org, outdated,
    +    owner, pack, ping, pkg, prefix, profile, prune, publish,
    +    query, rebuild, repo, restart, root, run-script, search,
    +    set, shrinkwrap, star, stars, start, stop, team, test,
    +    token, uninstall, unpublish, unstar, update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 76 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser, audit, bugs, cache, ci, completion,
    +    config, dedupe, deprecate, diff, dist-tag, docs, doctor,
    +    edit, exec, explain, explore, find-dupes, fund, get, help,
    +    help-search, hook, init, install, install-ci-test,
    +    install-test, link, ll, login, logout, ls, org, outdated,
    +    owner, pack, ping, pkg, prefix, profile, prune, publish,
    +    query, rebuild, repo, restart, root, run-script, search,
    +    set, shrinkwrap, star, stars, start, stop, team, test,
    +    token, uninstall, unpublish, unstar, update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    +
    +exports[`test/lib/npm.js TAP usage set process.stdout.columns column width 90 > must match snapshot 1`] = `
    +npm 
    +
    +Usage:
    +
    +npm install        install all the dependencies in your project
    +npm install   add the  dependency to your project
    +npm test           run this project's tests
    +npm run       run the script named 
    +npm  -h   quick help on 
    +npm -l             display usage info for all commands
    +npm help     search for help on 
    +npm help npm       more involved overview
    +
    +All commands:
    +
    +    access, adduser, audit, bugs, cache, ci, completion,
    +    config, dedupe, deprecate, diff, dist-tag, docs, doctor,
    +    edit, exec, explain, explore, find-dupes, fund, get, help,
    +    help-search, hook, init, install, install-ci-test,
    +    install-test, link, ll, login, logout, ls, org, outdated,
    +    owner, pack, ping, pkg, prefix, profile, prune, publish,
    +    query, rebuild, repo, restart, root, run-script, search,
    +    set, shrinkwrap, star, stars, start, stop, team, test,
    +    token, uninstall, unpublish, unstar, update, version, view,
    +    whoami
    +
    +Specify configs in the ini-formatted file:
    +    {USERCONFIG}
    +or on the command line via: npm  --key=value
    +
    +More configuration info: npm help config
    +Configuration fields: npm help 7 config
    +
    +npm@{VERSION} {NPMROOT}
    +`
    diff --git a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
    index 5fe20969fce315..0ffcba239f52ff 100644
    --- a/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/utils/error-message.js.test.cjs
    @@ -241,17 +241,37 @@ Object {
         Array [
           "notsup",
           String(
    -        Valid OS:    !yours,mine
    -        Valid Arch:  x867,x5309
    -        Actual OS:   posix
    -        Actual Arch: x64
    +        Valid os:   !yours,mine
    +        Actual os:  posix
    +        Valid cpu:  x867,x5309
    +        Actual cpu: x64
           ),
         ],
       ],
       "summary": Array [
         Array [
           "notsup",
    -      "Unsupported platform for lodash@1.0.0: wanted {/"os/":/"!yours,mine/",/"arch/":/"x867,x5309/"} (current: {/"os/":/"posix/",/"arch/":/"x64/"})",
    +      "Unsupported platform for lodash@1.0.0: wanted {/"os/":/"!yours,mine/",/"cpu/":/"x867,x5309/"} (current: {/"os/":/"posix/",/"cpu/":/"x64/"})",
    +    ],
    +  ],
    +}
    +`
    +
    +exports[`test/lib/utils/error-message.js TAP bad platform omits keys with no required value > must match snapshot 1`] = `
    +Object {
    +  "detail": Array [
    +    Array [
    +      "notsup",
    +      String(
    +        Valid os:  !yours,mine
    +        Actual os: posix
    +      ),
    +    ],
    +  ],
    +  "summary": Array [
    +    Array [
    +      "notsup",
    +      "Unsupported platform for lodash@1.0.0: wanted {/"os/":/"!yours,mine/"} (current: {/"os/":/"posix/"})",
         ],
       ],
     }
    @@ -263,17 +283,17 @@ Object {
         Array [
           "notsup",
           String(
    -        Valid OS:    !yours
    -        Valid Arch:  x420
    -        Actual OS:   posix
    -        Actual Arch: x64
    +        Valid os:   !yours
    +        Actual os:  posix
    +        Valid cpu:  x420
    +        Actual cpu: x64
           ),
         ],
       ],
       "summary": Array [
         Array [
           "notsup",
    -      "Unsupported platform for lodash@1.0.0: wanted {/"os/":/"!yours/",/"arch/":/"x420/"} (current: {/"os/":/"posix/",/"arch/":/"x64/"})",
    +      "Unsupported platform for lodash@1.0.0: wanted {/"os/":/"!yours/",/"cpu/":/"x420/"} (current: {/"os/":/"posix/",/"cpu/":/"x64/"})",
         ],
       ],
     }
    diff --git a/deps/npm/tap-snapshots/test/lib/utils/exit-handler.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/exit-handler.js.test.cjs
    index 4c163e7df5593d..93711275392339 100644
    --- a/deps/npm/tap-snapshots/test/lib/utils/exit-handler.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/utils/exit-handler.js.test.cjs
    @@ -6,35 +6,33 @@
      */
     'use strict'
     exports[`test/lib/utils/exit-handler.js TAP handles unknown error with logs and debug file > debug file contents 1`] = `
    -0 timing npm:load:whichnode Completed in {TIME}ms
    -13 timing config:load Completed in {TIME}ms
    -14 timing npm:load:configload Completed in {TIME}ms
    -15 timing npm:load:mkdirpcache Completed in {TIME}ms
    -16 timing npm:load:mkdirplogs Completed in {TIME}ms
    -17 verbose title npm
    -18 verbose argv "--fetch-retries" "0" "--cache" "{CWD}/cache" "--loglevel" "notice"
    -19 timing npm:load:setTitle Completed in {TIME}ms
    -21 timing npm:load:display Completed in {TIME}ms
    -22 verbose logfile logs-max:10 dir:{CWD}/cache/_logs/{DATE}-
    -23 verbose logfile {CWD}/cache/_logs/{DATE}-debug-0.log
    -24 timing npm:load:logFile Completed in {TIME}ms
    -25 timing npm:load:timers Completed in {TIME}ms
    -26 timing npm:load:configScope Completed in {TIME}ms
    -27 timing npm:load Completed in {TIME}ms
    -28 silly logfile done cleaning log files
    -29 verbose stack Error: Unknown error
    -30 verbose cwd {CWD}/prefix
    -31 verbose Foo 1.0.0
    -32 verbose node v1.0.0
    -33 verbose npm  v1.0.0
    -34 error code ECODE
    -35 error ERR SUMMARY Unknown error
    -36 error ERR DETAIL Unknown error
    -37 verbose exit 1
    -38 timing npm Completed in {TIME}ms
    -39 verbose code 1
    -40 error A complete log of this run can be found in:
    -40 error     {CWD}/cache/_logs/{DATE}-debug-0.log
    +XX timing npm:load:whichnode Completed in {TIME}ms
    +XX timing config:load Completed in {TIME}ms
    +XX timing npm:load:configload Completed in {TIME}ms
    +XX timing npm:load:mkdirpcache Completed in {TIME}ms
    +XX timing npm:load:mkdirplogs Completed in {TIME}ms
    +XX verbose title npm
    +XX verbose argv "--fetch-retries" "0" "--cache" "{CWD}/cache" "--loglevel" "notice"
    +XX timing npm:load:setTitle Completed in {TIME}ms
    +XX timing npm:load:display Completed in {TIME}ms
    +XX verbose logfile logs-max:10 dir:{CWD}/cache/_logs/{DATE}-
    +XX verbose logfile {CWD}/cache/_logs/{DATE}-debug-0.log
    +XX timing npm:load:logFile Completed in {TIME}ms
    +XX timing npm:load:timers Completed in {TIME}ms
    +XX timing npm:load:configScope Completed in {TIME}ms
    +XX timing npm:load Completed in {TIME}ms
    +XX verbose stack Error: Unknown error
    +XX verbose cwd {CWD}/prefix
    +XX verbose Foo 1.0.0
    +XX verbose node v1.0.0
    +XX verbose npm  v1.0.0
    +XX error code ECODE
    +XX error ERR SUMMARY Unknown error
    +XX error ERR DETAIL Unknown error
    +XX verbose exit 1
    +XX timing npm Completed in {TIME}ms
    +XX verbose code 1
    +XX error A complete log of this run can be found in: {CWD}/cache/_logs/{DATE}-debug-0.log
     `
     
     exports[`test/lib/utils/exit-handler.js TAP handles unknown error with logs and debug file > logs 1`] = `
    @@ -53,7 +51,6 @@ timing npm:load:logFile Completed in {TIME}ms
     timing npm:load:timers Completed in {TIME}ms
     timing npm:load:configScope Completed in {TIME}ms
     timing npm:load Completed in {TIME}ms
    -silly logfile done cleaning log files
     verbose stack Error: Unknown error
     verbose cwd {CWD}/prefix
     verbose  Foo 1.0.0
    @@ -65,6 +62,5 @@ error ERR DETAIL Unknown error
     verbose exit 1
     timing npm Completed in {TIME}ms
     verbose code 1
    -error  A complete log of this run can be found in:
    -    {CWD}/cache/_logs/{DATE}-debug-0.log
    +error  A complete log of this run can be found in: {CWD}/cache/_logs/{DATE}-debug-0.log
     `
    diff --git a/deps/npm/tap-snapshots/test/lib/utils/update-notifier.js.test.cjs b/deps/npm/tap-snapshots/test/lib/utils/update-notifier.js.test.cjs
    index 157390997d7936..e5e9dd77569e00 100644
    --- a/deps/npm/tap-snapshots/test/lib/utils/update-notifier.js.test.cjs
    +++ b/deps/npm/tap-snapshots/test/lib/utils/update-notifier.js.test.cjs
    @@ -5,7 +5,7 @@
      * Make sure to inspect the output below.  Do not ignore changes!
      */
     'use strict'
    -exports[`test/lib/utils/update-notifier.js TAP notification situations major to current > color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 122.420.69 - color=always > must match snapshot 1`] = `
     
     New major version of npm available! 122.420.69 -> 123.420.69
     Changelog: https://github.com/npm/cli/releases/tag/v123.420.69
    @@ -13,7 +13,7 @@ Run npm install -g npm@123.420.69 to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations major to current > no color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 122.420.69 - color=false > must match snapshot 1`] = `
     
     New major version of npm available! 122.420.69 -> 123.420.69
     Changelog: 
    @@ -21,7 +21,7 @@ Run \`npm install -g npm@123.420.69\` to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations minor to current > color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.419.69 - color=always > must match snapshot 1`] = `
     
     New minor version of npm available! 123.419.69 -> 123.420.69
     Changelog: https://github.com/npm/cli/releases/tag/v123.420.69
    @@ -29,7 +29,7 @@ Run npm install -g npm@123.420.69 to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations minor to current > no color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.419.69 - color=false > must match snapshot 1`] = `
     
     New minor version of npm available! 123.419.69 -> 123.420.69
     Changelog: 
    @@ -37,66 +37,66 @@ Run \`npm install -g npm@123.420.69\` to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations minor to next version > color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.420.68 - color=always > must match snapshot 1`] = `
     
    -New minor version of npm available! 123.420.70 -> 123.421.70
    -Changelog: https://github.com/npm/cli/releases/tag/v123.421.70
    -Run npm install -g npm@123.421.70 to update!
    +New patch version of npm available! 123.420.68 -> 123.420.69
    +Changelog: https://github.com/npm/cli/releases/tag/v123.420.69
    +Run npm install -g npm@123.420.69 to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations minor to next version > no color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.420.68 - color=false > must match snapshot 1`] = `
     
    -New minor version of npm available! 123.420.70 -> 123.421.70
    -Changelog: 
    -Run \`npm install -g npm@123.421.70\` to update!
    +New patch version of npm available! 123.420.68 -> 123.420.69
    +Changelog: 
    +Run \`npm install -g npm@123.420.69\` to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations new beta available > color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.420.70 - color=always > must match snapshot 1`] = `
     
    -New prerelease version of npm available! 124.0.0-beta.0 -> 124.0.0-beta.99999
    -Changelog: https://github.com/npm/cli/releases/tag/v124.0.0-beta.99999
    -Run npm install -g npm@124.0.0-beta.99999 to update!
    +New minor version of npm available! 123.420.70 -> 123.421.70
    +Changelog: https://github.com/npm/cli/releases/tag/v123.421.70
    +Run npm install -g npm@123.421.70 to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations new beta available > no color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.420.70 - color=false > must match snapshot 1`] = `
     
    -New prerelease version of npm available! 124.0.0-beta.0 -> 124.0.0-beta.99999
    -Changelog: 
    -Run \`npm install -g npm@124.0.0-beta.99999\` to update!
    +New minor version of npm available! 123.420.70 -> 123.421.70
    +Changelog: 
    +Run \`npm install -g npm@123.421.70\` to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations patch to current > color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.421.69 - color=always > must match snapshot 1`] = `
     
    -New patch version of npm available! 123.420.68 -> 123.420.69
    -Changelog: https://github.com/npm/cli/releases/tag/v123.420.69
    -Run npm install -g npm@123.420.69 to update!
    +New patch version of npm available! 123.421.69 -> 123.421.70
    +Changelog: https://github.com/npm/cli/releases/tag/v123.421.70
    +Run npm install -g npm@123.421.70 to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations patch to current > no color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 123.421.69 - color=false > must match snapshot 1`] = `
     
    -New patch version of npm available! 123.420.68 -> 123.420.69
    -Changelog: 
    -Run \`npm install -g npm@123.420.69\` to update!
    +New patch version of npm available! 123.421.69 -> 123.421.70
    +Changelog: 
    +Run \`npm install -g npm@123.421.70\` to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations patch to next version > color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 124.0.0-beta.0 - color=always > must match snapshot 1`] = `
     
    -New patch version of npm available! 123.421.69 -> 123.421.70
    -Changelog: https://github.com/npm/cli/releases/tag/v123.421.70
    -Run npm install -g npm@123.421.70 to update!
    +New prerelease version of npm available! 124.0.0-beta.0 -> 124.0.0-beta.99999
    +Changelog: https://github.com/npm/cli/releases/tag/v124.0.0-beta.99999
    +Run npm install -g npm@124.0.0-beta.99999 to update!
     
     `
     
    -exports[`test/lib/utils/update-notifier.js TAP notification situations patch to next version > no color 1`] = `
    +exports[`test/lib/utils/update-notifier.js TAP notification situations 124.0.0-beta.0 - color=false > must match snapshot 1`] = `
     
    -New patch version of npm available! 123.421.69 -> 123.421.70
    -Changelog: 
    -Run \`npm install -g npm@123.421.70\` to update!
    +New prerelease version of npm available! 124.0.0-beta.0 -> 124.0.0-beta.99999
    +Changelog: 
    +Run \`npm install -g npm@124.0.0-beta.99999\` to update!
     
     `
    diff --git a/deps/npm/test/lib/commands/explain.js b/deps/npm/test/lib/commands/explain.js
    index 3262dfdce87af8..79c917a1cd4527 100644
    --- a/deps/npm/test/lib/commands/explain.js
    +++ b/deps/npm/test/lib/commands/explain.js
    @@ -7,7 +7,8 @@ const mockExplain = async (t, opts) => {
         mocks: {
           // keep the snapshots pared down a bit, since this has its own tests.
           '{LIB}/utils/explain-dep.js': {
    -        explainNode: (expl, depth, color) => {
    +        explainNode: (expl, depth, chalk) => {
    +          const color = chalk.level !== 0
               return `${expl.name}@${expl.version} depth=${depth} color=${color}`
             },
           },
    diff --git a/deps/npm/test/lib/commands/help.js b/deps/npm/test/lib/commands/help.js
    index d4e7a81f84a4cd..e38f1bbce24d46 100644
    --- a/deps/npm/test/lib/commands/help.js
    +++ b/deps/npm/test/lib/commands/help.js
    @@ -29,8 +29,8 @@ const genManPages = (obj) => {
     
     const mockHelp = async (t, {
       man = {
    -    1: ['whoami', 'install', 'star', 'unstar', 'uninstall', 'unpublish'].map(p => `npm-${p}`),
         5: ['npmrc', 'install', 'package-json'],
    +    1: ['whoami', 'install', 'star', 'unstar', 'uninstall', 'unpublish'].map(p => `npm-${p}`),
         7: ['disputes', 'config'],
       },
       browser = false,
    @@ -113,7 +113,7 @@ t.test('npm help whoami', async t => {
       const [spawnBin, spawnArgs] = getArgs()
       t.equal(spawnBin, 'man', 'calls man by default')
       t.equal(spawnArgs.length, 1)
    -  t.match(spawnArgs[0], /\/man\/man1\/npm-whoami\.1$/)
    +  t.match(spawnArgs[0], /npm-whoami\.1$/)
     })
     
     t.test('npm help 1 install', async t => {
    @@ -155,7 +155,7 @@ t.test('npm help package.json redirects to package-json', async t => {
       const [spawnBin, spawnArgs] = getArgs()
       t.equal(spawnBin, 'man', 'calls man by default')
       t.equal(spawnArgs.length, 1)
    -  t.match(spawnArgs[0], /\/man\/man5\/package-json\.5$/)
    +  t.match(spawnArgs[0], /package-json\.5$/)
     })
     
     t.test('npm help ?(un)star', async t => {
    @@ -168,7 +168,7 @@ t.test('npm help ?(un)star', async t => {
       t.equal(spawnBin, 'emacsclient', 'maps woman to emacs correctly')
       t.equal(spawnArgs.length, 2)
       t.match(spawnArgs[1], /^\(woman-find-file '/)
    -  t.match(spawnArgs[1], /\/man\/man1\/npm-star.1'\)$/)
    +  t.match(spawnArgs[1], /npm-star.1'\)$/)
     })
     
     t.test('npm help un*', async t => {
    @@ -179,15 +179,16 @@ t.test('npm help un*', async t => {
       const [spawnBin, spawnArgs] = getArgs()
       t.equal(spawnBin, 'man', 'calls man by default')
       t.equal(spawnArgs.length, 1)
    -  t.match(spawnArgs[0], /\/man\/man1\/npm-uninstall\.1$/)
    +  t.match(spawnArgs[0], /npm-uninstall\.1$/)
     })
     
    -t.test('npm help - prefers npm help pages', async t => {
    +t.test('npm help - prefers lowest numbered npm prefixed help pages', async t => {
       const { getArgs } = await mockHelp(t, {
         man: {
           6: ['npm-install'],
    -      1: ['install'],
    -      5: ['install', 'npm-install'],
    +      1: ['npm-install'],
    +      5: ['install'],
    +      7: ['npm-install'],
         },
         exec: ['install'],
       })
    @@ -195,15 +196,15 @@ t.test('npm help - prefers npm help pages', async t => {
       const [spawnBin, spawnArgs] = getArgs()
       t.equal(spawnBin, 'man', 'calls man by default')
       t.equal(spawnArgs.length, 1)
    -  t.match(spawnArgs[0], /\/man\/man5\/npm-install\.5$/)
    +  t.match(spawnArgs[0], /npm-install\.1$/)
     })
     
     t.test('npm help - works in the presence of strange man pages', async t => {
       const { getArgs } = await mockHelp(t, {
         man: {
    -      '6strange': ['config'],
    -      1: ['config'],
    -      '5ssl': ['config'],
    +      '1strange': ['config'],
    +      5: ['config'],
    +      '6ssl': ['config'],
         },
         exec: ['config'],
       })
    @@ -211,7 +212,7 @@ t.test('npm help - works in the presence of strange man pages', async t => {
       const [spawnBin, spawnArgs] = getArgs()
       t.equal(spawnBin, 'man', 'calls man by default')
       t.equal(spawnArgs.length, 1)
    -  t.match(spawnArgs[0], /\/man\/man1\/config\.1$/)
    +  t.match(spawnArgs[0], /config\.5$/)
     })
     
     t.test('rejects with code', async t => {
    diff --git a/deps/npm/test/lib/commands/profile.js b/deps/npm/test/lib/commands/profile.js
    index 00ccf2607524ad..1152acfdc5c468 100644
    --- a/deps/npm/test/lib/commands/profile.js
    +++ b/deps/npm/test/lib/commands/profile.js
    @@ -1,7 +1,7 @@
     const t = require('tap')
     const mockNpm = require('../../fixtures/mock-npm')
     
    -const mockProfile = async (t, { npmProfile, readUserInfo, qrcode, ...opts } = {}) => {
    +const mockProfile = async (t, { npmProfile, readUserInfo, qrcode, config, ...opts } = {}) => {
       const mocks = {
         'npm-profile': npmProfile || {
           async get () {},
    @@ -24,6 +24,10 @@ const mockProfile = async (t, { npmProfile, readUserInfo, qrcode, ...opts } = {}
     
       const mock = await mockNpm(t, {
         ...opts,
    +    config: {
    +      color: false,
    +      ...config,
    +    },
         mocks: {
           ...mocks,
           ...opts.mocks,
    @@ -95,6 +99,16 @@ t.test('profile get no args', async t => {
         t.matchSnapshot(result(), 'should output all profile info as parseable result')
       })
     
    +  t.test('--color', async t => {
    +    const { profile, result } = await mockProfile(t, {
    +      npmProfile: defaultNpmProfile,
    +      config: { color: 'always' },
    +    })
    +
    +    await profile.exec(['get'])
    +    t.matchSnapshot(result(), 'should output all profile info with color result')
    +  })
    +
       t.test('no tfa enabled', async t => {
         const npmProfile = {
           async get () {
    diff --git a/deps/npm/test/lib/commands/view.js b/deps/npm/test/lib/commands/view.js
    index c6a4bf8fb79f44..51bc130df24e5e 100644
    --- a/deps/npm/test/lib/commands/view.js
    +++ b/deps/npm/test/lib/commands/view.js
    @@ -270,6 +270,10 @@ const loadMockNpm = async function (t, opts = {}) {
           },
         },
         ...opts,
    +    config: {
    +      color: 'always',
    +      ...opts.config,
    +    },
       })
       return mockNpm
     }
    @@ -374,7 +378,7 @@ t.test('package in cwd', async t => {
     })
     
     t.test('specific field names', async t => {
    -  const { view, outputs } = await loadMockNpm(t)
    +  const { view, outputs } = await loadMockNpm(t, { config: { color: false } })
       t.afterEach(() => outputs.length = 0)
     
       t.test('readme', async t => {
    diff --git a/deps/npm/test/lib/docs.js b/deps/npm/test/lib/docs.js
    index e8a188b6ad8c48..b8a1a4fc600747 100644
    --- a/deps/npm/test/lib/docs.js
    +++ b/deps/npm/test/lib/docs.js
    @@ -66,12 +66,12 @@ t.test('usage', async t => {
       // are all in sync. eg, this will error if a command is removed but not its docs file
       t.strictSame(
         fsCommands.sort(localeCompare),
    -    cmdList.allCommands,
    +    cmdList.commands,
         'command list and fs are the same'
       )
       t.strictSame(
         allDocs.filter(f => !bareCommands.includes(f)).sort(localeCompare),
    -    cmdList.allCommands,
    +    cmdList.commands,
         'command list and docs files are the same'
       )
     
    diff --git a/deps/npm/test/lib/load-all-commands.js b/deps/npm/test/lib/load-all-commands.js
    index dd55560369310e..1742376a36e69d 100644
    --- a/deps/npm/test/lib/load-all-commands.js
    +++ b/deps/npm/test/lib/load-all-commands.js
    @@ -5,12 +5,12 @@
     const t = require('tap')
     const util = require('util')
     const { load: loadMockNpm } = require('../fixtures/mock-npm.js')
    -const { allCommands } = require('../../lib/utils/cmd-list.js')
    +const { commands } = require('../../lib/utils/cmd-list.js')
     
     const isAsyncFn = (v) => typeof v === 'function' && /^\[AsyncFunction:/.test(util.inspect(v))
     
     t.test('load each command', async t => {
    -  for (const cmd of allCommands) {
    +  for (const cmd of commands) {
         t.test(cmd, async t => {
           const { npm, outputs, cmd: impl } = await loadMockNpm(t, {
             command: cmd,
    diff --git a/deps/npm/test/lib/npm.js b/deps/npm/test/lib/npm.js
    index e6936b3e36d5f8..61b31be6200286 100644
    --- a/deps/npm/test/lib/npm.js
    +++ b/deps/npm/test/lib/npm.js
    @@ -561,6 +561,7 @@ t.test('aliases and typos', async t => {
       await t.resolves(npm.cmd('it'), { name: 'install-test' })
       await t.resolves(npm.cmd('installTe'), { name: 'install-test' })
       await t.resolves(npm.cmd('access'), { name: 'access' })
    +  await t.resolves(npm.cmd('auth'), { name: 'owner' })
     })
     
     t.test('explicit workspace rejection', async t => {
    @@ -706,40 +707,21 @@ t.test('usage', async t => {
       })
     
       t.test('set process.stdout.columns', async t => {
    -    const { npm } = await loadMockNpm(t)
    -
    -    const colUsage = async (cols) => {
    -      const usages = []
    -      for (const col of cols) {
    -        mockGlobals(t, { 'process.stdout.columns': col })
    +    const { npm } = await loadMockNpm(t, {
    +      config: { viewer: 'man' },
    +    })
    +    t.cleanSnapshot = str =>
    +      str.replace(npm.config.get('userconfig'), '{USERCONFIG}')
    +        .replace(npm.npmRoot, '{NPMROOT}')
    +        .replace(`npm@${npm.version}`, 'npm@{VERSION}')
    +
    +    const widths = [0, 1, 10, 24, 40, 41, 75, 76, 90, 100]
    +    for (const width of widths) {
    +      t.test(`column width ${width}`, async t => {
    +        mockGlobals(t, { 'process.stdout.columns': width })
             const usage = await npm.usage
    -        usages.push(usage)
    -      }
    -      return usages
    +        t.matchSnapshot(usage)
    +      })
         }
    -
    -    t.test('max size', async t => {
    -      const usages = await colUsage([0, 76, 90, 100])
    -      t.equal(usages.filter(Boolean).length, 4)
    -      t.equal(new Set([...usages]).size, 1)
    -    })
    -
    -    t.test('across max boundary', async t => {
    -      const usages = await colUsage([75, 76])
    -      t.equal(usages.filter(Boolean).length, 2)
    -      t.equal(new Set([...usages]).size, 2)
    -    })
    -
    -    t.test('min size', async t => {
    -      const usages = await colUsage([1, 10, 24, 40])
    -      t.equal(usages.filter(Boolean).length, 4)
    -      t.equal(new Set([...usages]).size, 1)
    -    })
    -
    -    t.test('different cols within min/max', async t => {
    -      const usages = await colUsage([40, 41])
    -      t.equal(usages.filter(Boolean).length, 2)
    -      t.equal(new Set([...usages]).size, 2)
    -    })
       })
     })
    diff --git a/deps/npm/test/lib/utils/display.js b/deps/npm/test/lib/utils/display.js
    index cfe0181e23e79f..7a99dcb679c09c 100644
    --- a/deps/npm/test/lib/utils/display.js
    +++ b/deps/npm/test/lib/utils/display.js
    @@ -58,7 +58,7 @@ t.test('can log', async (t) => {
     
       display.log('warn', 'ERESOLVE', 'hello', { some: 'object' })
       t.match(logs.warn, [['ERESOLVE', 'hello']])
    -  t.match(explains, [[{ some: 'object' }, false, 2]])
    +  t.match(explains, [[{ some: 'object' }, null, 2]])
     })
     
     t.test('handles log throwing', async (t) => {
    diff --git a/deps/npm/test/lib/utils/error-message.js b/deps/npm/test/lib/utils/error-message.js
    index 9d07693989ea84..37b3bc6afeddc1 100644
    --- a/deps/npm/test/lib/utils/error-message.js
    +++ b/deps/npm/test/lib/utils/error-message.js
    @@ -384,6 +384,27 @@ t.test('bad platform', async t => {
         t.matchSnapshot(errorMessage(er))
         t.end()
       })
    +  t.test('omits keys with no required value', t => {
    +    const er = Object.assign(new Error('a bad plat'), {
    +      pkgid: 'lodash@1.0.0',
    +      current: {
    +        os: 'posix',
    +        cpu: 'x64',
    +        libc: 'musl',
    +      },
    +      required: {
    +        os: ['!yours', 'mine'],
    +        libc: [], // empty arrays should also lead to a key being removed
    +        cpu: undefined, // XXX npm-install-checks sets unused keys to undefined
    +      },
    +      code: 'EBADPLATFORM',
    +    })
    +    const msg = errorMessage(er)
    +    t.matchSnapshot(msg)
    +    t.notMatch(msg, /Valid cpu/, 'omits cpu from message')
    +    t.notMatch(msg, /Valid libc/, 'omits libc from message')
    +    t.end()
    +  })
     })
     
     t.test('explain ERESOLVE errors', async t => {
    @@ -393,11 +414,14 @@ t.test('explain ERESOLVE errors', async t => {
         errorMocks: {
           '{LIB}/utils/explain-eresolve.js': {
             report: (...args) => {
    -          EXPLAIN_CALLED.push(args)
    +          EXPLAIN_CALLED.push(...args)
               return { explanation: 'explanation', file: 'report' }
             },
           },
         },
    +    config: {
    +      color: 'always',
    +    },
       })
     
       const er = Object.assign(new Error('could not resolve'), {
    @@ -405,5 +429,8 @@ t.test('explain ERESOLVE errors', async t => {
       })
     
       t.matchSnapshot(errorMessage(er))
    -  t.match(EXPLAIN_CALLED, [[er, false]])
    +  t.equal(EXPLAIN_CALLED.length, 3)
    +  t.match(EXPLAIN_CALLED, [er, Function, Function])
    +  t.not(EXPLAIN_CALLED[1].level, 0, 'color chalk level is not 0')
    +  t.equal(EXPLAIN_CALLED[2].level, 0, 'colorless chalk level is 0')
     })
    diff --git a/deps/npm/test/lib/utils/exit-handler.js b/deps/npm/test/lib/utils/exit-handler.js
    index 76d5fec4c099a8..969bd05a98ceaa 100644
    --- a/deps/npm/test/lib/utils/exit-handler.js
    +++ b/deps/npm/test/lib/utils/exit-handler.js
    @@ -27,6 +27,9 @@ t.formatSnapshot = (obj) => {
     t.cleanSnapshot = (path) => cleanDate(cleanCwd(path))
       // Config loading is dependent on env so strip those from snapshots
       .replace(/.*timing config:load:.*\n/gm, '')
    +  // logfile cleaning is not awaited so it races with the process.exit
    +  // in this test and can cause snapshot failures so we always remove them
    +  .replace(/.*silly logfile.*cleaning.*\n/gm, '')
       .replace(/(Completed in )\d+(ms)/g, '$1{TIME}$2')
       .replace(/(removing )\d+( files)/g, '$1${NUM}2')
     
    @@ -106,13 +109,11 @@ const mockExitHandler = async (t, { init, load, testdir, config, mocks, files }
         errors,
         npm,
         // Make it async to make testing ergonomics a little easier so we dont need
    -    // to t.plan() every test to make sure we get process.exit called. Also
    -    // introduce a small artificial delay so the logs are consistently finished
    -    // by the time the exit handler forces process.exit
    -    exitHandler: (...args) => new Promise(res => setTimeout(() => {
    +    // to t.plan() every test to make sure we get process.exit called.
    +    exitHandler: (...args) => new Promise(res => {
           process.once('exit', res)
           exitHandler(...args)
    -    }, 50)),
    +    }),
       }
     }
     
    @@ -134,30 +135,32 @@ t.test('handles unknown error with logs and debug file', async (t) => {
     
       await exitHandler(err('Unknown error', 'ECODE'))
     
    -  const debugContent = await debugFile()
    +  const fileLogs = await debugFile()
    +  const fileLines = fileLogs.split('\n')
    +
    +  const lineNumber = /^(\d+)\s/
    +  const lastLog = fileLines[fileLines.length - 1].match(lineNumber)[1]
     
       t.equal(process.exitCode, 1)
    +
       logs.forEach((logItem, i) => {
         const logLines = format(i, ...logItem).trim().split(os.EOL)
         logLines.forEach((line) => {
    -      t.match(debugContent.trim(), line, 'log appears in debug file')
    +      t.match(fileLogs.trim(), line, 'log appears in debug file')
         })
       })
     
    -  const lastLog = debugContent
    -    .split('\n')
    -    .reduce((__, l) => parseInt(l.match(/^(\d+)\s/)[1]))
    -  t.equal(logs.length, lastLog + 1)
    +  t.equal(logs.length, parseInt(lastLog) + 1)
       t.match(logs.error, [
         ['code', 'ECODE'],
         ['ERR SUMMARY', 'Unknown error'],
         ['ERR DETAIL', 'Unknown error'],
       ])
    -  t.match(debugContent, /\d+ error code ECODE/)
    -  t.match(debugContent, /\d+ error ERR SUMMARY Unknown error/)
    -  t.match(debugContent, /\d+ error ERR DETAIL Unknown error/)
    +  t.match(fileLogs, /\d+ error code ECODE/)
    +  t.match(fileLogs, /\d+ error ERR SUMMARY Unknown error/)
    +  t.match(fileLogs, /\d+ error ERR DETAIL Unknown error/)
       t.matchSnapshot(logs, 'logs')
    -  t.matchSnapshot(debugContent, 'debug file contents')
    +  t.matchSnapshot(fileLines.map(l => l.replace(lineNumber, 'XX ')), 'debug file contents')
     })
     
     t.test('exit handler never called - loglevel silent', async (t) => {
    diff --git a/deps/npm/test/lib/utils/explain-dep.js b/deps/npm/test/lib/utils/explain-dep.js
    index 514f28d125a0d7..e5389fd26d7967 100644
    --- a/deps/npm/test/lib/utils/explain-dep.js
    +++ b/deps/npm/test/lib/utils/explain-dep.js
    @@ -1,9 +1,12 @@
     const { resolve } = require('path')
     const t = require('tap')
    +const Chalk = require('chalk')
     const { explainNode, printNode } = require('../../../lib/utils/explain-dep.js')
     const { cleanCwd } = require('../../fixtures/clean-snapshot')
     
     const testdir = t.testdirName
    +const color = new Chalk.Instance({ level: Chalk.level })
    +const noColor = new Chalk.Instance({ level: 0 })
     
     t.cleanSnapshot = (str) => cleanCwd(str)
     
    @@ -250,10 +253,10 @@ cases.workspaces = {
     
     for (const [name, expl] of Object.entries(cases)) {
       t.test(name, t => {
    -    t.matchSnapshot(printNode(expl, true), 'print color')
    -    t.matchSnapshot(printNode(expl, false), 'print nocolor')
    -    t.matchSnapshot(explainNode(expl, Infinity, true), 'explain color deep')
    -    t.matchSnapshot(explainNode(expl, 2, false), 'explain nocolor shallow')
    +    t.matchSnapshot(printNode(expl, color), 'print color')
    +    t.matchSnapshot(printNode(expl, noColor), 'print nocolor')
    +    t.matchSnapshot(explainNode(expl, Infinity, color), 'explain color deep')
    +    t.matchSnapshot(explainNode(expl, 2, noColor), 'explain nocolor shallow')
         t.end()
       })
     }
    @@ -261,6 +264,6 @@ for (const [name, expl] of Object.entries(cases)) {
     // make sure that we show the last one if it's the only one that would
     // hit the ...
     cases.manyDeps.dependents.pop()
    -t.matchSnapshot(explainNode(cases.manyDeps, 2, false), 'ellipses test one')
    +t.matchSnapshot(explainNode(cases.manyDeps, 2, noColor), 'ellipses test one')
     cases.manyDeps.dependents.pop()
    -t.matchSnapshot(explainNode(cases.manyDeps, 2, false), 'ellipses test two')
    +t.matchSnapshot(explainNode(cases.manyDeps, 2, noColor), 'ellipses test two')
    diff --git a/deps/npm/test/lib/utils/explain-eresolve.js b/deps/npm/test/lib/utils/explain-eresolve.js
    index 2c1fed77899e9e..0f60556ef2ac98 100644
    --- a/deps/npm/test/lib/utils/explain-eresolve.js
    +++ b/deps/npm/test/lib/utils/explain-eresolve.js
    @@ -1,9 +1,11 @@
     const t = require('tap')
    -const { resolve } = require('path')
    +const Chalk = require('chalk')
     const { explain, report } = require('../../../lib/utils/explain-eresolve.js')
     
     const cases = require('../../fixtures/eresolve-explanations.js')
    -const { cleanDate } = require('../../fixtures/clean-snapshot.js')
    +
    +const color = new Chalk.Instance({ level: Chalk.level })
    +const noColor = new Chalk.Instance({ level: 0 })
     
     for (const [name, expl] of Object.entries(cases)) {
       // no sense storing the whole contents of each object in the snapshot
    @@ -11,22 +13,16 @@ for (const [name, expl] of Object.entries(cases)) {
       expl.toJSON = () => ({ name, json: true })
     
       t.test(name, t => {
    -    const dir = t.testdir()
    -    const fileReport = resolve(dir, 'eresolve-report.txt')
    -    const opts = { file: fileReport, date: new Date().toISOString() }
    -
    -    t.cleanSnapshot = str => cleanDate(str.split(fileReport).join('${REPORT}'))
    -
    -    const color = report(expl, true, opts)
    -    t.matchSnapshot(color.explanation, 'report with color')
    -    t.matchSnapshot(color.file, 'report from color')
    +    const colorReport = report(expl, color, noColor)
    +    t.matchSnapshot(colorReport.explanation, 'report with color')
    +    t.matchSnapshot(colorReport.file, 'report from color')
     
    -    const noColor = report(expl, false, opts)
    -    t.matchSnapshot(noColor.explanation, 'report with no color')
    -    t.equal(noColor.file, color.file, 'same report written for object')
    +    const noColorReport = report(expl, noColor, noColor)
    +    t.matchSnapshot(noColorReport.explanation, 'report with no color')
    +    t.equal(noColorReport.file, colorReport.file, 'same report written for object')
     
    -    t.matchSnapshot(explain(expl, true, 2), 'explain with color, depth of 2')
    -    t.matchSnapshot(explain(expl, false, 6), 'explain with no color, depth of 6')
    +    t.matchSnapshot(explain(expl, color, 2), 'explain with color, depth of 2')
    +    t.matchSnapshot(explain(expl, noColor, 6), 'explain with no color, depth of 6')
     
         t.end()
       })
    diff --git a/deps/npm/test/lib/utils/log-file.js b/deps/npm/test/lib/utils/log-file.js
    index e134fe8790bd53..fde17dee96b029 100644
    --- a/deps/npm/test/lib/utils/log-file.js
    +++ b/deps/npm/test/lib/utils/log-file.js
    @@ -255,6 +255,20 @@ t.test('glob error', async t => {
       t.match(last(logs).content, /error cleaning log files .* bad glob/)
     })
     
    +t.test('do not log cleaning errors when logging is disabled', async t => {
    +  const { readLogs } = await loadLogFile(t, {
    +    logsMax: 0,
    +    mocks: {
    +      glob: () => {
    +        throw new Error('should not be logged')
    +      },
    +    },
    +  })
    +
    +  const logs = await readLogs()
    +  t.equal(logs.length, 0)
    +})
    +
     t.test('cleans old style logs too', async t => {
       const logsMax = 5
       const oldLogs = 10
    diff --git a/deps/npm/test/lib/utils/update-notifier.js b/deps/npm/test/lib/utils/update-notifier.js
    index e7830e6d9d66e0..9c12433a2d1177 100644
    --- a/deps/npm/test/lib/utils/update-notifier.js
    +++ b/deps/npm/test/lib/utils/update-notifier.js
    @@ -1,10 +1,8 @@
     const t = require('tap')
    +const { basename } = require('path')
     const tmock = require('../../fixtures/tmock')
    +const mockNpm = require('../../fixtures/mock-npm')
     
    -let ciMock = {}
    -const flatOptions = { global: false, cache: t.testdir() + '/_cacache' }
    -
    -const MANIFEST_REQUEST = []
     const CURRENT_VERSION = '123.420.69'
     const CURRENT_MAJOR = '122.420.69'
     const CURRENT_MINOR = '123.419.69'
    @@ -15,238 +13,196 @@ const NEXT_PATCH = '123.421.69'
     const CURRENT_BETA = '124.0.0-beta.99999'
     const HAVE_BETA = '124.0.0-beta.0'
     
    -let PACOTE_ERROR = null
    -const pacote = {
    -  manifest: async (spec, opts) => {
    -    if (!spec.match(/^npm@/)) {
    -      process.exit(1)
    -    }
    -    MANIFEST_REQUEST.push(spec)
    -    if (PACOTE_ERROR) {
    -      throw PACOTE_ERROR
    -    }
    -
    -    return {
    -      version:
    -        spec === 'npm@latest'
    -          ? CURRENT_VERSION
    -          : /-/.test(spec)
    -            ? CURRENT_BETA
    -            : NEXT_VERSION,
    -    }
    -  },
    -}
    -
    -const defaultNpm = {
    -  flatOptions,
    -  version: CURRENT_VERSION,
    -  config: { get: k => k !== 'global' },
    -  command: 'view',
    -  argv: ['npm'],
    -}
    -
    -const { basename } = require('path')
    -
    -let STAT_ERROR = null
    -let STAT_MTIME = null
    -let WRITE_ERROR = null
    -const fs = {
    -  ...require('fs'),
    -  stat: (path, cb) => {
    -    if (basename(path) !== '_update-notifier-last-checked') {
    -      process.exit(1)
    -    }
    -    process.nextTick(() => cb(STAT_ERROR, { mtime: new Date(STAT_MTIME) }))
    -  },
    -  writeFile: (path, content, cb) => {
    -    if (content !== '') {
    -      process.exit(1)
    -    }
    -    if (basename(path) !== '_update-notifier-last-checked') {
    -      process.exit(1)
    -    }
    -    process.nextTick(() => cb(WRITE_ERROR))
    -  },
    +const runUpdateNotifier = async (t, {
    +  STAT_ERROR,
    +  WRITE_ERROR,
    +  PACOTE_ERROR,
    +  STAT_MTIME = 0,
    +  mocks: _mocks = {},
    +  command = 'view',
    +  version = CURRENT_VERSION,
    +  argv = [],
    +  ...config
    +} = {}) => {
    +  const mockFs = {
    +    ...require('fs/promises'),
    +    stat: async (path) => {
    +      if (basename(path) !== '_update-notifier-last-checked') {
    +        t.fail('no stat allowed for non upate notifier files')
    +      }
    +      if (STAT_ERROR) {
    +        throw STAT_ERROR
    +      }
    +      return { mtime: new Date(STAT_MTIME) }
    +    },
    +    writeFile: async (path, content) => {
    +      if (content !== '') {
    +        t.fail('no write file content allowed')
    +      }
    +      if (basename(path) !== '_update-notifier-last-checked') {
    +        t.fail('no writefile allowed for non upate notifier files')
    +      }
    +      if (WRITE_ERROR) {
    +        throw WRITE_ERROR
    +      }
    +    },
    +  }
    +
    +  const MANIFEST_REQUEST = []
    +  const mockPacote = {
    +    manifest: async (spec) => {
    +      if (!spec.match(/^npm@/)) {
    +        t.fail('no pacote manifest allowed for non npm packages')
    +      }
    +      MANIFEST_REQUEST.push(spec)
    +      if (PACOTE_ERROR) {
    +        throw PACOTE_ERROR
    +      }
    +      const manifestV = spec === 'npm@latest' ? CURRENT_VERSION
    +        : /-/.test(spec) ? CURRENT_BETA : NEXT_VERSION
    +      return { version: manifestV }
    +    },
    +  }
    +
    +  const mocks = {
    +    pacote: mockPacote,
    +    'fs/promises': mockFs,
    +    '{ROOT}/package.json': { version },
    +    'ci-info': { isCI: false, name: null },
    +    ..._mocks,
    +  }
    +
    +  const mock = await mockNpm(t, {
    +    command,
    +    mocks,
    +    config,
    +    argv,
    +  })
    +  const updateNotifier = tmock(t, '{LIB}/utils/update-notifier.js', mocks)
    +
    +  const result = await updateNotifier(mock.npm)
    +
    +  return {
    +    result,
    +    MANIFEST_REQUEST,
    +  }
     }
     
    -t.afterEach(() => {
    -  MANIFEST_REQUEST.length = 0
    -  STAT_ERROR = null
    -  PACOTE_ERROR = null
    -  STAT_MTIME = null
    -  WRITE_ERROR = null
    +t.test('does not notify by default', async t => {
    +  const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t)
    +  t.not(result)
    +  t.equal(MANIFEST_REQUEST.length, 1)
     })
     
    -const runUpdateNotifier = async ({ color = true, ...npmOptions } = {}) => {
    -  const _npm = { ...defaultNpm, ...npmOptions, logColor: color }
    -  return tmock(t, '{LIB}/utils/update-notifier.js', {
    -    'ci-info': ciMock,
    -    pacote,
    -    fs,
    -  })(_npm)
    -}
    -
     t.test('situations in which we do not notify', t => {
       t.test('nothing to do if notifier disabled', async t => {
    -    t.equal(
    -      await runUpdateNotifier({
    -        config: { get: k => k !== 'update-notifier' },
    -      }),
    -      null
    -    )
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, {
    +      'update-notifier': false,
    +    })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
       })
     
       t.test('do not suggest update if already updating', async t => {
    -    t.equal(
    -      await runUpdateNotifier({
    -        flatOptions: { ...flatOptions, global: true },
    -        command: 'install',
    -        argv: ['npm'],
    -      }),
    -      null
    -    )
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, {
    +      command: 'install',
    +      argv: ['npm'],
    +      global: true,
    +    })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
       })
     
       t.test('do not suggest update if already updating with spec', async t => {
    -    t.equal(
    -      await runUpdateNotifier({
    -        flatOptions: { ...flatOptions, global: true },
    -        command: 'install',
    -        argv: ['npm@latest'],
    -      }),
    -      null
    -    )
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, {
    +      command: 'install',
    +      argv: ['npm@latest'],
    +      global: true,
    +    })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
       })
     
       t.test('do not update if same as latest', async t => {
    -    t.equal(await runUpdateNotifier(), null)
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t)
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, ['npm@latest'], 'requested latest version')
       })
       t.test('check if stat errors (here for coverage)', async t => {
    -    STAT_ERROR = new Error('blorg')
    -    t.equal(await runUpdateNotifier(), null)
    +    const STAT_ERROR = new Error('blorg')
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { STAT_ERROR })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, ['npm@latest'], 'requested latest version')
       })
       t.test('ok if write errors (here for coverage)', async t => {
    -    WRITE_ERROR = new Error('grolb')
    -    t.equal(await runUpdateNotifier(), null)
    +    const WRITE_ERROR = new Error('grolb')
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { WRITE_ERROR })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, ['npm@latest'], 'requested latest version')
       })
       t.test('ignore pacote failures (here for coverage)', async t => {
    -    PACOTE_ERROR = new Error('pah-KO-tchay')
    -    t.equal(await runUpdateNotifier(), null)
    +    const PACOTE_ERROR = new Error('pah-KO-tchay')
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { PACOTE_ERROR })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, ['npm@latest'], 'requested latest version')
       })
       t.test('do not update if newer than latest, but same as next', async t => {
    -    t.equal(await runUpdateNotifier({ version: NEXT_VERSION }), null)
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { version: NEXT_VERSION })
    +    t.equal(result, null)
         const reqs = ['npm@latest', `npm@^${NEXT_VERSION}`]
         t.strictSame(MANIFEST_REQUEST, reqs, 'requested latest and next versions')
       })
       t.test('do not update if on the latest beta', async t => {
    -    t.equal(await runUpdateNotifier({ version: CURRENT_BETA }), null)
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { version: CURRENT_BETA })
    +    t.equal(result, null)
         const reqs = [`npm@^${CURRENT_BETA}`]
         t.strictSame(MANIFEST_REQUEST, reqs, 'requested latest and next versions')
       })
     
       t.test('do not update in CI', async t => {
    -    t.teardown(() => {
    -      ciMock = {}
    -    })
    -    ciMock = { isCI: true, name: 'something' }
    -    t.equal(await runUpdateNotifier(), null)
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { mocks: {
    +      'ci-info': { isCI: true, name: 'something' },
    +    } })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
       })
     
       t.test('only check weekly for GA releases', async t => {
         // One week (plus five minutes to account for test environment fuzziness)
    -    STAT_MTIME = Date.now() - 1000 * 60 * 60 * 24 * 7 + 1000 * 60 * 5
    -    t.equal(await runUpdateNotifier(), null)
    +    const STAT_MTIME = Date.now() - 1000 * 60 * 60 * 24 * 7 + 1000 * 60 * 5
    +    const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { STAT_MTIME })
    +    t.equal(result, null)
         t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
       })
     
       t.test('only check daily for betas', async t => {
         // One day (plus five minutes to account for test environment fuzziness)
    -    STAT_MTIME = Date.now() - 1000 * 60 * 60 * 24 + 1000 * 60 * 5
    -    t.equal(await runUpdateNotifier({ version: HAVE_BETA }), null)
    -    t.strictSame(MANIFEST_REQUEST, [], 'no requests for manifests')
    +    const STAT_MTIME = Date.now() - 1000 * 60 * 60 * 24 + 1000 * 60 * 5
    +    const res = await runUpdateNotifier(t, { STAT_MTIME, version: HAVE_BETA })
    +    t.equal(res.result, null)
    +    t.strictSame(res.MANIFEST_REQUEST, [], 'no requests for manifests')
       })
     
       t.end()
     })
     
    -t.test('notification situations', t => {
    -  t.test('new beta available', async t => {
    -    const version = HAVE_BETA
    -    t.matchSnapshot(await runUpdateNotifier({ version }), 'color')
    -    t.matchSnapshot(
    -      await runUpdateNotifier({ version, color: false }),
    -      'no color'
    -    )
    -    t.strictSame(MANIFEST_REQUEST, [`npm@^${version}`, `npm@^${version}`])
    -  })
    -
    -  t.test('patch to next version', async t => {
    -    const version = NEXT_PATCH
    -    t.matchSnapshot(await runUpdateNotifier({ version }), 'color')
    -    t.matchSnapshot(
    -      await runUpdateNotifier({ version, color: false }),
    -      'no color'
    -    )
    -    t.strictSame(MANIFEST_REQUEST, [
    -      'npm@latest',
    -      `npm@^${version}`,
    -      'npm@latest',
    -      `npm@^${version}`,
    -    ])
    -  })
    -
    -  t.test('minor to next version', async t => {
    -    const version = NEXT_MINOR
    -    t.matchSnapshot(await runUpdateNotifier({ version }), 'color')
    -    t.matchSnapshot(
    -      await runUpdateNotifier({ version, color: false }),
    -      'no color'
    -    )
    -    t.strictSame(MANIFEST_REQUEST, [
    -      'npm@latest',
    -      `npm@^${version}`,
    -      'npm@latest',
    -      `npm@^${version}`,
    -    ])
    -  })
    -
    -  t.test('patch to current', async t => {
    -    const version = CURRENT_PATCH
    -    t.matchSnapshot(await runUpdateNotifier({ version }), 'color')
    -    t.matchSnapshot(
    -      await runUpdateNotifier({ version, color: false }),
    -      'no color'
    -    )
    -    t.strictSame(MANIFEST_REQUEST, ['npm@latest', 'npm@latest'])
    -  })
    -
    -  t.test('minor to current', async t => {
    -    const version = CURRENT_MINOR
    -    t.matchSnapshot(await runUpdateNotifier({ version }), 'color')
    -    t.matchSnapshot(
    -      await runUpdateNotifier({ version, color: false }),
    -      'no color'
    -    )
    -    t.strictSame(MANIFEST_REQUEST, ['npm@latest', 'npm@latest'])
    -  })
    -
    -  t.test('major to current', async t => {
    -    const version = CURRENT_MAJOR
    -    t.matchSnapshot(await runUpdateNotifier({ version }), 'color')
    -    t.matchSnapshot(
    -      await runUpdateNotifier({ version, color: false }),
    -      'no color'
    -    )
    -    t.strictSame(MANIFEST_REQUEST, ['npm@latest', 'npm@latest'])
    -  })
    -
    -  t.end()
    +t.test('notification situations', async t => {
    +  const cases = {
    +    [HAVE_BETA]: [`^{V}`],
    +    [NEXT_PATCH]: [`latest`, `^{V}`],
    +    [NEXT_MINOR]: [`latest`, `^{V}`],
    +    [CURRENT_PATCH]: ['latest'],
    +    [CURRENT_MINOR]: ['latest'],
    +    [CURRENT_MAJOR]: ['latest'],
    +  }
    +
    +  for (const [version, reqs] of Object.entries(cases)) {
    +    for (const color of [false, 'always']) {
    +      await t.test(`${version} - color=${color}`, async t => {
    +        const { result, MANIFEST_REQUEST } = await runUpdateNotifier(t, { version, color })
    +        t.matchSnapshot(result)
    +        t.strictSame(MANIFEST_REQUEST, reqs.map(r => `npm@${r.replace('{V}', version)}`))
    +      })
    +    }
    +  }
     })
    
    From a4ae11c7db60d735a099143702748bda64f3c26c Mon Sep 17 00:00:00 2001
    From: "Node.js GitHub Bot" 
    Date: Fri, 31 Mar 2023 14:55:43 +0100
    Subject: [PATCH 086/131] tools: update eslint to 8.37.0
    
    PR-URL: https://github.com/nodejs/node/pull/47333
    Reviewed-By: Mohammed Keyvanzadeh 
    Reviewed-By: Moshe Atlow 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Rich Trott 
    ---
     .../eslint/lib/config/default-config.js       |    5 +-
     .../eslint/lib/config/flat-config-array.js    |   23 +-
     .../eslint/lib/config/flat-config-schema.js   |   22 +-
     .../node_modules/eslint/lib/linter/linter.js  |   35 +-
     .../lib/rule-tester/flat-rule-tester.js       |    2 +-
     .../eslint/lib/rule-tester/rule-tester.js     |    2 +-
     .../eslint/lib/rules/camelcase.js             |    5 +-
     .../eslint/lib/rules/consistent-this.js       |    6 +-
     .../eslint/lib/rules/global-require.js        |    4 +-
     .../eslint/lib/rules/handle-callback-err.js   |    3 +-
     .../eslint/lib/rules/id-blacklist.js          |    5 +-
     .../eslint/lib/rules/id-denylist.js           |    5 +-
     .../node_modules/eslint/lib/rules/id-match.js |    5 +-
     .../lib/rules/logical-assignment-operators.js |    6 +-
     .../node_modules/eslint/lib/rules/no-alert.js |    4 +-
     .../eslint/lib/rules/no-catch-shadow.js       |    4 +-
     .../eslint/lib/rules/no-console.js            |    5 +-
     .../rules/no-constant-binary-expression.js    |    6 +-
     .../eslint/lib/rules/no-constant-condition.js |    5 +-
     .../eslint/lib/rules/no-else-return.js        |   25 +-
     .../node_modules/eslint/lib/rules/no-eval.js  |    8 +-
     .../eslint/lib/rules/no-extend-native.js      |    5 +-
     .../eslint/lib/rules/no-global-assign.js      |    5 +-
     .../eslint/lib/rules/no-implicit-globals.js   |    5 +-
     .../eslint/lib/rules/no-implied-eval.js       |    7 +-
     .../eslint/lib/rules/no-import-assign.js      |    4 +-
     .../eslint/lib/rules/no-invalid-this.js       |    4 +-
     .../eslint/lib/rules/no-label-var.js          |    3 +-
     .../eslint/lib/rules/no-lone-blocks.js        |    5 +-
     .../eslint/lib/rules/no-loop-func.js          |    4 +-
     .../rules/no-misleading-character-class.js    |   51 +-
     .../eslint/lib/rules/no-native-reassign.js    |    5 +-
     .../eslint/lib/rules/no-new-func.js           |   13 +-
     .../lib/rules/no-new-native-nonconstructor.js |   14 +-
     .../eslint/lib/rules/no-new-object.js         |    5 +-
     .../eslint/lib/rules/no-new-symbol.js         |   14 +-
     .../eslint/lib/rules/no-obj-calls.js          |   12 +-
     .../lib/rules/no-promise-executor-return.js   |    3 +-
     .../eslint/lib/rules/no-redeclare.js          |    6 +-
     .../eslint/lib/rules/no-regex-spaces.js       |    4 +-
     .../eslint/lib/rules/no-restricted-globals.js |    6 +-
     .../eslint/lib/rules/no-setter-return.js      |    3 +-
     .../eslint/lib/rules/no-shadow.js             |    5 +-
     .../eslint/lib/rules/no-undef-init.js         |    2 +-
     .../node_modules/eslint/lib/rules/no-undef.js |    5 +-
     .../eslint/lib/rules/no-undefined.js          |    6 +-
     .../lib/rules/no-unmodified-loop-condition.js |    4 +-
     .../eslint/lib/rules/no-unused-vars.js        |    2 +-
     .../eslint/lib/rules/no-use-before-define.js  |    5 +-
     .../lib/rules/no-useless-backreference.js     |   12 +-
     .../eslint/lib/rules/object-shorthand.js      |    5 +-
     .../eslint/lib/rules/prefer-arrow-callback.js |    2 +-
     .../rules/prefer-exponentiation-operator.js   |    8 +-
     .../lib/rules/prefer-named-capture-group.js   |   12 +-
     .../eslint/lib/rules/prefer-object-has-own.js |    6 +-
     .../eslint/lib/rules/prefer-object-spread.js  |   22 +-
     .../eslint/lib/rules/prefer-regex-literals.js |   49 +-
     .../eslint/lib/rules/prefer-rest-params.js    |    7 +-
     tools/node_modules/eslint/lib/rules/radix.js  |   22 +-
     .../lib/rules/require-atomic-updates.js       |    4 +-
     .../lib/rules/require-unicode-regexp.js       |   68 +-
     .../eslint/lib/rules/symbol-description.js    |   12 +-
     .../lib/rules/utils/regular-expressions.js    |   42 +
     .../eslint/lib/rules/valid-typeof.js          |    6 +-
     .../eslint/lib/source-code/source-code.js     |   51 +
     .../lib/source-code/token-store/utils.js      |   18 +-
     .../core/lib/config/files/configuration.js    |    7 -
     .../lib/config/files/import-meta-resolve.js   |    7 -
     .../core/lib/config/files/module-types.js     |    7 -
     .../@babel/core/lib/config/files/plugins.js   |    7 -
     .../@babel/core/lib/config/index.js           |    9 +-
     .../node_modules/@babel/core/lib/index.js     |    9 +-
     .../@babel/core/lib/transform-file.js         |    2 +-
     .../core/lib/transformation/plugin-pass.js    |    2 +-
     .../node_modules/@babel/core/package.json     |   14 +-
     .../eslint-parser/lib/analyze-scope.cjs       |   84 -
     .../@babel/eslint-parser/lib/client.cjs       |   48 -
     .../eslint-parser/lib/configuration.cjs       |   15 +-
     .../eslint-parser/lib/convert/convertAST.cjs  |   30 -
     .../lib/convert/convertComments.cjs           |    1 -
     .../lib/convert/convertTokens.cjs             |   28 +-
     .../eslint-parser/lib/convert/index.cjs       |    5 -
     .../eslint-parser/lib/experimental-worker.cjs |    7 -
     .../@babel/eslint-parser/lib/index.cjs        |   10 +-
     .../@babel/eslint-parser/lib/parse.cjs        |   11 +-
     .../eslint-parser/lib/worker/ast-info.cjs     |    6 -
     .../eslint-parser/lib/worker/babel-core.cjs   |    1 -
     .../lib/worker/configuration.cjs              |   17 -
     .../worker/extract-parser-options-plugin.cjs  |    1 -
     .../lib/worker/handle-message.cjs             |   10 -
     .../@babel/eslint-parser/lib/worker/index.cjs |    7 -
     .../eslint-parser/lib/worker/maybeParse.cjs   |   10 -
     .../@babel/eslint-parser/package.json         |    4 +-
     .../@babel/generator/lib/buffer.js            |   10 +-
     .../@babel/generator/lib/generators/types.js  |    6 +-
     .../@babel/generator/lib/index.js             |    4 +-
     .../@babel/generator/lib/printer.js           |   15 +-
     .../@babel/generator/package.json             |    6 +-
     .../node_modules/@babel/parser/lib/index.js   | 2139 ++++++++---------
     .../node_modules/@babel/parser/package.json   |    2 +-
     .../node_modules/@babel/traverse/lib/index.js |    3 +-
     .../@babel/traverse/lib/path/context.js       |    6 +-
     .../@babel/traverse/lib/path/evaluation.js    |   52 +-
     .../@babel/traverse/lib/scope/index.js        |    4 +-
     .../node_modules/@babel/traverse/package.json |    8 +-
     .../@babel/types/lib/definitions/utils.js     |    2 +-
     .../node_modules/@babel/types/lib/index.js    |   12 -
     .../types/lib/utils/deprecationWarning.js     |   20 +-
     .../node_modules/@babel/types/package.json    |    6 +-
     .../@es-joy/jsdoccomment/package.json         |    4 +-
     .../@eslint-community/eslint-utils/index.js   |  114 +-
     .../@eslint-community/eslint-utils/index.mjs  |  114 +-
     .../eslint-utils/package.json                 |    2 +-
     .../@eslint-community/regexpp/index.js        |   13 +-
     .../@eslint-community/regexpp/index.mjs       |   13 +-
     .../@eslint-community/regexpp/package.json    |    6 +-
     .../@eslint/eslintrc/package.json             |    4 +-
     .../node_modules/@eslint/js/package.json      |    2 +-
     .../node_modules/@types/mdast/package.json    |    6 +-
     .../node_modules/caniuse-lite/data/agents.js  |    2 +-
     .../caniuse-lite/data/browserVersions.js      |    2 +-
     .../caniuse-lite/data/features/aac.js         |    2 +-
     .../data/features/abortcontroller.js          |    2 +-
     .../caniuse-lite/data/features/ac3-ec3.js     |    2 +-
     .../data/features/accelerometer.js            |    2 +-
     .../data/features/addeventlistener.js         |    2 +-
     .../data/features/alternate-stylesheet.js     |    2 +-
     .../data/features/ambient-light.js            |    2 +-
     .../caniuse-lite/data/features/apng.js        |    2 +-
     .../data/features/array-find-index.js         |    2 +-
     .../caniuse-lite/data/features/array-find.js  |    2 +-
     .../caniuse-lite/data/features/array-flat.js  |    2 +-
     .../data/features/array-includes.js           |    2 +-
     .../data/features/arrow-functions.js          |    2 +-
     .../caniuse-lite/data/features/asmjs.js       |    2 +-
     .../data/features/async-clipboard.js          |    2 +-
     .../data/features/async-functions.js          |    2 +-
     .../caniuse-lite/data/features/atob-btoa.js   |    2 +-
     .../caniuse-lite/data/features/audio-api.js   |    2 +-
     .../caniuse-lite/data/features/audio.js       |    2 +-
     .../caniuse-lite/data/features/audiotracks.js |    2 +-
     .../caniuse-lite/data/features/autofocus.js   |    2 +-
     .../caniuse-lite/data/features/auxclick.js    |    2 +-
     .../caniuse-lite/data/features/av1.js         |    2 +-
     .../caniuse-lite/data/features/avif.js        |    2 +-
     .../data/features/background-attachment.js    |    2 +-
     .../data/features/background-clip-text.js     |    2 +-
     .../data/features/background-img-opts.js      |    2 +-
     .../data/features/background-position-x-y.js  |    2 +-
     .../features/background-repeat-round-space.js |    2 +-
     .../data/features/background-sync.js          |    2 +-
     .../data/features/battery-status.js           |    2 +-
     .../caniuse-lite/data/features/beacon.js      |    2 +-
     .../data/features/beforeafterprint.js         |    2 +-
     .../caniuse-lite/data/features/bigint.js      |    2 +-
     .../caniuse-lite/data/features/blobbuilder.js |    2 +-
     .../caniuse-lite/data/features/bloburls.js    |    2 +-
     .../data/features/border-image.js             |    2 +-
     .../data/features/border-radius.js            |    2 +-
     .../data/features/broadcastchannel.js         |    2 +-
     .../caniuse-lite/data/features/brotli.js      |    2 +-
     .../caniuse-lite/data/features/calc.js        |    2 +-
     .../data/features/canvas-blending.js          |    2 +-
     .../caniuse-lite/data/features/canvas-text.js |    2 +-
     .../caniuse-lite/data/features/canvas.js      |    2 +-
     .../caniuse-lite/data/features/ch-unit.js     |    2 +-
     .../data/features/chacha20-poly1305.js        |    2 +-
     .../data/features/channel-messaging.js        |    2 +-
     .../data/features/childnode-remove.js         |    2 +-
     .../caniuse-lite/data/features/classlist.js   |    2 +-
     .../client-hints-dpr-width-viewport.js        |    2 +-
     .../caniuse-lite/data/features/clipboard.js   |    2 +-
     .../caniuse-lite/data/features/colr-v1.js     |    2 +-
     .../caniuse-lite/data/features/colr.js        |    2 +-
     .../data/features/comparedocumentposition.js  |    2 +-
     .../data/features/console-basic.js            |    2 +-
     .../data/features/console-time.js             |    2 +-
     .../caniuse-lite/data/features/const.js       |    2 +-
     .../data/features/constraint-validation.js    |    2 +-
     .../data/features/contenteditable.js          |    2 +-
     .../data/features/contentsecuritypolicy.js    |    2 +-
     .../data/features/contentsecuritypolicy2.js   |    2 +-
     .../data/features/cookie-store-api.js         |    2 +-
     .../caniuse-lite/data/features/cors.js        |    2 +-
     .../data/features/createimagebitmap.js        |    2 +-
     .../data/features/credential-management.js    |    2 +-
     .../data/features/cryptography.js             |    2 +-
     .../caniuse-lite/data/features/css-all.js     |    2 +-
     .../data/features/css-animation.js            |    2 +-
     .../data/features/css-any-link.js             |    2 +-
     .../data/features/css-appearance.js           |    2 +-
     .../data/features/css-at-counter-style.js     |    2 +-
     .../data/features/css-autofill.js             |    2 +-
     .../data/features/css-backdrop-filter.js      |    2 +-
     .../data/features/css-background-offsets.js   |    2 +-
     .../data/features/css-backgroundblendmode.js  |    2 +-
     .../data/features/css-boxdecorationbreak.js   |    2 +-
     .../data/features/css-boxshadow.js            |    2 +-
     .../caniuse-lite/data/features/css-canvas.js  |    2 +-
     .../data/features/css-caret-color.js          |    2 +-
     .../data/features/css-cascade-layers.js       |    2 +-
     .../data/features/css-case-insensitive.js     |    2 +-
     .../data/features/css-clip-path.js            |    2 +-
     .../data/features/css-color-adjust.js         |    2 +-
     .../data/features/css-color-function.js       |    2 +-
     .../data/features/css-conic-gradients.js      |    2 +-
     .../features/css-container-queries-style.js   |    2 +-
     .../data/features/css-container-queries.js    |    2 +-
     .../features/css-container-query-units.js     |    2 +-
     .../data/features/css-containment.js          |    2 +-
     .../data/features/css-content-visibility.js   |    2 +-
     .../data/features/css-counters.js             |    2 +-
     .../data/features/css-crisp-edges.js          |    2 +-
     .../data/features/css-cross-fade.js           |    2 +-
     .../data/features/css-default-pseudo.js       |    2 +-
     .../data/features/css-descendant-gtgt.js      |    2 +-
     .../data/features/css-deviceadaptation.js     |    2 +-
     .../data/features/css-dir-pseudo.js           |    2 +-
     .../data/features/css-display-contents.js     |    2 +-
     .../data/features/css-element-function.js     |    2 +-
     .../data/features/css-env-function.js         |    2 +-
     .../data/features/css-exclusions.js           |    2 +-
     .../data/features/css-featurequeries.js       |    2 +-
     .../data/features/css-file-selector-button.js |    2 +-
     .../data/features/css-filter-function.js      |    2 +-
     .../caniuse-lite/data/features/css-filters.js |    2 +-
     .../data/features/css-first-letter.js         |    2 +-
     .../data/features/css-first-line.js           |    2 +-
     .../caniuse-lite/data/features/css-fixed.js   |    2 +-
     .../data/features/css-focus-visible.js        |    2 +-
     .../data/features/css-focus-within.js         |    2 +-
     .../data/features/css-font-palette.js         |    2 +-
     .../features/css-font-rendering-controls.js   |    2 +-
     .../data/features/css-font-stretch.js         |    2 +-
     .../data/features/css-gencontent.js           |    2 +-
     .../data/features/css-gradients.js            |    2 +-
     .../data/features/css-grid-animation.js       |    2 +-
     .../caniuse-lite/data/features/css-grid.js    |    2 +-
     .../data/features/css-hanging-punctuation.js  |    2 +-
     .../caniuse-lite/data/features/css-has.js     |    2 +-
     .../caniuse-lite/data/features/css-hyphens.js |    2 +-
     .../data/features/css-image-orientation.js    |    2 +-
     .../data/features/css-image-set.js            |    2 +-
     .../data/features/css-in-out-of-range.js      |    2 +-
     .../data/features/css-indeterminate-pseudo.js |    2 +-
     .../data/features/css-initial-letter.js       |    2 +-
     .../data/features/css-initial-value.js        |    2 +-
     .../caniuse-lite/data/features/css-lch-lab.js |    2 +-
     .../data/features/css-letter-spacing.js       |    2 +-
     .../data/features/css-line-clamp.js           |    2 +-
     .../data/features/css-logical-props.js        |    2 +-
     .../data/features/css-marker-pseudo.js        |    2 +-
     .../caniuse-lite/data/features/css-masks.js   |    2 +-
     .../data/features/css-matches-pseudo.js       |    2 +-
     .../data/features/css-math-functions.js       |    2 +-
     .../data/features/css-media-interaction.js    |    2 +-
     .../data/features/css-media-range-syntax.js   |    2 +-
     .../data/features/css-media-resolution.js     |    2 +-
     .../data/features/css-media-scripting.js      |    2 +-
     .../data/features/css-mediaqueries.js         |    2 +-
     .../data/features/css-mixblendmode.js         |    2 +-
     .../data/features/css-motion-paths.js         |    2 +-
     .../data/features/css-namespaces.js           |    2 +-
     .../caniuse-lite/data/features/css-nesting.js |    2 +-
     .../data/features/css-not-sel-list.js         |    2 +-
     .../data/features/css-nth-child-of.js         |    2 +-
     .../caniuse-lite/data/features/css-opacity.js |    2 +-
     .../data/features/css-optional-pseudo.js      |    2 +-
     .../data/features/css-overflow-anchor.js      |    2 +-
     .../data/features/css-overflow-overlay.js     |    2 +-
     .../data/features/css-overflow.js             |    2 +-
     .../data/features/css-overscroll-behavior.js  |    2 +-
     .../data/features/css-page-break.js           |    2 +-
     .../data/features/css-paged-media.js          |    2 +-
     .../data/features/css-paint-api.js            |    2 +-
     .../data/features/css-placeholder-shown.js    |    2 +-
     .../data/features/css-placeholder.js          |    2 +-
     .../data/features/css-print-color-adjust.js   |    2 +-
     .../data/features/css-read-only-write.js      |    2 +-
     .../data/features/css-rebeccapurple.js        |    2 +-
     .../data/features/css-reflections.js          |    2 +-
     .../caniuse-lite/data/features/css-regions.js |    2 +-
     .../data/features/css-repeating-gradients.js  |    2 +-
     .../caniuse-lite/data/features/css-resize.js  |    2 +-
     .../data/features/css-revert-value.js         |    2 +-
     .../data/features/css-rrggbbaa.js             |    2 +-
     .../data/features/css-scroll-behavior.js      |    2 +-
     .../data/features/css-scroll-timeline.js      |    2 +-
     .../data/features/css-scrollbar.js            |    2 +-
     .../caniuse-lite/data/features/css-sel2.js    |    2 +-
     .../caniuse-lite/data/features/css-sel3.js    |    2 +-
     .../data/features/css-selection.js            |    2 +-
     .../caniuse-lite/data/features/css-shapes.js  |    2 +-
     .../data/features/css-snappoints.js           |    2 +-
     .../caniuse-lite/data/features/css-sticky.js  |    2 +-
     .../caniuse-lite/data/features/css-subgrid.js |    2 +-
     .../data/features/css-supports-api.js         |    2 +-
     .../caniuse-lite/data/features/css-table.js   |    2 +-
     .../data/features/css-text-align-last.js      |    2 +-
     .../data/features/css-text-box-trim.js        |    2 +-
     .../data/features/css-text-indent.js          |    2 +-
     .../data/features/css-text-justify.js         |    2 +-
     .../data/features/css-text-orientation.js     |    2 +-
     .../data/features/css-text-spacing.js         |    2 +-
     .../data/features/css-textshadow.js           |    2 +-
     .../data/features/css-touch-action.js         |    2 +-
     .../data/features/css-transitions.js          |    2 +-
     .../data/features/css-unicode-bidi.js         |    2 +-
     .../data/features/css-unset-value.js          |    2 +-
     .../data/features/css-variables.js            |    2 +-
     .../data/features/css-when-else.js            |    2 +-
     .../data/features/css-widows-orphans.js       |    2 +-
     .../data/features/css-width-stretch.js        |    2 +-
     .../data/features/css-writing-mode.js         |    2 +-
     .../caniuse-lite/data/features/css-zoom.js    |    2 +-
     .../caniuse-lite/data/features/css3-attr.js   |    2 +-
     .../data/features/css3-boxsizing.js           |    2 +-
     .../caniuse-lite/data/features/css3-colors.js |    2 +-
     .../data/features/css3-cursors-grab.js        |    2 +-
     .../data/features/css3-cursors-newer.js       |    2 +-
     .../data/features/css3-cursors.js             |    2 +-
     .../data/features/css3-tabsize.js             |    2 +-
     .../data/features/currentcolor.js             |    2 +-
     .../data/features/custom-elements.js          |    2 +-
     .../data/features/custom-elementsv1.js        |    2 +-
     .../caniuse-lite/data/features/customevent.js |    2 +-
     .../caniuse-lite/data/features/datalist.js    |    2 +-
     .../caniuse-lite/data/features/dataset.js     |    2 +-
     .../caniuse-lite/data/features/datauri.js     |    2 +-
     .../data/features/date-tolocaledatestring.js  |    2 +-
     .../data/features/declarative-shadow-dom.js   |    2 +-
     .../caniuse-lite/data/features/decorators.js  |    2 +-
     .../caniuse-lite/data/features/details.js     |    2 +-
     .../data/features/deviceorientation.js        |    2 +-
     .../data/features/devicepixelratio.js         |    2 +-
     .../caniuse-lite/data/features/dialog.js      |    2 +-
     .../data/features/dispatchevent.js            |    2 +-
     .../caniuse-lite/data/features/dnssec.js      |    2 +-
     .../data/features/do-not-track.js             |    2 +-
     .../data/features/document-currentscript.js   |    2 +-
     .../data/features/document-evaluate-xpath.js  |    2 +-
     .../data/features/document-execcommand.js     |    2 +-
     .../data/features/document-policy.js          |    2 +-
     .../features/document-scrollingelement.js     |    2 +-
     .../data/features/documenthead.js             |    2 +-
     .../data/features/dom-manip-convenience.js    |    2 +-
     .../caniuse-lite/data/features/dom-range.js   |    2 +-
     .../data/features/domcontentloaded.js         |    2 +-
     .../caniuse-lite/data/features/dommatrix.js   |    2 +-
     .../caniuse-lite/data/features/download.js    |    2 +-
     .../caniuse-lite/data/features/dragndrop.js   |    2 +-
     .../data/features/element-closest.js          |    2 +-
     .../data/features/element-from-point.js       |    2 +-
     .../data/features/element-scroll-methods.js   |    2 +-
     .../caniuse-lite/data/features/eme.js         |    2 +-
     .../caniuse-lite/data/features/eot.js         |    2 +-
     .../caniuse-lite/data/features/es5.js         |    2 +-
     .../caniuse-lite/data/features/es6-class.js   |    2 +-
     .../data/features/es6-generators.js           |    2 +-
     .../features/es6-module-dynamic-import.js     |    2 +-
     .../caniuse-lite/data/features/es6-module.js  |    2 +-
     .../caniuse-lite/data/features/es6-number.js  |    2 +-
     .../data/features/es6-string-includes.js      |    2 +-
     .../caniuse-lite/data/features/es6.js         |    2 +-
     .../caniuse-lite/data/features/eventsource.js |    2 +-
     .../data/features/extended-system-fonts.js    |    2 +-
     .../data/features/feature-policy.js           |    2 +-
     .../caniuse-lite/data/features/fetch.js       |    2 +-
     .../data/features/fieldset-disabled.js        |    2 +-
     .../caniuse-lite/data/features/fileapi.js     |    2 +-
     .../caniuse-lite/data/features/filereader.js  |    2 +-
     .../data/features/filereadersync.js           |    2 +-
     .../caniuse-lite/data/features/filesystem.js  |    2 +-
     .../caniuse-lite/data/features/flac.js        |    2 +-
     .../caniuse-lite/data/features/flexbox-gap.js |    2 +-
     .../caniuse-lite/data/features/flexbox.js     |    2 +-
     .../caniuse-lite/data/features/flow-root.js   |    2 +-
     .../data/features/focusin-focusout-events.js  |    2 +-
     .../data/features/font-family-system-ui.js    |    2 +-
     .../data/features/font-feature.js             |    2 +-
     .../data/features/font-kerning.js             |    2 +-
     .../data/features/font-loading.js             |    2 +-
     .../data/features/font-size-adjust.js         |    2 +-
     .../caniuse-lite/data/features/font-smooth.js |    2 +-
     .../data/features/font-unicode-range.js       |    2 +-
     .../data/features/font-variant-alternates.js  |    2 +-
     .../data/features/font-variant-numeric.js     |    2 +-
     .../caniuse-lite/data/features/fontface.js    |    2 +-
     .../data/features/form-attribute.js           |    2 +-
     .../data/features/form-submit-attributes.js   |    2 +-
     .../data/features/form-validation.js          |    2 +-
     .../caniuse-lite/data/features/forms.js       |    2 +-
     .../caniuse-lite/data/features/fullscreen.js  |    2 +-
     .../caniuse-lite/data/features/gamepad.js     |    2 +-
     .../caniuse-lite/data/features/geolocation.js |    2 +-
     .../data/features/getboundingclientrect.js    |    2 +-
     .../data/features/getcomputedstyle.js         |    2 +-
     .../data/features/getelementsbyclassname.js   |    2 +-
     .../data/features/getrandomvalues.js          |    2 +-
     .../caniuse-lite/data/features/gyroscope.js   |    2 +-
     .../data/features/hardwareconcurrency.js      |    2 +-
     .../caniuse-lite/data/features/hashchange.js  |    2 +-
     .../caniuse-lite/data/features/heif.js        |    2 +-
     .../caniuse-lite/data/features/hevc.js        |    2 +-
     .../caniuse-lite/data/features/hidden.js      |    2 +-
     .../data/features/high-resolution-time.js     |    2 +-
     .../caniuse-lite/data/features/history.js     |    2 +-
     .../data/features/html-media-capture.js       |    2 +-
     .../data/features/html5semantic.js            |    2 +-
     .../data/features/http-live-streaming.js      |    2 +-
     .../caniuse-lite/data/features/http2.js       |    2 +-
     .../caniuse-lite/data/features/http3.js       |    2 +-
     .../data/features/iframe-sandbox.js           |    2 +-
     .../data/features/iframe-seamless.js          |    2 +-
     .../data/features/iframe-srcdoc.js            |    2 +-
     .../data/features/imagecapture.js             |    2 +-
     .../caniuse-lite/data/features/ime.js         |    2 +-
     .../img-naturalwidth-naturalheight.js         |    2 +-
     .../caniuse-lite/data/features/import-maps.js |    2 +-
     .../caniuse-lite/data/features/imports.js     |    2 +-
     .../data/features/indeterminate-checkbox.js   |    2 +-
     .../caniuse-lite/data/features/indexeddb.js   |    2 +-
     .../caniuse-lite/data/features/indexeddb2.js  |    2 +-
     .../data/features/inline-block.js             |    2 +-
     .../caniuse-lite/data/features/innertext.js   |    2 +-
     .../data/features/input-autocomplete-onoff.js |    2 +-
     .../caniuse-lite/data/features/input-color.js |    2 +-
     .../data/features/input-datetime.js           |    2 +-
     .../data/features/input-email-tel-url.js      |    2 +-
     .../caniuse-lite/data/features/input-event.js |    2 +-
     .../data/features/input-file-accept.js        |    2 +-
     .../data/features/input-file-directory.js     |    2 +-
     .../data/features/input-file-multiple.js      |    2 +-
     .../data/features/input-inputmode.js          |    2 +-
     .../data/features/input-minlength.js          |    2 +-
     .../data/features/input-number.js             |    2 +-
     .../data/features/input-pattern.js            |    2 +-
     .../data/features/input-placeholder.js        |    2 +-
     .../caniuse-lite/data/features/input-range.js |    2 +-
     .../data/features/input-search.js             |    2 +-
     .../data/features/input-selection.js          |    2 +-
     .../data/features/insert-adjacent.js          |    2 +-
     .../data/features/insertadjacenthtml.js       |    2 +-
     .../data/features/internationalization.js     |    2 +-
     .../data/features/intersectionobserver-v2.js  |    2 +-
     .../data/features/intersectionobserver.js     |    2 +-
     .../data/features/intl-pluralrules.js         |    2 +-
     .../data/features/intrinsic-width.js          |    2 +-
     .../caniuse-lite/data/features/jpeg2000.js    |    2 +-
     .../caniuse-lite/data/features/jpegxl.js      |    2 +-
     .../caniuse-lite/data/features/jpegxr.js      |    2 +-
     .../data/features/js-regexp-lookbehind.js     |    2 +-
     .../caniuse-lite/data/features/json.js        |    2 +-
     .../features/justify-content-space-evenly.js  |    2 +-
     .../data/features/kerning-pairs-ligatures.js  |    2 +-
     .../data/features/keyboardevent-charcode.js   |    2 +-
     .../data/features/keyboardevent-code.js       |    2 +-
     .../keyboardevent-getmodifierstate.js         |    2 +-
     .../data/features/keyboardevent-key.js        |    2 +-
     .../data/features/keyboardevent-location.js   |    2 +-
     .../data/features/keyboardevent-which.js      |    2 +-
     .../caniuse-lite/data/features/lazyload.js    |    2 +-
     .../caniuse-lite/data/features/let.js         |    2 +-
     .../data/features/link-icon-png.js            |    2 +-
     .../data/features/link-icon-svg.js            |    2 +-
     .../data/features/link-rel-dns-prefetch.js    |    2 +-
     .../data/features/link-rel-modulepreload.js   |    2 +-
     .../data/features/link-rel-preconnect.js      |    2 +-
     .../data/features/link-rel-prefetch.js        |    2 +-
     .../data/features/link-rel-preload.js         |    2 +-
     .../data/features/link-rel-prerender.js       |    2 +-
     .../data/features/loading-lazy-attr.js        |    2 +-
     .../data/features/localecompare.js            |    2 +-
     .../data/features/magnetometer.js             |    2 +-
     .../data/features/matchesselector.js          |    2 +-
     .../caniuse-lite/data/features/matchmedia.js  |    2 +-
     .../caniuse-lite/data/features/mathml.js      |    2 +-
     .../caniuse-lite/data/features/maxlength.js   |    2 +-
     .../mdn-css-unicode-bidi-isolate-override.js  |    2 +-
     .../features/mdn-css-unicode-bidi-isolate.js  |    2 +-
     .../mdn-css-unicode-bidi-plaintext.js         |    2 +-
     .../features/mdn-text-decoration-color.js     |    2 +-
     .../data/features/mdn-text-decoration-line.js |    2 +-
     .../features/mdn-text-decoration-shorthand.js |    2 +-
     .../features/mdn-text-decoration-style.js     |    2 +-
     .../data/features/media-fragments.js          |    2 +-
     .../data/features/mediacapture-fromelement.js |    2 +-
     .../data/features/mediarecorder.js            |    2 +-
     .../caniuse-lite/data/features/mediasource.js |    2 +-
     .../caniuse-lite/data/features/menu.js        |    2 +-
     .../data/features/meta-theme-color.js         |    2 +-
     .../caniuse-lite/data/features/meter.js       |    2 +-
     .../caniuse-lite/data/features/midi.js        |    2 +-
     .../caniuse-lite/data/features/minmaxwh.js    |    2 +-
     .../caniuse-lite/data/features/mp3.js         |    2 +-
     .../caniuse-lite/data/features/mpeg-dash.js   |    2 +-
     .../caniuse-lite/data/features/mpeg4.js       |    2 +-
     .../data/features/multibackgrounds.js         |    2 +-
     .../caniuse-lite/data/features/multicolumn.js |    2 +-
     .../data/features/mutation-events.js          |    2 +-
     .../data/features/mutationobserver.js         |    2 +-
     .../data/features/namevalue-storage.js        |    2 +-
     .../data/features/native-filesystem-api.js    |    2 +-
     .../caniuse-lite/data/features/nav-timing.js  |    2 +-
     .../caniuse-lite/data/features/netinfo.js     |    2 +-
     .../data/features/notifications.js            |    2 +-
     .../data/features/object-entries.js           |    2 +-
     .../caniuse-lite/data/features/object-fit.js  |    2 +-
     .../data/features/object-observe.js           |    2 +-
     .../data/features/object-values.js            |    2 +-
     .../caniuse-lite/data/features/objectrtc.js   |    2 +-
     .../data/features/offline-apps.js             |    2 +-
     .../data/features/offscreencanvas.js          |    2 +-
     .../caniuse-lite/data/features/ogg-vorbis.js  |    2 +-
     .../caniuse-lite/data/features/ogv.js         |    2 +-
     .../caniuse-lite/data/features/ol-reversed.js |    2 +-
     .../data/features/once-event-listener.js      |    2 +-
     .../data/features/online-status.js            |    2 +-
     .../caniuse-lite/data/features/opus.js        |    2 +-
     .../data/features/orientation-sensor.js       |    2 +-
     .../caniuse-lite/data/features/outline.js     |    2 +-
     .../data/features/pad-start-end.js            |    2 +-
     .../data/features/page-transition-events.js   |    2 +-
     .../data/features/pagevisibility.js           |    2 +-
     .../data/features/passive-event-listener.js   |    2 +-
     .../data/features/passwordrules.js            |    2 +-
     .../caniuse-lite/data/features/path2d.js      |    2 +-
     .../data/features/payment-request.js          |    2 +-
     .../caniuse-lite/data/features/pdf-viewer.js  |    2 +-
     .../data/features/permissions-api.js          |    2 +-
     .../data/features/permissions-policy.js       |    2 +-
     .../data/features/picture-in-picture.js       |    2 +-
     .../caniuse-lite/data/features/picture.js     |    2 +-
     .../caniuse-lite/data/features/ping.js        |    2 +-
     .../caniuse-lite/data/features/png-alpha.js   |    2 +-
     .../data/features/pointer-events.js           |    2 +-
     .../caniuse-lite/data/features/pointer.js     |    2 +-
     .../caniuse-lite/data/features/pointerlock.js |    2 +-
     .../caniuse-lite/data/features/portals.js     |    2 +-
     .../data/features/prefers-color-scheme.js     |    2 +-
     .../data/features/prefers-reduced-motion.js   |    2 +-
     .../caniuse-lite/data/features/progress.js    |    2 +-
     .../data/features/promise-finally.js          |    2 +-
     .../caniuse-lite/data/features/promises.js    |    2 +-
     .../caniuse-lite/data/features/proximity.js   |    2 +-
     .../caniuse-lite/data/features/proxy.js       |    2 +-
     .../data/features/publickeypinning.js         |    2 +-
     .../caniuse-lite/data/features/push-api.js    |    2 +-
     .../data/features/queryselector.js            |    2 +-
     .../data/features/readonly-attr.js            |    2 +-
     .../data/features/referrer-policy.js          |    2 +-
     .../data/features/registerprotocolhandler.js  |    2 +-
     .../data/features/rel-noopener.js             |    2 +-
     .../data/features/rel-noreferrer.js           |    2 +-
     .../caniuse-lite/data/features/rellist.js     |    2 +-
     .../caniuse-lite/data/features/rem.js         |    2 +-
     .../data/features/requestanimationframe.js    |    2 +-
     .../data/features/requestidlecallback.js      |    2 +-
     .../data/features/resizeobserver.js           |    2 +-
     .../data/features/resource-timing.js          |    2 +-
     .../data/features/rest-parameters.js          |    2 +-
     .../data/features/rtcpeerconnection.js        |    2 +-
     .../caniuse-lite/data/features/ruby.js        |    2 +-
     .../caniuse-lite/data/features/run-in.js      |    2 +-
     .../features/same-site-cookie-attribute.js    |    2 +-
     .../data/features/screen-orientation.js       |    2 +-
     .../data/features/script-async.js             |    2 +-
     .../data/features/script-defer.js             |    2 +-
     .../data/features/scrollintoview.js           |    2 +-
     .../data/features/scrollintoviewifneeded.js   |    2 +-
     .../caniuse-lite/data/features/sdch.js        |    2 +-
     .../data/features/selection-api.js            |    2 +-
     .../data/features/server-timing.js            |    2 +-
     .../data/features/serviceworkers.js           |    2 +-
     .../data/features/setimmediate.js             |    2 +-
     .../caniuse-lite/data/features/shadowdom.js   |    2 +-
     .../caniuse-lite/data/features/shadowdomv1.js |    2 +-
     .../data/features/sharedarraybuffer.js        |    2 +-
     .../data/features/sharedworkers.js            |    2 +-
     .../caniuse-lite/data/features/sni.js         |    2 +-
     .../caniuse-lite/data/features/spdy.js        |    2 +-
     .../data/features/speech-recognition.js       |    2 +-
     .../data/features/speech-synthesis.js         |    2 +-
     .../data/features/spellcheck-attribute.js     |    2 +-
     .../caniuse-lite/data/features/sql-storage.js |    2 +-
     .../caniuse-lite/data/features/srcset.js      |    2 +-
     .../caniuse-lite/data/features/stream.js      |    2 +-
     .../caniuse-lite/data/features/streams.js     |    2 +-
     .../data/features/stricttransportsecurity.js  |    2 +-
     .../data/features/style-scoped.js             |    2 +-
     .../data/features/subresource-bundling.js     |    2 +-
     .../data/features/subresource-integrity.js    |    2 +-
     .../caniuse-lite/data/features/svg-css.js     |    2 +-
     .../caniuse-lite/data/features/svg-filters.js |    2 +-
     .../caniuse-lite/data/features/svg-fonts.js   |    2 +-
     .../data/features/svg-fragment.js             |    2 +-
     .../caniuse-lite/data/features/svg-html.js    |    2 +-
     .../caniuse-lite/data/features/svg-html5.js   |    2 +-
     .../caniuse-lite/data/features/svg-img.js     |    2 +-
     .../caniuse-lite/data/features/svg-smil.js    |    2 +-
     .../caniuse-lite/data/features/svg.js         |    2 +-
     .../caniuse-lite/data/features/sxg.js         |    2 +-
     .../data/features/tabindex-attr.js            |    2 +-
     .../data/features/template-literals.js        |    2 +-
     .../caniuse-lite/data/features/template.js    |    2 +-
     .../caniuse-lite/data/features/temporal.js    |    2 +-
     .../caniuse-lite/data/features/testfeat.js    |    2 +-
     .../data/features/text-decoration.js          |    2 +-
     .../data/features/text-emphasis.js            |    2 +-
     .../data/features/text-overflow.js            |    2 +-
     .../data/features/text-size-adjust.js         |    2 +-
     .../caniuse-lite/data/features/text-stroke.js |    2 +-
     .../caniuse-lite/data/features/textcontent.js |    2 +-
     .../caniuse-lite/data/features/textencoder.js |    2 +-
     .../caniuse-lite/data/features/tls1-1.js      |    2 +-
     .../caniuse-lite/data/features/tls1-2.js      |    2 +-
     .../caniuse-lite/data/features/tls1-3.js      |    2 +-
     .../caniuse-lite/data/features/touch.js       |    2 +-
     .../data/features/transforms2d.js             |    2 +-
     .../data/features/transforms3d.js             |    2 +-
     .../data/features/trusted-types.js            |    2 +-
     .../caniuse-lite/data/features/ttf.js         |    2 +-
     .../caniuse-lite/data/features/typedarrays.js |    2 +-
     .../caniuse-lite/data/features/u2f.js         |    2 +-
     .../data/features/unhandledrejection.js       |    2 +-
     .../data/features/upgradeinsecurerequests.js  |    2 +-
     .../features/url-scroll-to-text-fragment.js   |    2 +-
     .../caniuse-lite/data/features/url.js         |    2 +-
     .../data/features/urlsearchparams.js          |    2 +-
     .../caniuse-lite/data/features/use-strict.js  |    2 +-
     .../data/features/user-select-none.js         |    2 +-
     .../caniuse-lite/data/features/user-timing.js |    2 +-
     .../data/features/variable-fonts.js           |    2 +-
     .../data/features/vector-effect.js            |    2 +-
     .../caniuse-lite/data/features/vibration.js   |    2 +-
     .../caniuse-lite/data/features/video.js       |    2 +-
     .../caniuse-lite/data/features/videotracks.js |    2 +-
     .../data/features/viewport-unit-variants.js   |    2 +-
     .../data/features/viewport-units.js           |    2 +-
     .../caniuse-lite/data/features/wai-aria.js    |    2 +-
     .../caniuse-lite/data/features/wake-lock.js   |    2 +-
     .../caniuse-lite/data/features/wasm.js        |    2 +-
     .../caniuse-lite/data/features/wav.js         |    2 +-
     .../caniuse-lite/data/features/wbr-element.js |    2 +-
     .../data/features/web-animation.js            |    2 +-
     .../data/features/web-app-manifest.js         |    2 +-
     .../data/features/web-bluetooth.js            |    2 +-
     .../caniuse-lite/data/features/web-serial.js  |    2 +-
     .../caniuse-lite/data/features/web-share.js   |    2 +-
     .../caniuse-lite/data/features/webauthn.js    |    2 +-
     .../caniuse-lite/data/features/webcodecs.js   |    2 +-
     .../caniuse-lite/data/features/webgl.js       |    2 +-
     .../caniuse-lite/data/features/webgl2.js      |    2 +-
     .../caniuse-lite/data/features/webgpu.js      |    2 +-
     .../caniuse-lite/data/features/webhid.js      |    2 +-
     .../data/features/webkit-user-drag.js         |    2 +-
     .../caniuse-lite/data/features/webm.js        |    2 +-
     .../caniuse-lite/data/features/webnfc.js      |    2 +-
     .../caniuse-lite/data/features/webp.js        |    2 +-
     .../caniuse-lite/data/features/websockets.js  |    2 +-
     .../data/features/webtransport.js             |    2 +-
     .../caniuse-lite/data/features/webusb.js      |    2 +-
     .../caniuse-lite/data/features/webvr.js       |    2 +-
     .../caniuse-lite/data/features/webvtt.js      |    2 +-
     .../caniuse-lite/data/features/webworkers.js  |    2 +-
     .../caniuse-lite/data/features/webxr.js       |    2 +-
     .../caniuse-lite/data/features/will-change.js |    2 +-
     .../caniuse-lite/data/features/woff.js        |    2 +-
     .../caniuse-lite/data/features/woff2.js       |    2 +-
     .../caniuse-lite/data/features/word-break.js  |    2 +-
     .../caniuse-lite/data/features/wordwrap.js    |    2 +-
     .../data/features/x-doc-messaging.js          |    2 +-
     .../data/features/x-frame-options.js          |    2 +-
     .../caniuse-lite/data/features/xhr2.js        |    2 +-
     .../caniuse-lite/data/features/xhtml.js       |    2 +-
     .../caniuse-lite/data/features/xhtmlsmil.js   |    2 +-
     .../data/features/xml-serializer.js           |    2 +-
     .../node_modules/caniuse-lite/package.json    |    6 +-
     .../electron-to-chromium/chromium-versions.js |    3 +-
     .../chromium-versions.json                    |    2 +-
     .../full-chromium-versions.js                 |   54 +-
     .../full-chromium-versions.json               |    2 +-
     .../electron-to-chromium/full-versions.js     |   26 +-
     .../electron-to-chromium/full-versions.json   |    2 +-
     .../electron-to-chromium/package.json         |    2 +-
     .../electron-to-chromium/versions.js          |    3 +-
     .../electron-to-chromium/versions.json        |    2 +-
     .../eslint-plugin-jsdoc/dist/index.js         |   23 +-
     .../eslint-plugin-jsdoc/dist/iterateJsdoc.js  |    9 +-
     .../eslint-plugin-jsdoc/package.json          |   30 +-
     .../dist/eslint-visitor-keys.cjs              |   74 +-
     .../eslint-visitor-keys/lib/visitor-keys.js   |   73 +-
     .../eslint-visitor-keys/package.json          |   22 +-
     .../node_modules/espree/dist/espree.cjs       |    3 +-
     .../eslint/node_modules/espree/lib/version.js |    2 +-
     .../eslint/node_modules/espree/package.json   |   12 +-
     .../cjs/container/HashContainer/Base/index.js |    3 +-
     .../cjs/container/HashContainer/HashMap.js    |   14 +-
     .../cjs/container/HashContainer/HashSet.js    |   14 +-
     .../container/SequentialContainer/Deque.js    |  305 ++-
     .../container/SequentialContainer/LinkList.js |   26 +-
     .../container/SequentialContainer/Vector.js   |    8 +-
     .../TreeContainer/Base/TreeIterator.js        |   20 +-
     .../container/TreeContainer/Base/TreeNode.js  |   94 +-
     .../cjs/container/TreeContainer/Base/index.js |  456 ++--
     .../cjs/container/TreeContainer/OrderedMap.js |  115 +-
     .../cjs/container/TreeContainer/OrderedSet.js |   96 +-
     .../js-sdsl/dist/cjs/utils/math.js            |   18 +
     .../dist/esm/container/ContainerBase/index.js |    8 +-
     .../esm/container/HashContainer/Base/index.js |   91 +-
     .../esm/container/HashContainer/HashMap.js    |   80 +-
     .../esm/container/HashContainer/HashSet.js    |   70 +-
     .../container/OtherContainer/PriorityQueue.js |  100 +-
     .../esm/container/OtherContainer/Queue.js     |   34 +-
     .../esm/container/OtherContainer/Stack.js     |   20 +-
     .../container/SequentialContainer/Deque.js    |  380 +--
     .../container/SequentialContainer/LinkList.js |  238 +-
     .../container/SequentialContainer/Vector.js   |  170 +-
     .../TreeContainer/Base/TreeIterator.js        |   28 +-
     .../container/TreeContainer/Base/TreeNode.js  |  157 +-
     .../esm/container/TreeContainer/Base/index.js |  754 +++---
     .../esm/container/TreeContainer/OrderedMap.js |  267 +-
     .../esm/container/TreeContainer/OrderedSet.js |  238 +-
     .../js-sdsl/dist/esm/utils/math.js            |    6 +
     .../node_modules/js-sdsl/dist/umd/js-sdsl.js  |  721 +++---
     .../js-sdsl/dist/umd/js-sdsl.min.js           |    4 +-
     .../eslint/node_modules/js-sdsl/package.json  |    2 +-
     .../jsdoc-type-pratt-parser/dist/index.js     |  520 ++--
     .../jsdoc-type-pratt-parser/package.json      |   43 +-
     tools/node_modules/eslint/package.json        |   10 +-
     730 files changed, 5290 insertions(+), 4956 deletions(-)
     create mode 100644 tools/node_modules/eslint/lib/rules/utils/regular-expressions.js
     create mode 100644 tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/utils/math.js
     create mode 100644 tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/utils/math.js
    
    diff --git a/tools/node_modules/eslint/lib/config/default-config.js b/tools/node_modules/eslint/lib/config/default-config.js
    index aa0dfb2a522f49..99ea7b9f84e474 100644
    --- a/tools/node_modules/eslint/lib/config/default-config.js
    +++ b/tools/node_modules/eslint/lib/config/default-config.js
    @@ -19,9 +19,6 @@ exports.defaultConfig = [
         {
             plugins: {
                 "@": {
    -                parsers: {
    -                    espree: require("espree")
    -                },
     
                     /*
                      * Because we try to delay loading rules until absolutely
    @@ -43,7 +40,7 @@ exports.defaultConfig = [
             languageOptions: {
                 sourceType: "module",
                 ecmaVersion: "latest",
    -            parser: "@/espree",
    +            parser: require("espree"),
                 parserOptions: {}
             }
         },
    diff --git a/tools/node_modules/eslint/lib/config/flat-config-array.js b/tools/node_modules/eslint/lib/config/flat-config-array.js
    index 78b4ef44bacaaf..689dc429f5021f 100644
    --- a/tools/node_modules/eslint/lib/config/flat-config-array.js
    +++ b/tools/node_modules/eslint/lib/config/flat-config-array.js
    @@ -192,17 +192,7 @@ class FlatConfigArray extends ConfigArray {
             if (languageOptions && languageOptions.parser) {
                 const { parser } = languageOptions;
     
    -            if (typeof parser === "string") {
    -                const { pluginName, objectName: localParserName } = splitPluginIdentifier(parser);
    -
    -                parserName = parser;
    -
    -                if (!plugins || !plugins[pluginName] || !plugins[pluginName].parsers || !plugins[pluginName].parsers[localParserName]) {
    -                    throw new TypeError(`Key "parser": Could not find "${localParserName}" in plugin "${pluginName}".`);
    -                }
    -
    -                languageOptions.parser = plugins[pluginName].parsers[localParserName];
    -            } else if (typeof parser === "object") {
    +            if (typeof parser === "object") {
                     parserName = getObjectId(parser);
     
                     if (!parserName) {
    @@ -255,7 +245,16 @@ class FlatConfigArray extends ConfigArray {
     
                     return {
                         ...this,
    -                    plugins: Object.keys(plugins),
    +                    plugins: Object.entries(plugins).map(([namespace, plugin]) => {
    +
    +                        const pluginId = getObjectId(plugin);
    +
    +                        if (!pluginId) {
    +                            return namespace;
    +                        }
    +
    +                        return `${namespace}:${pluginId}`;
    +                    }),
                         languageOptions: {
                             ...languageOptions,
                             parser: parserName
    diff --git a/tools/node_modules/eslint/lib/config/flat-config-schema.js b/tools/node_modules/eslint/lib/config/flat-config-schema.js
    index cb8e7961add509..bb6e9f899aca15 100644
    --- a/tools/node_modules/eslint/lib/config/flat-config-schema.js
    +++ b/tools/node_modules/eslint/lib/config/flat-config-schema.js
    @@ -179,18 +179,6 @@ function assertIsObject(value) {
         }
     }
     
    -/**
    - * Validates that a value is an object or a string.
    - * @param {any} value The value to check.
    - * @returns {void}
    - * @throws {TypeError} If the value isn't an object or a string.
    - */
    -function assertIsObjectOrString(value) {
    -    if ((!value || typeof value !== "object") && typeof value !== "string") {
    -        throw new TypeError("Expected an object or string.");
    -    }
    -}
    -
     //-----------------------------------------------------------------------------
     // Low-Level Schemas
     //-----------------------------------------------------------------------------
    @@ -242,15 +230,13 @@ const globalsSchema = {
     const parserSchema = {
         merge: "replace",
         validate(value) {
    -        assertIsObjectOrString(value);
     
    -        if (typeof value === "object" && typeof value.parse !== "function" && typeof value.parseForESLint !== "function") {
    -            throw new TypeError("Expected object to have a parse() or parseForESLint() method.");
    +        if (!value || typeof value !== "object" ||
    +            (typeof value.parse !== "function" && typeof value.parseForESLint !== "function")
    +        ) {
    +            throw new TypeError("Expected object with parse() or parseForESLint() method.");
             }
     
    -        if (typeof value === "string") {
    -            assertIsPluginMemberName(value);
    -        }
         }
     };
     
    diff --git a/tools/node_modules/eslint/lib/linter/linter.js b/tools/node_modules/eslint/lib/linter/linter.js
    index 0f1bd4f77611aa..3b099004d2bea7 100644
    --- a/tools/node_modules/eslint/lib/linter/linter.js
    +++ b/tools/node_modules/eslint/lib/linter/linter.js
    @@ -857,47 +857,22 @@ function parse(text, languageOptions, filePath) {
         }
     }
     
    -/**
    - * Gets the scope for the current node
    - * @param {ScopeManager} scopeManager The scope manager for this AST
    - * @param {ASTNode} currentNode The node to get the scope of
    - * @returns {eslint-scope.Scope} The scope information for this node
    - */
    -function getScope(scopeManager, currentNode) {
    -
    -    // On Program node, get the outermost scope to avoid return Node.js special function scope or ES modules scope.
    -    const inner = currentNode.type !== "Program";
    -
    -    for (let node = currentNode; node; node = node.parent) {
    -        const scope = scopeManager.acquire(node, inner);
    -
    -        if (scope) {
    -            if (scope.type === "function-expression-name") {
    -                return scope.childScopes[0];
    -            }
    -            return scope;
    -        }
    -    }
    -
    -    return scopeManager.scopes[0];
    -}
    -
     /**
      * Marks a variable as used in the current scope
    - * @param {ScopeManager} scopeManager The scope manager for this AST. The scope may be mutated by this function.
    + * @param {SourceCode} sourceCode The source code for the currently linted file.
      * @param {ASTNode} currentNode The node currently being traversed
      * @param {LanguageOptions} languageOptions The options used to parse this text
      * @param {string} name The name of the variable that should be marked as used.
      * @returns {boolean} True if the variable was found and marked as used, false if not.
      */
    -function markVariableAsUsed(scopeManager, currentNode, languageOptions, name) {
    +function markVariableAsUsed(sourceCode, currentNode, languageOptions, name) {
         const parserOptions = languageOptions.parserOptions;
         const sourceType = languageOptions.sourceType;
         const hasGlobalReturn =
             (parserOptions.ecmaFeatures && parserOptions.ecmaFeatures.globalReturn) ||
             sourceType === "commonjs";
         const specialScope = hasGlobalReturn || sourceType === "module";
    -    const currentScope = getScope(scopeManager, currentNode);
    +    const currentScope = sourceCode.getScope(currentNode);
     
         // Special Node.js scope means we need to start one level deeper
         const initialScope = currentScope.type === "global" && specialScope ? currentScope.childScopes[0] : currentScope;
    @@ -1026,9 +1001,9 @@ function runRules(sourceCode, configuredRules, ruleMapper, parserName, languageO
                     getCwd: () => cwd,
                     getFilename: () => filename,
                     getPhysicalFilename: () => physicalFilename || filename,
    -                getScope: () => getScope(sourceCode.scopeManager, currentNode),
    +                getScope: () => sourceCode.getScope(currentNode),
                     getSourceCode: () => sourceCode,
    -                markVariableAsUsed: name => markVariableAsUsed(sourceCode.scopeManager, currentNode, languageOptions, name),
    +                markVariableAsUsed: name => markVariableAsUsed(sourceCode, currentNode, languageOptions, name),
                     parserOptions: {
                         ...languageOptions.parserOptions
                     },
    diff --git a/tools/node_modules/eslint/lib/rule-tester/flat-rule-tester.js b/tools/node_modules/eslint/lib/rule-tester/flat-rule-tester.js
    index 510cbc688ceef4..97055d104f4169 100644
    --- a/tools/node_modules/eslint/lib/rule-tester/flat-rule-tester.js
    +++ b/tools/node_modules/eslint/lib/rule-tester/flat-rule-tester.js
    @@ -345,7 +345,7 @@ class FlatRuleTester {
          * @returns {void}
          */
         static setDefaultConfig(config) {
    -        if (typeof config !== "object") {
    +        if (typeof config !== "object" || config === null) {
                 throw new TypeError("FlatRuleTester.setDefaultConfig: config must be an object");
             }
             sharedDefaultConfig = config;
    diff --git a/tools/node_modules/eslint/lib/rule-tester/rule-tester.js b/tools/node_modules/eslint/lib/rule-tester/rule-tester.js
    index 48df3b79b943dc..8518299d0b04e0 100644
    --- a/tools/node_modules/eslint/lib/rule-tester/rule-tester.js
    +++ b/tools/node_modules/eslint/lib/rule-tester/rule-tester.js
    @@ -412,7 +412,7 @@ class RuleTester {
          * @returns {void}
          */
         static setDefaultConfig(config) {
    -        if (typeof config !== "object") {
    +        if (typeof config !== "object" || config === null) {
                 throw new TypeError("RuleTester.setDefaultConfig: config must be an object");
             }
             defaultConfig = config;
    diff --git a/tools/node_modules/eslint/lib/rules/camelcase.js b/tools/node_modules/eslint/lib/rules/camelcase.js
    index ee1b6bf598d31e..910e8b6e583147 100644
    --- a/tools/node_modules/eslint/lib/rules/camelcase.js
    +++ b/tools/node_modules/eslint/lib/rules/camelcase.js
    @@ -73,6 +73,7 @@ module.exports = {
             const ignoreImports = options.ignoreImports;
             const ignoreGlobals = options.ignoreGlobals;
             const allow = options.allow || [];
    +        const sourceCode = context.getSourceCode();
     
             //--------------------------------------------------------------------------
             // Helpers
    @@ -245,8 +246,8 @@ module.exports = {
             return {
     
                 // Report camelcase of global variable references ------------------
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
     
                     if (!ignoreGlobals) {
     
    diff --git a/tools/node_modules/eslint/lib/rules/consistent-this.js b/tools/node_modules/eslint/lib/rules/consistent-this.js
    index 947873b8e4a75b..b1fbd0ebedf536 100644
    --- a/tools/node_modules/eslint/lib/rules/consistent-this.js
    +++ b/tools/node_modules/eslint/lib/rules/consistent-this.js
    @@ -36,6 +36,7 @@ module.exports = {
     
         create(context) {
             let aliases = [];
    +        const sourceCode = context.getSourceCode();
     
             if (context.options.length === 0) {
                 aliases.push("that");
    @@ -115,10 +116,11 @@ module.exports = {
     
             /**
              * Check each alias to ensure that is was assigned to the correct value.
    +         * @param {ASTNode} node The node that represents the scope to check.
              * @returns {void}
              */
    -        function ensureWasAssigned() {
    -            const scope = context.getScope();
    +        function ensureWasAssigned(node) {
    +            const scope = sourceCode.getScope(node);
     
                 aliases.forEach(alias => {
                     checkWasAssigned(alias, scope);
    diff --git a/tools/node_modules/eslint/lib/rules/global-require.js b/tools/node_modules/eslint/lib/rules/global-require.js
    index ceb0a8e8415448..c8a5fc309a162b 100644
    --- a/tools/node_modules/eslint/lib/rules/global-require.js
    +++ b/tools/node_modules/eslint/lib/rules/global-require.js
    @@ -71,9 +71,11 @@ module.exports = {
         },
     
         create(context) {
    +        const sourceCode = context.getSourceCode();
    +
             return {
                 CallExpression(node) {
    -                const currentScope = context.getScope();
    +                const currentScope = sourceCode.getScope(node);
     
                     if (node.callee.name === "require" && !isShadowed(currentScope, node.callee)) {
                         const isGoodRequire = context.getAncestors().every(parent => ACCEPTABLE_PARENTS.has(parent.type));
    diff --git a/tools/node_modules/eslint/lib/rules/handle-callback-err.js b/tools/node_modules/eslint/lib/rules/handle-callback-err.js
    index 5189564b668357..300dbb0dee20b8 100644
    --- a/tools/node_modules/eslint/lib/rules/handle-callback-err.js
    +++ b/tools/node_modules/eslint/lib/rules/handle-callback-err.js
    @@ -38,6 +38,7 @@ module.exports = {
         create(context) {
     
             const errorArgument = context.options[0] || "err";
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Checks if the given argument should be interpreted as a regexp pattern.
    @@ -79,7 +80,7 @@ module.exports = {
              * @returns {void}
              */
             function checkForError(node) {
    -            const scope = context.getScope(),
    +            const scope = sourceCode.getScope(node),
                     parameters = getParameters(scope),
                     firstParameter = parameters[0];
     
    diff --git a/tools/node_modules/eslint/lib/rules/id-blacklist.js b/tools/node_modules/eslint/lib/rules/id-blacklist.js
    index 5ea61e94f69f24..9d1efac3787b7c 100644
    --- a/tools/node_modules/eslint/lib/rules/id-blacklist.js
    +++ b/tools/node_modules/eslint/lib/rules/id-blacklist.js
    @@ -140,6 +140,7 @@ module.exports = {
     
             const denyList = new Set(context.options);
             const reportedNodes = new Set();
    +        const sourceCode = context.getSourceCode();
     
             let globalScope;
     
    @@ -231,8 +232,8 @@ module.exports = {
     
             return {
     
    -            Program() {
    -                globalScope = context.getScope();
    +            Program(node) {
    +                globalScope = sourceCode.getScope(node);
                 },
     
                 Identifier(node) {
    diff --git a/tools/node_modules/eslint/lib/rules/id-denylist.js b/tools/node_modules/eslint/lib/rules/id-denylist.js
    index fe0a0b50bd2c48..0d9328137b2638 100644
    --- a/tools/node_modules/eslint/lib/rules/id-denylist.js
    +++ b/tools/node_modules/eslint/lib/rules/id-denylist.js
    @@ -121,6 +121,7 @@ module.exports = {
     
             const denyList = new Set(context.options);
             const reportedNodes = new Set();
    +        const sourceCode = context.getSourceCode();
     
             let globalScope;
     
    @@ -210,8 +211,8 @@ module.exports = {
     
             return {
     
    -            Program() {
    -                globalScope = context.getScope();
    +            Program(node) {
    +                globalScope = sourceCode.getScope(node);
                 },
     
                 [[
    diff --git a/tools/node_modules/eslint/lib/rules/id-match.js b/tools/node_modules/eslint/lib/rules/id-match.js
    index ec87af18d5b767..73a3bd2f97e16d 100644
    --- a/tools/node_modules/eslint/lib/rules/id-match.js
    +++ b/tools/node_modules/eslint/lib/rules/id-match.js
    @@ -67,6 +67,7 @@ module.exports = {
                 onlyDeclarations = !!options.onlyDeclarations,
                 ignoreDestructuring = !!options.ignoreDestructuring;
     
    +        const sourceCode = context.getSourceCode();
             let globalScope;
     
             //--------------------------------------------------------------------------
    @@ -170,8 +171,8 @@ module.exports = {
     
             return {
     
    -            Program() {
    -                globalScope = context.getScope();
    +            Program(node) {
    +                globalScope = sourceCode.getScope(node);
                 },
     
                 Identifier(node) {
    diff --git a/tools/node_modules/eslint/lib/rules/logical-assignment-operators.js b/tools/node_modules/eslint/lib/rules/logical-assignment-operators.js
    index cd533e63a732c7..f1c0119d99f56a 100644
    --- a/tools/node_modules/eslint/lib/rules/logical-assignment-operators.js
    +++ b/tools/node_modules/eslint/lib/rules/logical-assignment-operators.js
    @@ -159,7 +159,7 @@ module.exports = {
             type: "suggestion",
     
             docs: {
    -            description: "Require or disallow logical assignment logical operator shorthand",
    +            description: "Require or disallow logical assignment operator shorthand",
                 recommended: false,
                 url: "https://eslint.org/docs/rules/logical-assignment-operators"
             },
    @@ -206,7 +206,7 @@ module.exports = {
             const mode = context.options[0] === "never" ? "never" : "always";
             const checkIf = mode === "always" && context.options.length > 1 && context.options[1].enforceForIfStatements;
             const sourceCode = context.getSourceCode();
    -        const isStrict = context.getScope().isStrict;
    +        const isStrict = sourceCode.getScope(sourceCode.ast).isStrict;
     
             /**
              * Returns false if the access could be a getter
    @@ -409,7 +409,7 @@ module.exports = {
                     }
     
                     const body = hasBody ? ifNode.consequent.body[0] : ifNode.consequent;
    -                const scope = context.getScope();
    +                const scope = sourceCode.getScope(ifNode);
                     const existence = getExistence(ifNode.test, scope);
     
                     if (
    diff --git a/tools/node_modules/eslint/lib/rules/no-alert.js b/tools/node_modules/eslint/lib/rules/no-alert.js
    index ba0125c877b030..8af188971c5562 100644
    --- a/tools/node_modules/eslint/lib/rules/no-alert.js
    +++ b/tools/node_modules/eslint/lib/rules/no-alert.js
    @@ -101,10 +101,12 @@ module.exports = {
         },
     
         create(context) {
    +        const sourceCode = context.getSourceCode();
    +
             return {
                 CallExpression(node) {
                     const callee = skipChainExpression(node.callee),
    -                    currentScope = context.getScope();
    +                    currentScope = sourceCode.getScope(node);
     
                     // without window.
                     if (callee.type === "Identifier") {
    diff --git a/tools/node_modules/eslint/lib/rules/no-catch-shadow.js b/tools/node_modules/eslint/lib/rules/no-catch-shadow.js
    index 49f1ba9649b7e9..5e8b51e092dd53 100644
    --- a/tools/node_modules/eslint/lib/rules/no-catch-shadow.js
    +++ b/tools/node_modules/eslint/lib/rules/no-catch-shadow.js
    @@ -39,6 +39,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             //--------------------------------------------------------------------------
             // Helpers
             //--------------------------------------------------------------------------
    @@ -60,7 +62,7 @@ module.exports = {
             return {
     
                 "CatchClause[param!=null]"(node) {
    -                let scope = context.getScope();
    +                let scope = sourceCode.getScope(node);
     
                     /*
                      * When ecmaVersion >= 6, CatchClause creates its own scope
    diff --git a/tools/node_modules/eslint/lib/rules/no-console.js b/tools/node_modules/eslint/lib/rules/no-console.js
    index bad6b6f4ee8295..4651282214d6fa 100644
    --- a/tools/node_modules/eslint/lib/rules/no-console.js
    +++ b/tools/node_modules/eslint/lib/rules/no-console.js
    @@ -51,6 +51,7 @@ module.exports = {
         create(context) {
             const options = context.options[0] || {};
             const allowed = options.allow || [];
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Checks whether the given reference is 'console' or not.
    @@ -109,8 +110,8 @@ module.exports = {
             }
     
             return {
    -            "Program:exit"() {
    -                const scope = context.getScope();
    +            "Program:exit"(node) {
    +                const scope = sourceCode.getScope(node);
                     const consoleVar = astUtils.getVariableByName(scope, "console");
                     const shadowed = consoleVar && consoleVar.defs.length > 0;
     
    diff --git a/tools/node_modules/eslint/lib/rules/no-constant-binary-expression.js b/tools/node_modules/eslint/lib/rules/no-constant-binary-expression.js
    index 2cd8928ebfb5b7..4b2337b4771d8a 100644
    --- a/tools/node_modules/eslint/lib/rules/no-constant-binary-expression.js
    +++ b/tools/node_modules/eslint/lib/rules/no-constant-binary-expression.js
    @@ -453,10 +453,12 @@ module.exports = {
         },
     
         create(context) {
    +        const sourceCode = context.getSourceCode();
    +
             return {
                 LogicalExpression(node) {
                     const { operator, left } = node;
    -                const scope = context.getScope();
    +                const scope = sourceCode.getScope(node);
     
                     if ((operator === "&&" || operator === "||") && isConstant(scope, left, true)) {
                         context.report({ node: left, messageId: "constantShortCircuit", data: { property: "truthiness", operator } });
    @@ -465,7 +467,7 @@ module.exports = {
                     }
                 },
                 BinaryExpression(node) {
    -                const scope = context.getScope();
    +                const scope = sourceCode.getScope(node);
                     const { right, left, operator } = node;
                     const rightConstantOperand = findBinaryExpressionConstantOperand(scope, left, right, operator);
                     const leftConstantOperand = findBinaryExpressionConstantOperand(scope, right, left, operator);
    diff --git a/tools/node_modules/eslint/lib/rules/no-constant-condition.js b/tools/node_modules/eslint/lib/rules/no-constant-condition.js
    index 2ef687f6dca7eb..de548472b7d006 100644
    --- a/tools/node_modules/eslint/lib/rules/no-constant-condition.js
    +++ b/tools/node_modules/eslint/lib/rules/no-constant-condition.js
    @@ -48,6 +48,7 @@ module.exports = {
             const options = context.options[0] || {},
                 checkLoops = options.checkLoops !== false,
                 loopSetStack = [];
    +        const sourceCode = context.getSourceCode();
     
             let loopsInCurrentScope = new Set();
     
    @@ -62,7 +63,7 @@ module.exports = {
              * @private
              */
             function trackConstantConditionLoop(node) {
    -            if (node.test && isConstant(context.getScope(), node.test, true)) {
    +            if (node.test && isConstant(sourceCode.getScope(node), node.test, true)) {
                     loopsInCurrentScope.add(node);
                 }
             }
    @@ -87,7 +88,7 @@ module.exports = {
              * @private
              */
             function reportIfConstant(node) {
    -            if (node.test && isConstant(context.getScope(), node.test, true)) {
    +            if (node.test && isConstant(sourceCode.getScope(node), node.test, true)) {
                     context.report({ node: node.test, messageId: "unexpected" });
                 }
             }
    diff --git a/tools/node_modules/eslint/lib/rules/no-else-return.js b/tools/node_modules/eslint/lib/rules/no-else-return.js
    index f3ceedb4cd7ff8..56234d54d3b8e8 100644
    --- a/tools/node_modules/eslint/lib/rules/no-else-return.js
    +++ b/tools/node_modules/eslint/lib/rules/no-else-return.js
    @@ -47,6 +47,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             //--------------------------------------------------------------------------
             // Helpers
             //--------------------------------------------------------------------------
    @@ -169,25 +171,24 @@ module.exports = {
     
             /**
              * Display the context report if rule is violated
    -         * @param {Node} node The 'else' node
    +         * @param {Node} elseNode The 'else' node
              * @returns {void}
              */
    -        function displayReport(node) {
    -            const currentScope = context.getScope();
    +        function displayReport(elseNode) {
    +            const currentScope = sourceCode.getScope(elseNode.parent);
     
                 context.report({
    -                node,
    +                node: elseNode,
                     messageId: "unexpected",
                     fix(fixer) {
     
    -                    if (!isSafeFromNameCollisions(node, currentScope)) {
    +                    if (!isSafeFromNameCollisions(elseNode, currentScope)) {
                             return null;
                         }
     
    -                    const sourceCode = context.getSourceCode();
    -                    const startToken = sourceCode.getFirstToken(node);
    +                    const startToken = sourceCode.getFirstToken(elseNode);
                         const elseToken = sourceCode.getTokenBefore(startToken);
    -                    const source = sourceCode.getText(node);
    +                    const source = sourceCode.getText(elseNode);
                         const lastIfToken = sourceCode.getTokenBefore(elseToken);
                         let fixedSource, firstTokenOfElseBlock;
     
    @@ -203,14 +204,14 @@ module.exports = {
                          * safe to remove the else keyword, because ASI will not add a semicolon
                          * after the if block
                          */
    -                    const ifBlockMaybeUnsafe = node.parent.consequent.type !== "BlockStatement" && lastIfToken.value !== ";";
    +                    const ifBlockMaybeUnsafe = elseNode.parent.consequent.type !== "BlockStatement" && lastIfToken.value !== ";";
                         const elseBlockUnsafe = /^[([/+`-]/u.test(firstTokenOfElseBlock.value);
     
                         if (ifBlockMaybeUnsafe && elseBlockUnsafe) {
                             return null;
                         }
     
    -                    const endToken = sourceCode.getLastToken(node);
    +                    const endToken = sourceCode.getLastToken(elseNode);
                         const lastTokenOfElseBlock = sourceCode.getTokenBefore(endToken);
     
                         if (lastTokenOfElseBlock.value !== ";") {
    @@ -244,8 +245,8 @@ module.exports = {
                          * Also, to avoid name collisions between two else blocks.
                          */
                         return new FixTracker(fixer, sourceCode)
    -                        .retainEnclosingFunction(node)
    -                        .replaceTextRange([elseToken.range[0], node.range[1]], fixedSource);
    +                        .retainEnclosingFunction(elseNode)
    +                        .replaceTextRange([elseToken.range[0], elseNode.range[1]], fixedSource);
                     }
                 });
             }
    diff --git a/tools/node_modules/eslint/lib/rules/no-eval.js b/tools/node_modules/eslint/lib/rules/no-eval.js
    index a1b32cc307bd97..76d6859ab5d2b0 100644
    --- a/tools/node_modules/eslint/lib/rules/no-eval.js
    +++ b/tools/node_modules/eslint/lib/rules/no-eval.js
    @@ -84,7 +84,7 @@ module.exports = {
              * @returns {void}
              */
             function enterThisScope(node) {
    -            const strict = context.getScope().isStrict;
    +            const strict = sourceCode.getScope(node).isStrict;
     
                 funcInfo = {
                     upper: funcInfo,
    @@ -221,7 +221,7 @@ module.exports = {
                 },
     
                 Program(node) {
    -                const scope = context.getScope(),
    +                const scope = sourceCode.getScope(node),
                         features = context.parserOptions.ecmaFeatures || {},
                         strict =
                             scope.isStrict ||
    @@ -239,8 +239,8 @@ module.exports = {
                     };
                 },
     
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     exitThisScope();
                     reportAccessingEval(globalScope);
    diff --git a/tools/node_modules/eslint/lib/rules/no-extend-native.js b/tools/node_modules/eslint/lib/rules/no-extend-native.js
    index 52c6bd3110331e..b1965964394367 100644
    --- a/tools/node_modules/eslint/lib/rules/no-extend-native.js
    +++ b/tools/node_modules/eslint/lib/rules/no-extend-native.js
    @@ -51,6 +51,7 @@ module.exports = {
         create(context) {
     
             const config = context.options[0] || {};
    +        const sourceCode = context.getSourceCode();
             const exceptions = new Set(config.exceptions || []);
             const modifiedBuiltins = new Set(
                 Object.keys(globals.builtin)
    @@ -159,8 +160,8 @@ module.exports = {
     
             return {
     
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     modifiedBuiltins.forEach(builtin => {
                         const builtinVar = globalScope.set.get(builtin);
    diff --git a/tools/node_modules/eslint/lib/rules/no-global-assign.js b/tools/node_modules/eslint/lib/rules/no-global-assign.js
    index 9f2f0ee3642f47..4659dcc94c1cc4 100644
    --- a/tools/node_modules/eslint/lib/rules/no-global-assign.js
    +++ b/tools/node_modules/eslint/lib/rules/no-global-assign.js
    @@ -41,6 +41,7 @@ module.exports = {
     
         create(context) {
             const config = context.options[0];
    +        const sourceCode = context.getSourceCode();
             const exceptions = (config && config.exceptions) || [];
     
             /**
    @@ -84,8 +85,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                const globalScope = context.getScope();
    +            Program(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     globalScope.variables.forEach(checkVariable);
                 }
    diff --git a/tools/node_modules/eslint/lib/rules/no-implicit-globals.js b/tools/node_modules/eslint/lib/rules/no-implicit-globals.js
    index c2cdd03f2ce83c..de9c4c274d488c 100644
    --- a/tools/node_modules/eslint/lib/rules/no-implicit-globals.js
    +++ b/tools/node_modules/eslint/lib/rules/no-implicit-globals.js
    @@ -43,6 +43,7 @@ module.exports = {
         create(context) {
     
             const checkLexicalBindings = context.options[0] && context.options[0].lexicalBindings === true;
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Reports the node.
    @@ -62,8 +63,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
     
                     scope.variables.forEach(variable => {
     
    diff --git a/tools/node_modules/eslint/lib/rules/no-implied-eval.js b/tools/node_modules/eslint/lib/rules/no-implied-eval.js
    index c33b05d465d43c..c99af2d3968a00 100644
    --- a/tools/node_modules/eslint/lib/rules/no-implied-eval.js
    +++ b/tools/node_modules/eslint/lib/rules/no-implied-eval.js
    @@ -37,6 +37,7 @@ module.exports = {
         create(context) {
             const GLOBAL_CANDIDATES = Object.freeze(["global", "window", "globalThis"]);
             const EVAL_LIKE_FUNC_PATTERN = /^(?:set(?:Interval|Timeout)|execScript)$/u;
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Checks whether a node is evaluated as a string or not.
    @@ -66,7 +67,7 @@ module.exports = {
     
                 if (firstArgument) {
     
    -                const staticValue = getStaticValue(firstArgument, context.getScope());
    +                const staticValue = getStaticValue(firstArgument, sourceCode.getScope(node));
                     const isStaticString = staticValue && typeof staticValue.value === "string";
                     const isString = isStaticString || isEvaluatedString(firstArgument);
     
    @@ -117,8 +118,8 @@ module.exports = {
                         reportImpliedEvalCallExpression(node);
                     }
                 },
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     GLOBAL_CANDIDATES
                         .map(candidate => astUtils.getVariableByName(globalScope, candidate))
    diff --git a/tools/node_modules/eslint/lib/rules/no-import-assign.js b/tools/node_modules/eslint/lib/rules/no-import-assign.js
    index 6cf2e519868ce8..dcfebaf631b564 100644
    --- a/tools/node_modules/eslint/lib/rules/no-import-assign.js
    +++ b/tools/node_modules/eslint/lib/rules/no-import-assign.js
    @@ -194,9 +194,11 @@ module.exports = {
         },
     
         create(context) {
    +        const sourceCode = context.getSourceCode();
    +
             return {
                 ImportDeclaration(node) {
    -                const scope = context.getScope();
    +                const scope = sourceCode.getScope(node);
     
                     for (const variable of context.getDeclaredVariables(node)) {
                         const shouldCheckMembers = variable.defs.some(
    diff --git a/tools/node_modules/eslint/lib/rules/no-invalid-this.js b/tools/node_modules/eslint/lib/rules/no-invalid-this.js
    index b9cb43af5d7c2d..1048f22861a085 100644
    --- a/tools/node_modules/eslint/lib/rules/no-invalid-this.js
    +++ b/tools/node_modules/eslint/lib/rules/no-invalid-this.js
    @@ -95,7 +95,7 @@ module.exports = {
                     }
     
                     if (codePath.origin === "program") {
    -                    const scope = context.getScope();
    +                    const scope = sourceCode.getScope(node);
                         const features = context.parserOptions.ecmaFeatures || {};
     
                         // `this` at the top level of scripts always refers to the global object
    @@ -120,7 +120,7 @@ module.exports = {
                      * always valid, so we can set `init: true` right away.
                      */
                     stack.push({
    -                    init: !context.getScope().isStrict,
    +                    init: !sourceCode.getScope(node).isStrict,
                         node,
                         valid: true
                     });
    diff --git a/tools/node_modules/eslint/lib/rules/no-label-var.js b/tools/node_modules/eslint/lib/rules/no-label-var.js
    index a07d283f522b5e..440d09d149d6fa 100644
    --- a/tools/node_modules/eslint/lib/rules/no-label-var.js
    +++ b/tools/node_modules/eslint/lib/rules/no-label-var.js
    @@ -34,6 +34,7 @@ module.exports = {
         },
     
         create(context) {
    +        const sourceCode = context.getSourceCode();
     
             //--------------------------------------------------------------------------
             // Helpers
    @@ -59,7 +60,7 @@ module.exports = {
                 LabeledStatement(node) {
     
                     // Fetch the innermost scope.
    -                const scope = context.getScope();
    +                const scope = sourceCode.getScope(node);
     
                     /*
                      * Recursively find the identifier walking up the scope, starting
    diff --git a/tools/node_modules/eslint/lib/rules/no-lone-blocks.js b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js
    index eb97f958c3c13e..23f581d3fc62a6 100644
    --- a/tools/node_modules/eslint/lib/rules/no-lone-blocks.js
    +++ b/tools/node_modules/eslint/lib/rules/no-lone-blocks.js
    @@ -33,6 +33,7 @@ module.exports = {
             // A stack of lone blocks to be checked for block-level bindings
             const loneBlocks = [];
             let ruleDef;
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Reports a node as invalid.
    @@ -120,8 +121,8 @@ module.exports = {
                     }
                 };
     
    -            ruleDef.FunctionDeclaration = function() {
    -                if (context.getScope().isStrict) {
    +            ruleDef.FunctionDeclaration = function(node) {
    +                if (sourceCode.getScope(node).isStrict) {
                         markLoneBlock();
                     }
                 };
    diff --git a/tools/node_modules/eslint/lib/rules/no-loop-func.js b/tools/node_modules/eslint/lib/rules/no-loop-func.js
    index f81a71336800a8..ff0668172261da 100644
    --- a/tools/node_modules/eslint/lib/rules/no-loop-func.js
    +++ b/tools/node_modules/eslint/lib/rules/no-loop-func.js
    @@ -168,6 +168,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             /**
              * Reports functions which match the following condition:
              *
    @@ -183,7 +185,7 @@ module.exports = {
                     return;
                 }
     
    -            const references = context.getScope().through;
    +            const references = sourceCode.getScope(node).through;
                 const unsafeRefs = references.filter(r => !isSafe(loopNode, r)).map(r => r.identifier.name);
     
                 if (unsafeRefs.length > 0) {
    diff --git a/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js b/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js
    index 9aa7079e538ba1..ddbcaefd549e59 100644
    --- a/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js
    +++ b/tools/node_modules/eslint/lib/rules/no-misleading-character-class.js
    @@ -4,16 +4,15 @@
     "use strict";
     
     const { CALL, CONSTRUCT, ReferenceTracker, getStringIfConstant } = require("@eslint-community/eslint-utils");
    -const { RegExpValidator, RegExpParser, visitRegExpAST } = require("@eslint-community/regexpp");
    +const { RegExpParser, visitRegExpAST } = require("@eslint-community/regexpp");
     const { isCombiningCharacter, isEmojiModifier, isRegionalIndicatorSymbol, isSurrogatePair } = require("./utils/unicode");
     const astUtils = require("./utils/ast-utils.js");
    +const { isValidWithUnicodeFlag } = require("./utils/regular-expressions");
     
     //------------------------------------------------------------------------------
     // Helpers
     //------------------------------------------------------------------------------
     
    -const REGEXPP_LATEST_ECMA_VERSION = 2022;
    -
     /**
      * Iterate character sequences of a given nodes.
      *
    @@ -185,46 +184,18 @@ module.exports = {
                 }
             }
     
    -        /**
    -         * Checks if the given regular expression pattern would be valid with the `u` flag.
    -         * @param {string} pattern The regular expression pattern to verify.
    -         * @returns {boolean} `true` if the pattern would be valid with the `u` flag.
    -         * `false` if the pattern would be invalid with the `u` flag or the configured
    -         * ecmaVersion doesn't support the `u` flag.
    -         */
    -        function isValidWithUnicodeFlag(pattern) {
    -            const { ecmaVersion } = context.languageOptions;
    -
    -            // ecmaVersion <= 5 doesn't support the 'u' flag
    -            if (ecmaVersion <= 5) {
    -                return false;
    -            }
    -
    -            const validator = new RegExpValidator({
    -                ecmaVersion: Math.min(ecmaVersion, REGEXPP_LATEST_ECMA_VERSION)
    -            });
    -
    -            try {
    -                validator.validatePattern(pattern, void 0, void 0, /* uFlag = */ true);
    -            } catch {
    -                return false;
    -            }
    -
    -            return true;
    -        }
    -
             return {
                 "Literal[regex]"(node) {
                     verify(node, node.regex.pattern, node.regex.flags, fixer => {
    -                    if (!isValidWithUnicodeFlag(node.regex.pattern)) {
    +                    if (!isValidWithUnicodeFlag(context.languageOptions.ecmaVersion, node.regex.pattern)) {
                             return null;
                         }
     
                         return fixer.insertTextAfter(node, "u");
                     });
                 },
    -            "Program"() {
    -                const scope = context.getScope();
    +            "Program"(node) {
    +                const scope = sourceCode.getScope(node);
                     const tracker = new ReferenceTracker(scope);
     
                     /*
    @@ -232,22 +203,22 @@ module.exports = {
                      * E.g., `new RegExp()`, `RegExp()`, `new window.RegExp()`,
                      *       `const {RegExp: a} = window; new a()`, etc...
                      */
    -                for (const { node } of tracker.iterateGlobalReferences({
    +                for (const { node: refNode } of tracker.iterateGlobalReferences({
                         RegExp: { [CALL]: true, [CONSTRUCT]: true }
                     })) {
    -                    const [patternNode, flagsNode] = node.arguments;
    +                    const [patternNode, flagsNode] = refNode.arguments;
                         const pattern = getStringIfConstant(patternNode, scope);
                         const flags = getStringIfConstant(flagsNode, scope);
     
                         if (typeof pattern === "string") {
    -                        verify(node, pattern, flags || "", fixer => {
    +                        verify(refNode, pattern, flags || "", fixer => {
     
    -                            if (!isValidWithUnicodeFlag(pattern)) {
    +                            if (!isValidWithUnicodeFlag(context.languageOptions.ecmaVersion, pattern)) {
                                     return null;
                                 }
     
    -                            if (node.arguments.length === 1) {
    -                                const penultimateToken = sourceCode.getLastToken(node, { skip: 1 }); // skip closing parenthesis
    +                            if (refNode.arguments.length === 1) {
    +                                const penultimateToken = sourceCode.getLastToken(refNode, { skip: 1 }); // skip closing parenthesis
     
                                     return fixer.insertTextAfter(
                                         penultimateToken,
    diff --git a/tools/node_modules/eslint/lib/rules/no-native-reassign.js b/tools/node_modules/eslint/lib/rules/no-native-reassign.js
    index 634fea93308d5e..27fd38ab86a9b0 100644
    --- a/tools/node_modules/eslint/lib/rules/no-native-reassign.js
    +++ b/tools/node_modules/eslint/lib/rules/no-native-reassign.js
    @@ -47,6 +47,7 @@ module.exports = {
         create(context) {
             const config = context.options[0];
             const exceptions = (config && config.exceptions) || [];
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Reports write references.
    @@ -87,8 +88,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                const globalScope = context.getScope();
    +            Program(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     globalScope.variables.forEach(checkVariable);
                 }
    diff --git a/tools/node_modules/eslint/lib/rules/no-new-func.js b/tools/node_modules/eslint/lib/rules/no-new-func.js
    index 4759f380b29f5e..4680ae5d7ca15b 100644
    --- a/tools/node_modules/eslint/lib/rules/no-new-func.js
    +++ b/tools/node_modules/eslint/lib/rules/no-new-func.js
    @@ -40,27 +40,28 @@ module.exports = {
         },
     
         create(context) {
    +        const sourceCode = context.getSourceCode();
     
             return {
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
                     const variable = globalScope.set.get("Function");
     
                     if (variable && variable.defs.length === 0) {
                         variable.references.forEach(ref => {
    -                        const node = ref.identifier;
    -                        const { parent } = node;
    +                        const idNode = ref.identifier;
    +                        const { parent } = idNode;
                             let evalNode;
     
                             if (parent) {
    -                            if (node === parent.callee && (
    +                            if (idNode === parent.callee && (
                                     parent.type === "NewExpression" ||
                                     parent.type === "CallExpression"
                                 )) {
                                     evalNode = parent;
                                 } else if (
                                     parent.type === "MemberExpression" &&
    -                                node === parent.object &&
    +                                idNode === parent.object &&
                                     callMethods.has(astUtils.getStaticPropertyName(parent))
                                 ) {
                                     const maybeCallee = parent.parent.type === "ChainExpression" ? parent.parent : parent;
    diff --git a/tools/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js b/tools/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js
    index a8405002b7fd06..05171c92b322bc 100644
    --- a/tools/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js
    +++ b/tools/node_modules/eslint/lib/rules/no-new-native-nonconstructor.js
    @@ -35,21 +35,23 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             return {
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     for (const nonConstructorName of nonConstructorGlobalFunctionNames) {
                         const variable = globalScope.set.get(nonConstructorName);
     
                         if (variable && variable.defs.length === 0) {
                             variable.references.forEach(ref => {
    -                            const node = ref.identifier;
    -                            const parent = node.parent;
    +                            const idNode = ref.identifier;
    +                            const parent = idNode.parent;
     
    -                            if (parent && parent.type === "NewExpression" && parent.callee === node) {
    +                            if (parent && parent.type === "NewExpression" && parent.callee === idNode) {
                                     context.report({
    -                                    node,
    +                                    node: idNode,
                                         messageId: "noNewNonconstructor",
                                         data: { name: nonConstructorName }
                                     });
    diff --git a/tools/node_modules/eslint/lib/rules/no-new-object.js b/tools/node_modules/eslint/lib/rules/no-new-object.js
    index 4dbe8db736503d..6351a279fa162f 100644
    --- a/tools/node_modules/eslint/lib/rules/no-new-object.js
    +++ b/tools/node_modules/eslint/lib/rules/no-new-object.js
    @@ -34,10 +34,13 @@ module.exports = {
         },
     
         create(context) {
    +
    +        const sourceCode = context.getSourceCode();
    +
             return {
                 NewExpression(node) {
                     const variable = astUtils.getVariableByName(
    -                    context.getScope(),
    +                    sourceCode.getScope(node),
                         node.callee.name
                     );
     
    diff --git a/tools/node_modules/eslint/lib/rules/no-new-symbol.js b/tools/node_modules/eslint/lib/rules/no-new-symbol.js
    index 534201c0ba662d..551f4a9a414bac 100644
    --- a/tools/node_modules/eslint/lib/rules/no-new-symbol.js
    +++ b/tools/node_modules/eslint/lib/rules/no-new-symbol.js
    @@ -29,19 +29,21 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             return {
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
                     const variable = globalScope.set.get("Symbol");
     
                     if (variable && variable.defs.length === 0) {
                         variable.references.forEach(ref => {
    -                        const node = ref.identifier;
    -                        const parent = node.parent;
    +                        const idNode = ref.identifier;
    +                        const parent = idNode.parent;
     
    -                        if (parent && parent.type === "NewExpression" && parent.callee === node) {
    +                        if (parent && parent.type === "NewExpression" && parent.callee === idNode) {
                                 context.report({
    -                                node,
    +                                node: idNode,
                                     messageId: "noNewSymbol"
                                 });
                             }
    diff --git a/tools/node_modules/eslint/lib/rules/no-obj-calls.js b/tools/node_modules/eslint/lib/rules/no-obj-calls.js
    index 2e2cb5b2460f16..40df43e1501bbe 100644
    --- a/tools/node_modules/eslint/lib/rules/no-obj-calls.js
    +++ b/tools/node_modules/eslint/lib/rules/no-obj-calls.js
    @@ -58,9 +58,11 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             return {
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
                     const tracker = new ReferenceTracker(scope);
                     const traceMap = {};
     
    @@ -71,12 +73,12 @@ module.exports = {
                         };
                     }
     
    -                for (const { node, path } of tracker.iterateGlobalReferences(traceMap)) {
    -                    const name = getReportNodeName(node.callee);
    +                for (const { node: refNode, path } of tracker.iterateGlobalReferences(traceMap)) {
    +                    const name = getReportNodeName(refNode.callee);
                         const ref = path[0];
                         const messageId = name === ref ? "unexpectedCall" : "unexpectedRefCall";
     
    -                    context.report({ node, messageId, data: { name, ref } });
    +                    context.report({ node: refNode, messageId, data: { name, ref } });
                     }
                 }
             };
    diff --git a/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js b/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js
    index e81ed1d04511da..2a99c6fe812047 100644
    --- a/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js
    +++ b/tools/node_modules/eslint/lib/rules/no-promise-executor-return.js
    @@ -84,6 +84,7 @@ module.exports = {
         create(context) {
     
             let funcInfo = null;
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Reports the given node.
    @@ -99,7 +100,7 @@ module.exports = {
                 onCodePathStart(_, node) {
                     funcInfo = {
                         upper: funcInfo,
    -                    shouldCheck: functionTypesToCheck.has(node.type) && isPromiseExecutor(node, context.getScope())
    +                    shouldCheck: functionTypesToCheck.has(node.type) && isPromiseExecutor(node, sourceCode.getScope(node))
                     };
     
                     if (funcInfo.shouldCheck && node.type === "ArrowFunctionExpression" && node.expression) {
    diff --git a/tools/node_modules/eslint/lib/rules/no-redeclare.js b/tools/node_modules/eslint/lib/rules/no-redeclare.js
    index 59749cb6643456..c16c030f9a1bac 100644
    --- a/tools/node_modules/eslint/lib/rules/no-redeclare.js
    +++ b/tools/node_modules/eslint/lib/rules/no-redeclare.js
    @@ -129,7 +129,7 @@ module.exports = {
              * @private
              */
             function checkForBlock(node) {
    -            const scope = context.getScope();
    +            const scope = sourceCode.getScope(node);
     
                 /*
                  * In ES5, some node type such as `BlockStatement` doesn't have that scope.
    @@ -141,8 +141,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
     
                     findVariablesInScope(scope);
     
    diff --git a/tools/node_modules/eslint/lib/rules/no-regex-spaces.js b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js
    index e6564bc4583252..48ee8c3d0246c0 100644
    --- a/tools/node_modules/eslint/lib/rules/no-regex-spaces.js
    +++ b/tools/node_modules/eslint/lib/rules/no-regex-spaces.js
    @@ -54,6 +54,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             /**
              * Validate regular expression
              * @param {ASTNode} nodeToReport Node to report.
    @@ -149,7 +151,7 @@ module.exports = {
              * @private
              */
             function checkFunction(node) {
    -            const scope = context.getScope();
    +            const scope = sourceCode.getScope(node);
                 const regExpVar = astUtils.getVariableByName(scope, "RegExp");
                 const shadowed = regExpVar && regExpVar.defs.length > 0;
                 const patternNode = node.arguments[0];
    diff --git a/tools/node_modules/eslint/lib/rules/no-restricted-globals.js b/tools/node_modules/eslint/lib/rules/no-restricted-globals.js
    index b666238382dec8..ffc39c801f032f 100644
    --- a/tools/node_modules/eslint/lib/rules/no-restricted-globals.js
    +++ b/tools/node_modules/eslint/lib/rules/no-restricted-globals.js
    @@ -50,6 +50,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             // If no globals are restricted, we don't need to do anything
             if (context.options.length === 0) {
                 return {};
    @@ -99,8 +101,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
     
                     // Report variables declared elsewhere (ex: variables defined as "global" by eslint)
                     scope.variables.forEach(variable => {
    diff --git a/tools/node_modules/eslint/lib/rules/no-setter-return.js b/tools/node_modules/eslint/lib/rules/no-setter-return.js
    index a43637e7b55101..46969d6dd704f5 100644
    --- a/tools/node_modules/eslint/lib/rules/no-setter-return.js
    +++ b/tools/node_modules/eslint/lib/rules/no-setter-return.js
    @@ -156,6 +156,7 @@ module.exports = {
     
         create(context) {
             let funcInfo = null;
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Creates and pushes to the stack a function info object for the given function node.
    @@ -163,7 +164,7 @@ module.exports = {
              * @returns {void}
              */
             function enterFunction(node) {
    -            const outerScope = getOuterScope(context.getScope());
    +            const outerScope = getOuterScope(sourceCode.getScope(node));
     
                 funcInfo = {
                     upper: funcInfo,
    diff --git a/tools/node_modules/eslint/lib/rules/no-shadow.js b/tools/node_modules/eslint/lib/rules/no-shadow.js
    index 3af9354ebd7de1..dda9f5fd7beaa4 100644
    --- a/tools/node_modules/eslint/lib/rules/no-shadow.js
    +++ b/tools/node_modules/eslint/lib/rules/no-shadow.js
    @@ -67,6 +67,7 @@ module.exports = {
                 allow: (context.options[0] && context.options[0].allow) || [],
                 ignoreOnInitialization: context.options[0] && context.options[0].ignoreOnInitialization
             };
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Checks whether or not a given location is inside of the range of a given node.
    @@ -318,8 +319,8 @@ module.exports = {
             }
     
             return {
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
                     const stack = globalScope.childScopes.slice();
     
                     while (stack.length) {
    diff --git a/tools/node_modules/eslint/lib/rules/no-undef-init.js b/tools/node_modules/eslint/lib/rules/no-undef-init.js
    index 2cb1c3f3710169..6e8a1fad72ad8a 100644
    --- a/tools/node_modules/eslint/lib/rules/no-undef-init.js
    +++ b/tools/node_modules/eslint/lib/rules/no-undef-init.js
    @@ -39,7 +39,7 @@ module.exports = {
                 VariableDeclarator(node) {
                     const name = sourceCode.getText(node.id),
                         init = node.init && node.init.name,
    -                    scope = context.getScope(),
    +                    scope = sourceCode.getScope(node),
                         undefinedVar = astUtils.getVariableByName(scope, "undefined"),
                         shadowed = undefinedVar && undefinedVar.defs.length > 0,
                         lastToken = sourceCode.getLastToken(node);
    diff --git a/tools/node_modules/eslint/lib/rules/no-undef.js b/tools/node_modules/eslint/lib/rules/no-undef.js
    index e920ce6c28885f..4cd3fa9b679145 100644
    --- a/tools/node_modules/eslint/lib/rules/no-undef.js
    +++ b/tools/node_modules/eslint/lib/rules/no-undef.js
    @@ -54,10 +54,11 @@ module.exports = {
         create(context) {
             const options = context.options[0];
             const considerTypeOf = options && options.typeof === true || false;
    +        const sourceCode = context.getSourceCode();
     
             return {
    -            "Program:exit"(/* node */) {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     globalScope.through.forEach(ref => {
                         const identifier = ref.identifier;
    diff --git a/tools/node_modules/eslint/lib/rules/no-undefined.js b/tools/node_modules/eslint/lib/rules/no-undefined.js
    index e006320b522369..7203894c39774e 100644
    --- a/tools/node_modules/eslint/lib/rules/no-undefined.js
    +++ b/tools/node_modules/eslint/lib/rules/no-undefined.js
    @@ -28,6 +28,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             /**
              * Report an invalid "undefined" identifier node.
              * @param {ASTNode} node The node to report.
    @@ -66,8 +68,8 @@ module.exports = {
             }
     
             return {
    -            "Program:exit"() {
    -                const globalScope = context.getScope();
    +            "Program:exit"(node) {
    +                const globalScope = sourceCode.getScope(node);
     
                     const stack = [globalScope];
     
    diff --git a/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js b/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js
    index 12f61e98e6a1c0..3df0a7d87df154 100644
    --- a/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js
    +++ b/tools/node_modules/eslint/lib/rules/no-unmodified-loop-condition.js
    @@ -340,8 +340,8 @@ module.exports = {
             }
     
             return {
    -            "Program:exit"() {
    -                const queue = [context.getScope()];
    +            "Program:exit"(node) {
    +                const queue = [sourceCode.getScope(node)];
     
                     groupMap = new Map();
     
    diff --git a/tools/node_modules/eslint/lib/rules/no-unused-vars.js b/tools/node_modules/eslint/lib/rules/no-unused-vars.js
    index 778889a7676f97..79f972f4b042af 100644
    --- a/tools/node_modules/eslint/lib/rules/no-unused-vars.js
    +++ b/tools/node_modules/eslint/lib/rules/no-unused-vars.js
    @@ -673,7 +673,7 @@ module.exports = {
     
             return {
                 "Program:exit"(programNode) {
    -                const unusedVars = collectUnusedVariables(context.getScope(), []);
    +                const unusedVars = collectUnusedVariables(sourceCode.getScope(programNode), []);
     
                     for (let i = 0, l = unusedVars.length; i < l; ++i) {
                         const unusedVar = unusedVars[i];
    diff --git a/tools/node_modules/eslint/lib/rules/no-use-before-define.js b/tools/node_modules/eslint/lib/rules/no-use-before-define.js
    index 5fd25940128f49..60cb905b0d64dd 100644
    --- a/tools/node_modules/eslint/lib/rules/no-use-before-define.js
    +++ b/tools/node_modules/eslint/lib/rules/no-use-before-define.js
    @@ -258,6 +258,7 @@ module.exports = {
     
         create(context) {
             const options = parseOptions(context.options[0]);
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Determines whether a given reference should be checked.
    @@ -339,8 +340,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                checkReferencesInScope(context.getScope());
    +            Program(node) {
    +                checkReferencesInScope(sourceCode.getScope(node));
                 }
             };
         }
    diff --git a/tools/node_modules/eslint/lib/rules/no-useless-backreference.js b/tools/node_modules/eslint/lib/rules/no-useless-backreference.js
    index 5103e098b1483d..bef1bee11f9342 100644
    --- a/tools/node_modules/eslint/lib/rules/no-useless-backreference.js
    +++ b/tools/node_modules/eslint/lib/rules/no-useless-backreference.js
    @@ -82,6 +82,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             /**
              * Checks and reports useless backreferences in the given regular expression.
              * @param {ASTNode} node Node that represents regular expression. A regex literal or RegExp constructor call.
    @@ -167,8 +169,8 @@ module.exports = {
     
                     checkRegex(node, pattern, flags);
                 },
    -            Program() {
    -                const scope = context.getScope(),
    +            Program(node) {
    +                const scope = sourceCode.getScope(node),
                         tracker = new ReferenceTracker(scope),
                         traceMap = {
                             RegExp: {
    @@ -177,13 +179,13 @@ module.exports = {
                             }
                         };
     
    -                for (const { node } of tracker.iterateGlobalReferences(traceMap)) {
    -                    const [patternNode, flagsNode] = node.arguments,
    +                for (const { node: refNode } of tracker.iterateGlobalReferences(traceMap)) {
    +                    const [patternNode, flagsNode] = refNode.arguments,
                             pattern = getStringIfConstant(patternNode, scope),
                             flags = getStringIfConstant(flagsNode, scope);
     
                         if (typeof pattern === "string") {
    -                        checkRegex(node, pattern, flags || "");
    +                        checkRegex(refNode, pattern, flags || "");
                         }
                     }
                 }
    diff --git a/tools/node_modules/eslint/lib/rules/object-shorthand.js b/tools/node_modules/eslint/lib/rules/object-shorthand.js
    index b755aea3f48427..64a506ba6cccf6 100644
    --- a/tools/node_modules/eslint/lib/rules/object-shorthand.js
    +++ b/tools/node_modules/eslint/lib/rules/object-shorthand.js
    @@ -354,11 +354,12 @@ module.exports = {
             /**
              * Enters a function. This creates a new lexical identifier scope, so a new Set of arrow functions is pushed onto the stack.
              * Also, this marks all `arguments` identifiers so that they can be detected later.
    +         * @param {ASTNode} node The node representing the function.
              * @returns {void}
              */
    -        function enterFunction() {
    +        function enterFunction(node) {
                 lexicalScopeStack.unshift(new Set());
    -            context.getScope().variables.filter(variable => variable.name === "arguments").forEach(variable => {
    +            sourceCode.getScope(node).variables.filter(variable => variable.name === "arguments").forEach(variable => {
                     variable.references.map(ref => ref.identifier).forEach(identifier => argumentsIdentifiers.add(identifier));
                 });
             }
    diff --git a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
    index 340e5e35a11cc9..68c630e0a98e56 100644
    --- a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
    +++ b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js
    @@ -270,7 +270,7 @@ module.exports = {
                     }
     
                     // Skip if it's using arguments.
    -                const variable = getVariableOfArguments(context.getScope());
    +                const variable = getVariableOfArguments(sourceCode.getScope(node));
     
                     if (variable && variable.references.length > 0) {
                         return;
    diff --git a/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js b/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js
    index 06459e25884e9c..a0eac79be1093e 100644
    --- a/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js
    +++ b/tools/node_modules/eslint/lib/rules/prefer-exponentiation-operator.js
    @@ -172,8 +172,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
                     const tracker = new ReferenceTracker(scope);
                     const trackMap = {
                         Math: {
    @@ -181,8 +181,8 @@ module.exports = {
                         }
                     };
     
    -                for (const { node } of tracker.iterateGlobalReferences(trackMap)) {
    -                    report(node);
    +                for (const { node: refNode } of tracker.iterateGlobalReferences(trackMap)) {
    +                    report(refNode);
                     }
                 }
             };
    diff --git a/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js b/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js
    index b7055f3a4c5609..4fbf6886f27d99 100644
    --- a/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js
    +++ b/tools/node_modules/eslint/lib/rules/prefer-named-capture-group.js
    @@ -151,8 +151,8 @@ module.exports = {
                         checkRegex(node.regex.pattern, node, node, node.regex.flags.includes("u"));
                     }
                 },
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
                     const tracker = new ReferenceTracker(scope);
                     const traceMap = {
                         RegExp: {
    @@ -161,12 +161,12 @@ module.exports = {
                         }
                     };
     
    -                for (const { node } of tracker.iterateGlobalReferences(traceMap)) {
    -                    const regex = getStringIfConstant(node.arguments[0]);
    -                    const flags = getStringIfConstant(node.arguments[1]);
    +                for (const { node: refNode } of tracker.iterateGlobalReferences(traceMap)) {
    +                    const regex = getStringIfConstant(refNode.arguments[0]);
    +                    const flags = getStringIfConstant(refNode.arguments[1]);
     
                         if (regex) {
    -                        checkRegex(regex, node, node.arguments[0], flags && flags.includes("u"));
    +                        checkRegex(regex, refNode, refNode.arguments[0], flags && flags.includes("u"));
                         }
                     }
                 }
    diff --git a/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js b/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js
    index 023d0a64f4c5b7..55eba59d6ac12d 100644
    --- a/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js
    +++ b/tools/node_modules/eslint/lib/rules/prefer-object-has-own.js
    @@ -61,6 +61,9 @@ module.exports = {
             fixable: "code"
         },
         create(context) {
    +
    +        const sourceCode = context.getSourceCode();
    +
             return {
                 CallExpression(node) {
                     if (!(node.callee.type === "MemberExpression" && node.callee.object.type === "MemberExpression")) {
    @@ -72,7 +75,7 @@ module.exports = {
                     const isObject = hasLeftHandObject(node.callee.object);
     
                     // check `Object` scope
    -                const scope = context.getScope();
    +                const scope = sourceCode.getScope(node);
                     const variable = astUtils.getVariableByName(scope, "Object");
     
                     if (
    @@ -85,7 +88,6 @@ module.exports = {
                             node,
                             messageId: "useHasOwn",
                             fix(fixer) {
    -                            const sourceCode = context.getSourceCode();
     
                                 if (sourceCode.getCommentsInside(node.callee).length > 0) {
                                     return null;
    diff --git a/tools/node_modules/eslint/lib/rules/prefer-object-spread.js b/tools/node_modules/eslint/lib/rules/prefer-object-spread.js
    index b70ef64bdedfad..f574d2aadc8546 100644
    --- a/tools/node_modules/eslint/lib/rules/prefer-object-spread.js
    +++ b/tools/node_modules/eslint/lib/rules/prefer-object-spread.js
    @@ -265,8 +265,8 @@ module.exports = {
             const sourceCode = context.getSourceCode();
     
             return {
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
                     const tracker = new ReferenceTracker(scope);
                     const trackMap = {
                         Object: {
    @@ -275,22 +275,22 @@ module.exports = {
                     };
     
                     // Iterate all calls of `Object.assign` (only of the global variable `Object`).
    -                for (const { node } of tracker.iterateGlobalReferences(trackMap)) {
    +                for (const { node: refNode } of tracker.iterateGlobalReferences(trackMap)) {
                         if (
    -                        node.arguments.length >= 1 &&
    -                        node.arguments[0].type === "ObjectExpression" &&
    -                        !hasArraySpread(node) &&
    +                        refNode.arguments.length >= 1 &&
    +                        refNode.arguments[0].type === "ObjectExpression" &&
    +                        !hasArraySpread(refNode) &&
                             !(
    -                            node.arguments.length > 1 &&
    -                            hasArgumentsWithAccessors(node)
    +                            refNode.arguments.length > 1 &&
    +                            hasArgumentsWithAccessors(refNode)
                             )
                         ) {
    -                        const messageId = node.arguments.length === 1
    +                        const messageId = refNode.arguments.length === 1
                                 ? "useLiteralMessage"
                                 : "useSpreadMessage";
    -                        const fix = defineFixer(node, sourceCode);
    +                        const fix = defineFixer(refNode, sourceCode);
     
    -                        context.report({ node, messageId, fix });
    +                        context.report({ node: refNode, messageId, fix });
                         }
                     }
                 }
    diff --git a/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js b/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js
    index c9948658cb1392..94b52155ee2039 100644
    --- a/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js
    +++ b/tools/node_modules/eslint/lib/rules/prefer-regex-literals.js
    @@ -13,13 +13,12 @@ const astUtils = require("./utils/ast-utils");
     const { CALL, CONSTRUCT, ReferenceTracker, findVariable } = require("@eslint-community/eslint-utils");
     const { RegExpValidator, visitRegExpAST, RegExpParser } = require("@eslint-community/regexpp");
     const { canTokensBeAdjacent } = require("./utils/ast-utils");
    +const { REGEXPP_LATEST_ECMA_VERSION } = require("./utils/regular-expressions");
     
     //------------------------------------------------------------------------------
     // Helpers
     //------------------------------------------------------------------------------
     
    -const REGEXPP_LATEST_ECMA_VERSION = 2022;
    -
     /**
      * Determines whether the given node is a string literal.
      * @param {ASTNode} node Node to check.
    @@ -163,7 +162,7 @@ module.exports = {
              * @returns {boolean} True if the identifier is a reference to a global variable.
              */
             function isGlobalReference(node) {
    -            const scope = context.getScope();
    +            const scope = sourceCode.getScope(node);
                 const variable = findVariable(scope, node);
     
                 return variable !== null && variable.scope.type === "global" && variable.defs.length === 0;
    @@ -375,8 +374,8 @@ module.exports = {
             }
     
             return {
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
                     const tracker = new ReferenceTracker(scope);
                     const traceMap = {
                         RegExp: {
    @@ -385,16 +384,16 @@ module.exports = {
                         }
                     };
     
    -                for (const { node } of tracker.iterateGlobalReferences(traceMap)) {
    -                    if (disallowRedundantWrapping && isUnnecessarilyWrappedRegexLiteral(node)) {
    -                        const regexNode = node.arguments[0];
    +                for (const { node: refNode } of tracker.iterateGlobalReferences(traceMap)) {
    +                    if (disallowRedundantWrapping && isUnnecessarilyWrappedRegexLiteral(refNode)) {
    +                        const regexNode = refNode.arguments[0];
     
    -                        if (node.arguments.length === 2) {
    +                        if (refNode.arguments.length === 2) {
                                 const suggests = [];
     
    -                            const argFlags = getStringValue(node.arguments[1]) || "";
    +                            const argFlags = getStringValue(refNode.arguments[1]) || "";
     
    -                            if (canFixTo(node, regexNode.regex.pattern, argFlags)) {
    +                            if (canFixTo(refNode, regexNode.regex.pattern, argFlags)) {
                                     suggests.push({
                                         messageId: "replaceWithLiteralAndFlags",
                                         pattern: regexNode.regex.pattern,
    @@ -407,7 +406,7 @@ module.exports = {
     
                                 if (
                                     !areFlagsEqual(mergedFlags, argFlags) &&
    -                                canFixTo(node, regexNode.regex.pattern, mergedFlags)
    +                                canFixTo(refNode, regexNode.regex.pattern, mergedFlags)
                                 ) {
                                     suggests.push({
                                         messageId: "replaceWithIntendedLiteralAndFlags",
    @@ -417,7 +416,7 @@ module.exports = {
                                 }
     
                                 context.report({
    -                                node,
    +                                node: refNode,
                                     messageId: "unexpectedRedundantRegExpWithFlags",
                                     suggest: suggests.map(({ flags, pattern, messageId }) => ({
                                         messageId,
    @@ -425,42 +424,42 @@ module.exports = {
                                             flags
                                         },
                                         fix(fixer) {
    -                                        return fixer.replaceText(node, getSafeOutput(node, `/${pattern}/${flags}`));
    +                                        return fixer.replaceText(refNode, getSafeOutput(refNode, `/${pattern}/${flags}`));
                                         }
                                     }))
                                 });
                             } else {
                                 const outputs = [];
     
    -                            if (canFixTo(node, regexNode.regex.pattern, regexNode.regex.flags)) {
    +                            if (canFixTo(refNode, regexNode.regex.pattern, regexNode.regex.flags)) {
                                     outputs.push(sourceCode.getText(regexNode));
                                 }
     
     
                                 context.report({
    -                                node,
    +                                node: refNode,
                                     messageId: "unexpectedRedundantRegExp",
                                     suggest: outputs.map(output => ({
                                         messageId: "replaceWithLiteral",
                                         fix(fixer) {
                                             return fixer.replaceText(
    -                                            node,
    -                                            getSafeOutput(node, output)
    +                                            refNode,
    +                                            getSafeOutput(refNode, output)
                                             );
                                         }
                                     }))
                                 });
                             }
    -                    } else if (hasOnlyStaticStringArguments(node)) {
    -                        let regexContent = getStringValue(node.arguments[0]);
    +                    } else if (hasOnlyStaticStringArguments(refNode)) {
    +                        let regexContent = getStringValue(refNode.arguments[0]);
                             let noFix = false;
                             let flags;
     
    -                        if (node.arguments[1]) {
    -                            flags = getStringValue(node.arguments[1]);
    +                        if (refNode.arguments[1]) {
    +                            flags = getStringValue(refNode.arguments[1]);
                             }
     
    -                        if (!canFixTo(node, regexContent, flags)) {
    +                        if (!canFixTo(refNode, regexContent, flags)) {
                                 noFix = true;
                             }
     
    @@ -494,12 +493,12 @@ module.exports = {
                             const newRegExpValue = `/${regexContent || "(?:)"}/${flags || ""}`;
     
                             context.report({
    -                            node,
    +                            node: refNode,
                                 messageId: "unexpectedRegExp",
                                 suggest: noFix ? [] : [{
                                     messageId: "replaceWithLiteral",
                                     fix(fixer) {
    -                                    return fixer.replaceText(node, getSafeOutput(node, newRegExpValue));
    +                                    return fixer.replaceText(refNode, getSafeOutput(refNode, newRegExpValue));
                                     }
                                 }]
                             });
    diff --git a/tools/node_modules/eslint/lib/rules/prefer-rest-params.js b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js
    index 14b9ae55a4b8bc..9c8f291bd5a809 100644
    --- a/tools/node_modules/eslint/lib/rules/prefer-rest-params.js
    +++ b/tools/node_modules/eslint/lib/rules/prefer-rest-params.js
    @@ -79,6 +79,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             /**
              * Reports a given reference.
              * @param {eslint-scope.Reference} reference A reference to report.
    @@ -94,10 +96,11 @@ module.exports = {
     
             /**
              * Reports references of the implicit `arguments` variable if exist.
    +         * @param {ASTNode} node The node representing the function.
              * @returns {void}
              */
    -        function checkForArguments() {
    -            const argumentsVar = getVariableOfArguments(context.getScope());
    +        function checkForArguments(node) {
    +            const argumentsVar = getVariableOfArguments(sourceCode.getScope(node));
     
                 if (argumentsVar) {
                     argumentsVar
    diff --git a/tools/node_modules/eslint/lib/rules/radix.js b/tools/node_modules/eslint/lib/rules/radix.js
    index 0618d9844ad295..4210c123a67b47 100644
    --- a/tools/node_modules/eslint/lib/rules/radix.js
    +++ b/tools/node_modules/eslint/lib/rules/radix.js
    @@ -104,6 +104,7 @@ module.exports = {
     
         create(context) {
             const mode = context.options[0] || MODE_ALWAYS;
    +        const sourceCode = context.getSourceCode();
     
             /**
              * Checks the arguments of a given CallExpression node and reports it if it
    @@ -131,7 +132,6 @@ module.exports = {
                                     {
                                         messageId: "addRadixParameter10",
                                         fix(fixer) {
    -                                        const sourceCode = context.getSourceCode();
                                             const tokens = sourceCode.getTokens(node);
                                             const lastToken = tokens[tokens.length - 1]; // Parenthesis.
                                             const secondToLastToken = tokens[tokens.length - 2]; // May or may not be a comma.
    @@ -162,18 +162,18 @@ module.exports = {
             }
     
             return {
    -            "Program:exit"() {
    -                const scope = context.getScope();
    +            "Program:exit"(node) {
    +                const scope = sourceCode.getScope(node);
                     let variable;
     
                     // Check `parseInt()`
                     variable = astUtils.getVariableByName(scope, "parseInt");
                     if (variable && !isShadowed(variable)) {
                         variable.references.forEach(reference => {
    -                        const node = reference.identifier;
    +                        const idNode = reference.identifier;
     
    -                        if (astUtils.isCallee(node)) {
    -                            checkArguments(node.parent);
    +                        if (astUtils.isCallee(idNode)) {
    +                            checkArguments(idNode.parent);
                             }
                         });
                     }
    @@ -182,12 +182,12 @@ module.exports = {
                     variable = astUtils.getVariableByName(scope, "Number");
                     if (variable && !isShadowed(variable)) {
                         variable.references.forEach(reference => {
    -                        const node = reference.identifier.parent;
    -                        const maybeCallee = node.parent.type === "ChainExpression"
    -                            ? node.parent
    -                            : node;
    +                        const parentNode = reference.identifier.parent;
    +                        const maybeCallee = parentNode.parent.type === "ChainExpression"
    +                            ? parentNode.parent
    +                            : parentNode;
     
    -                        if (isParseIntMethod(node) && astUtils.isCallee(maybeCallee)) {
    +                        if (isParseIntMethod(parentNode) && astUtils.isCallee(maybeCallee)) {
                                 checkArguments(maybeCallee.parent);
                             }
                         });
    diff --git a/tools/node_modules/eslint/lib/rules/require-atomic-updates.js b/tools/node_modules/eslint/lib/rules/require-atomic-updates.js
    index 7a5f822ab28c9a..4ed256a4a51751 100644
    --- a/tools/node_modules/eslint/lib/rules/require-atomic-updates.js
    +++ b/tools/node_modules/eslint/lib/rules/require-atomic-updates.js
    @@ -204,8 +204,8 @@ module.exports = {
             let stack = null;
     
             return {
    -            onCodePathStart(codePath) {
    -                const scope = context.getScope();
    +            onCodePathStart(codePath, node) {
    +                const scope = sourceCode.getScope(node);
                     const shouldVerify =
                         scope.type === "function" &&
                         (scope.block.async || scope.block.generator);
    diff --git a/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js b/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js
    index efac2519fe1d41..2fe1539cfcca7a 100644
    --- a/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js
    +++ b/tools/node_modules/eslint/lib/rules/require-unicode-regexp.js
    @@ -15,6 +15,8 @@ const {
         ReferenceTracker,
         getStringIfConstant
     } = require("@eslint-community/eslint-utils");
    +const astUtils = require("./utils/ast-utils.js");
    +const { isValidWithUnicodeFlag } = require("./utils/regular-expressions");
     
     //------------------------------------------------------------------------------
     // Rule Definition
    @@ -31,7 +33,10 @@ module.exports = {
                 url: "https://eslint.org/docs/rules/require-unicode-regexp"
             },
     
    +        hasSuggestions: true,
    +
             messages: {
    +            addUFlag: "Add the 'u' flag.",
                 requireUFlag: "Use the 'u' flag."
             },
     
    @@ -39,28 +44,79 @@ module.exports = {
         },
     
         create(context) {
    +
    +        const sourceCode = context.getSourceCode();
    +
             return {
                 "Literal[regex]"(node) {
                     const flags = node.regex.flags || "";
     
                     if (!flags.includes("u")) {
    -                    context.report({ node, messageId: "requireUFlag" });
    +                    context.report({
    +                        messageId: "requireUFlag",
    +                        node,
    +                        suggest: isValidWithUnicodeFlag(context.languageOptions.ecmaVersion, node.regex.pattern)
    +                            ? [
    +                                {
    +                                    fix(fixer) {
    +                                        return fixer.insertTextAfter(node, "u");
    +                                    },
    +                                    messageId: "addUFlag"
    +                                }
    +                            ]
    +                            : null
    +                    });
                     }
                 },
     
    -            Program() {
    -                const scope = context.getScope();
    +            Program(node) {
    +                const scope = sourceCode.getScope(node);
                     const tracker = new ReferenceTracker(scope);
                     const trackMap = {
                         RegExp: { [CALL]: true, [CONSTRUCT]: true }
                     };
     
    -                for (const { node } of tracker.iterateGlobalReferences(trackMap)) {
    -                    const flagsNode = node.arguments[1];
    +                for (const { node: refNode } of tracker.iterateGlobalReferences(trackMap)) {
    +                    const [patternNode, flagsNode] = refNode.arguments;
    +                    const pattern = getStringIfConstant(patternNode, scope);
                         const flags = getStringIfConstant(flagsNode, scope);
     
                         if (!flagsNode || (typeof flags === "string" && !flags.includes("u"))) {
    -                        context.report({ node, messageId: "requireUFlag" });
    +                        context.report({
    +                            messageId: "requireUFlag",
    +                            node: refNode,
    +                            suggest: typeof pattern === "string" && isValidWithUnicodeFlag(context.languageOptions.ecmaVersion, pattern)
    +                                ? [
    +                                    {
    +                                        fix(fixer) {
    +                                            if (flagsNode) {
    +                                                if ((flagsNode.type === "Literal" && typeof flagsNode.value === "string") || flagsNode.type === "TemplateLiteral") {
    +                                                    const flagsNodeText = sourceCode.getText(flagsNode);
    +
    +                                                    return fixer.replaceText(flagsNode, [
    +                                                        flagsNodeText.slice(0, flagsNodeText.length - 1),
    +                                                        flagsNodeText.slice(flagsNodeText.length - 1)
    +                                                    ].join("u"));
    +                                                }
    +
    +                                                // We intentionally don't suggest concatenating + "u" to non-literals
    +                                                return null;
    +                                            }
    +
    +                                            const penultimateToken = sourceCode.getLastToken(refNode, { skip: 1 }); // skip closing parenthesis
    +
    +                                            return fixer.insertTextAfter(
    +                                                penultimateToken,
    +                                                astUtils.isCommaToken(penultimateToken)
    +                                                    ? ' "u",'
    +                                                    : ', "u"'
    +                                            );
    +                                        },
    +                                        messageId: "addUFlag"
    +                                    }
    +                                ]
    +                                : null
    +                        });
                         }
                     }
                 }
    diff --git a/tools/node_modules/eslint/lib/rules/symbol-description.js b/tools/node_modules/eslint/lib/rules/symbol-description.js
    index 1c8a364986c8e2..e96a428ce1d11b 100644
    --- a/tools/node_modules/eslint/lib/rules/symbol-description.js
    +++ b/tools/node_modules/eslint/lib/rules/symbol-description.js
    @@ -35,6 +35,8 @@ module.exports = {
     
         create(context) {
     
    +        const sourceCode = context.getSourceCode();
    +
             /**
              * Reports if node does not conform the rule in case rule is set to
              * report missing description
    @@ -51,16 +53,16 @@ module.exports = {
             }
     
             return {
    -            "Program:exit"() {
    -                const scope = context.getScope();
    +            "Program:exit"(node) {
    +                const scope = sourceCode.getScope(node);
                     const variable = astUtils.getVariableByName(scope, "Symbol");
     
                     if (variable && variable.defs.length === 0) {
                         variable.references.forEach(reference => {
    -                        const node = reference.identifier;
    +                        const idNode = reference.identifier;
     
    -                        if (astUtils.isCallee(node)) {
    -                            checkArgument(node.parent);
    +                        if (astUtils.isCallee(idNode)) {
    +                            checkArgument(idNode.parent);
                             }
                         });
                     }
    diff --git a/tools/node_modules/eslint/lib/rules/utils/regular-expressions.js b/tools/node_modules/eslint/lib/rules/utils/regular-expressions.js
    new file mode 100644
    index 00000000000000..234a1cb8b1140b
    --- /dev/null
    +++ b/tools/node_modules/eslint/lib/rules/utils/regular-expressions.js
    @@ -0,0 +1,42 @@
    +/**
    + * @fileoverview Common utils for regular expressions.
    + * @author Josh Goldberg
    + * @author Toru Nagashima
    + */
    +
    +"use strict";
    +
    +const { RegExpValidator } = require("@eslint-community/regexpp");
    +
    +const REGEXPP_LATEST_ECMA_VERSION = 2022;
    +
    +/**
    + * Checks if the given regular expression pattern would be valid with the `u` flag.
    + * @param {number} ecmaVersion ECMAScript version to parse in.
    + * @param {string} pattern The regular expression pattern to verify.
    + * @returns {boolean} `true` if the pattern would be valid with the `u` flag.
    + * `false` if the pattern would be invalid with the `u` flag or the configured
    + * ecmaVersion doesn't support the `u` flag.
    + */
    +function isValidWithUnicodeFlag(ecmaVersion, pattern) {
    +    if (ecmaVersion <= 5) { // ecmaVersion <= 5 doesn't support the 'u' flag
    +        return false;
    +    }
    +
    +    const validator = new RegExpValidator({
    +        ecmaVersion: Math.min(ecmaVersion, REGEXPP_LATEST_ECMA_VERSION)
    +    });
    +
    +    try {
    +        validator.validatePattern(pattern, void 0, void 0, /* uFlag = */ true);
    +    } catch {
    +        return false;
    +    }
    +
    +    return true;
    +}
    +
    +module.exports = {
    +    isValidWithUnicodeFlag,
    +    REGEXPP_LATEST_ECMA_VERSION
    +};
    diff --git a/tools/node_modules/eslint/lib/rules/valid-typeof.js b/tools/node_modules/eslint/lib/rules/valid-typeof.js
    index 908d5725e224c6..6ba5d466118fd9 100644
    --- a/tools/node_modules/eslint/lib/rules/valid-typeof.js
    +++ b/tools/node_modules/eslint/lib/rules/valid-typeof.js
    @@ -44,7 +44,7 @@ module.exports = {
     
             const VALID_TYPES = new Set(["symbol", "undefined", "object", "boolean", "number", "string", "function", "bigint"]),
                 OPERATORS = new Set(["==", "===", "!=", "!=="]);
    -
    +        const sourceCode = context.getSourceCode();
             const requireStringLiterals = context.options[0] && context.options[0].requireStringLiterals;
     
             let globalScope;
    @@ -77,8 +77,8 @@ module.exports = {
     
             return {
     
    -            Program() {
    -                globalScope = context.getScope();
    +            Program(node) {
    +                globalScope = sourceCode.getScope(node);
                 },
     
                 UnaryExpression(node) {
    diff --git a/tools/node_modules/eslint/lib/source-code/source-code.js b/tools/node_modules/eslint/lib/source-code/source-code.js
    index 9e2b68e2d31a63..7e1630cc73bdcb 100644
    --- a/tools/node_modules/eslint/lib/source-code/source-code.js
    +++ b/tools/node_modules/eslint/lib/source-code/source-code.js
    @@ -143,6 +143,8 @@ function isSpaceBetween(sourceCode, first, second, checkInsideOfJSXText) {
     // Public Interface
     //------------------------------------------------------------------------------
     
    +const caches = Symbol("caches");
    +
     /**
      * Represents parsed source code.
      */
    @@ -175,6 +177,13 @@ class SourceCode extends TokenStore {
             validate(ast);
             super(ast.tokens, ast.comments);
     
    +        /**
    +         * General purpose caching for the class.
    +         */
    +        this[caches] = new Map([
    +            ["scopes", new WeakMap()]
    +        ]);
    +
             /**
              * The flag to indicate that the source code has Unicode BOM.
              * @type {boolean}
    @@ -588,6 +597,48 @@ class SourceCode extends TokenStore {
     
             return positionIndex;
         }
    +
    +    /**
    +     * Gets the scope for the given node
    +     * @param {ASTNode} currentNode The node to get the scope of
    +     * @returns {eslint-scope.Scope} The scope information for this node
    +     * @throws {TypeError} If the `currentNode` argument is missing.
    +     */
    +    getScope(currentNode) {
    +
    +        if (!currentNode) {
    +            throw new TypeError("Missing required argument: node.");
    +        }
    +
    +        // check cache first
    +        const cache = this[caches].get("scopes");
    +        const cachedScope = cache.get(currentNode);
    +
    +        if (cachedScope) {
    +            return cachedScope;
    +        }
    +
    +        // On Program node, get the outermost scope to avoid return Node.js special function scope or ES modules scope.
    +        const inner = currentNode.type !== "Program";
    +
    +        for (let node = currentNode; node; node = node.parent) {
    +            const scope = this.scopeManager.acquire(node, inner);
    +
    +            if (scope) {
    +                if (scope.type === "function-expression-name") {
    +                    cache.set(currentNode, scope.childScopes[0]);
    +                    return scope.childScopes[0];
    +                }
    +
    +                cache.set(currentNode, scope);
    +                return scope;
    +            }
    +        }
    +
    +        cache.set(currentNode, this.scopeManager.scopes[0]);
    +        return this.scopeManager.scopes[0];
    +    }
    +
     }
     
     module.exports = SourceCode;
    diff --git a/tools/node_modules/eslint/lib/source-code/token-store/utils.js b/tools/node_modules/eslint/lib/source-code/token-store/utils.js
    index a2bd77de71a32e..859831916eaa20 100644
    --- a/tools/node_modules/eslint/lib/source-code/token-store/utils.js
    +++ b/tools/node_modules/eslint/lib/source-code/token-store/utils.js
    @@ -49,13 +49,18 @@ exports.getFirstIndex = function getFirstIndex(tokens, indexMap, startLoc) {
         }
         if ((startLoc - 1) in indexMap) {
             const index = indexMap[startLoc - 1];
    -        const token = (index >= 0 && index < tokens.length) ? tokens[index] : null;
    +        const token = tokens[index];
    +
    +        // If the mapped index is out of bounds, the returned cursor index will point after the end of the tokens array.
    +        if (!token) {
    +            return tokens.length;
    +        }
     
             /*
              * For the map of "comment's location -> token's index", it points the next token of a comment.
              * In that case, +1 is unnecessary.
              */
    -        if (token && token.range[0] >= startLoc) {
    +        if (token.range[0] >= startLoc) {
                 return index;
             }
             return index + 1;
    @@ -77,13 +82,18 @@ exports.getLastIndex = function getLastIndex(tokens, indexMap, endLoc) {
         }
         if ((endLoc - 1) in indexMap) {
             const index = indexMap[endLoc - 1];
    -        const token = (index >= 0 && index < tokens.length) ? tokens[index] : null;
    +        const token = tokens[index];
    +
    +        // If the mapped index is out of bounds, the returned cursor index will point before the end of the tokens array.
    +        if (!token) {
    +            return tokens.length - 1;
    +        }
     
             /*
              * For the map of "comment's location -> token's index", it points the next token of a comment.
              * In that case, -1 is necessary.
              */
    -        if (token && token.range[1] > endLoc) {
    +        if (token.range[1] > endLoc) {
                 return index - 1;
             }
             return index;
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js
    index f0c7db6cb0f3da..414cef79c2db86 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/configuration.js
    @@ -51,13 +51,6 @@ var _moduleTypes = require("./module-types");
     var _patternToRegex = require("../pattern-to-regex");
     var _configError = require("../../errors/config-error");
     var fs = require("../../gensync-utils/fs");
    -function _module() {
    -  const data = require("module");
    -  _module = function () {
    -    return data;
    -  };
    -  return data;
    -}
     var _rewriteStackTrace = require("../../errors/rewrite-stack-trace");
     const debug = _debug()("babel:config:loading:files:configuration");
     const ROOT_CONFIG_FILENAMES = ["babel.config.js", "babel.config.cjs", "babel.config.mjs", "babel.config.json", "babel.config.cts"];
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js
    index 2a666021030fb8..84b9a27a9061f7 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/import-meta-resolve.js
    @@ -4,13 +4,6 @@ Object.defineProperty(exports, "__esModule", {
       value: true
     });
     exports.default = resolve;
    -function _module() {
    -  const data = require("module");
    -  _module = function () {
    -    return data;
    -  };
    -  return data;
    -}
     var _importMetaResolve = require("../../vendor/import-meta-resolve");
     function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
     function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js
    index df7ea2847f91d7..7e7dfdcf5f2ab1 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/module-types.js
    @@ -20,13 +20,6 @@ function _url() {
       };
       return data;
     }
    -function _module() {
    -  const data = require("module");
    -  _module = function () {
    -    return data;
    -  };
    -  return data;
    -}
     function _semver() {
       const data = require("semver");
       _semver = function () {
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js
    index e4156a3482bc02..ac4a8fdbad9676 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/files/plugins.js
    @@ -38,13 +38,6 @@ function _url() {
       return data;
     }
     var _importMetaResolve = require("./import-meta-resolve");
    -function _module() {
    -  const data = require("module");
    -  _module = function () {
    -    return data;
    -  };
    -  return data;
    -}
     function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
     function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
     const debug = _debug()("babel:config:loading:files:plugins");
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js
    index f58755f21413d7..e250d01a190395 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/config/index.js
    @@ -38,7 +38,10 @@ const maybeErrback = runner => (argOrCallback, maybeCallback) => {
         callback = maybeCallback;
         arg = argOrCallback;
       }
    -  return callback ? runner.errback(arg, callback) : runner.sync(arg);
    +  if (!callback) {
    +    return runner.sync(arg);
    +  }
    +  runner.errback(arg, callback);
     };
     const loadPartialConfig = maybeErrback(_partial.loadPartialConfig);
     exports.loadPartialConfig = loadPartialConfig;
    @@ -58,9 +61,9 @@ const createConfigItemAsync = createConfigItemRunner.async;
     exports.createConfigItemAsync = createConfigItemAsync;
     function createConfigItem(target, options, callback) {
       if (callback !== undefined) {
    -    return createConfigItemRunner.errback(target, options, callback);
    +    createConfigItemRunner.errback(target, options, callback);
       } else if (typeof options === "function") {
    -    return createConfigItemRunner.errback(target, undefined, callback);
    +    createConfigItemRunner.errback(target, undefined, callback);
       } else {
         return createConfigItemRunner.sync(target, options);
       }
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js
    index 8b6dc73d1a71fb..888f8a8c80547e 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/index.js
    @@ -224,15 +224,8 @@ var _transform = require("./transform");
     var _transformFile = require("./transform-file");
     var _transformAst = require("./transform-ast");
     var _parse = require("./parse");
    -function _module() {
    -  const data = require("module");
    -  _module = function () {
    -    return data;
    -  };
    -  return data;
    -}
     var thisFile = require("./index");
    -const version = "7.21.0";
    +const version = "7.21.3";
     exports.version = version;
     const DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs", ".cjs"]);
     exports.DEFAULT_EXTENSIONS = DEFAULT_EXTENSIONS;
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js
    index 3864bff7c71c16..d08a85f92992ab 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transform-file.js
    @@ -27,7 +27,7 @@ const transformFileRunner = _gensync()(function* (filename, opts) {
       return yield* (0, _transformation.run)(config, code);
     });
     function transformFile(...args) {
    -  return transformFileRunner.errback(...args);
    +  transformFileRunner.errback(...args);
     }
     function transformFileSync(...args) {
       return transformFileRunner.sync(...args);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js
    index ddde8dc4a02eed..15ef510e11513c 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/lib/transformation/plugin-pass.js
    @@ -31,7 +31,7 @@ class PluginPass {
         return this.file.addHelper(name);
       }
       addImport() {
    -    return this.file.addImport();
    +    this.file.addImport();
       }
       buildCodeFrameError(node, msg, _Error) {
         return this.file.buildCodeFrameError(node, msg, _Error);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/core/package.json b/tools/node_modules/eslint/node_modules/@babel/core/package.json
    index 27819d200549ad..5f0b5d43d5c4f4 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/core/package.json
    +++ b/tools/node_modules/eslint/node_modules/@babel/core/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@babel/core",
    -  "version": "7.21.0",
    +  "version": "7.21.3",
       "description": "Babel compiler core.",
       "main": "./lib/index.js",
       "author": "The Babel Team (https://babel.dev/team)",
    @@ -48,14 +48,14 @@
       "dependencies": {
         "@ampproject/remapping": "^2.2.0",
         "@babel/code-frame": "^7.18.6",
    -    "@babel/generator": "^7.21.0",
    +    "@babel/generator": "^7.21.3",
         "@babel/helper-compilation-targets": "^7.20.7",
    -    "@babel/helper-module-transforms": "^7.21.0",
    +    "@babel/helper-module-transforms": "^7.21.2",
         "@babel/helpers": "^7.21.0",
    -    "@babel/parser": "^7.21.0",
    +    "@babel/parser": "^7.21.3",
         "@babel/template": "^7.20.7",
    -    "@babel/traverse": "^7.21.0",
    -    "@babel/types": "^7.21.0",
    +    "@babel/traverse": "^7.21.3",
    +    "@babel/types": "^7.21.3",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
    @@ -66,7 +66,7 @@
         "@babel/helper-transform-fixture-test-runner": "^7.20.14",
         "@babel/plugin-syntax-flow": "^7.18.6",
         "@babel/plugin-transform-flow-strip-types": "^7.21.0",
    -    "@babel/plugin-transform-modules-commonjs": "^7.20.11",
    +    "@babel/plugin-transform-modules-commonjs": "^7.21.2",
         "@babel/preset-env": "^7.20.2",
         "@jridgewell/trace-mapping": "^0.3.17",
         "@types/convert-source-map": "^1.5.1",
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs
    index 2a0384507304bd..0a09015ffc5b71 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/analyze-scope.cjs
    @@ -1,17 +1,10 @@
     function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
    -
     function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
    -
     function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
    -
     function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
    -
     function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
    -
     function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
    -
     function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
    -
     const {
       Definition,
       PatternVisitor: OriginalPatternVisitor,
    @@ -19,13 +12,10 @@ const {
       Scope,
       ScopeManager
     } = require("@nicolo-ribaudo/eslint-scope-5-internals");
    -
     const {
       getKeys: fallback
     } = require("eslint-visitor-keys");
    -
     let visitorKeysMap;
    -
     function getVisitorValues(nodeType, client) {
       if (visitorKeysMap) return visitorKeysMap[nodeType];
       const {
    @@ -37,12 +27,10 @@ function getVisitorValues(nodeType, client) {
         if (!flowFlippedAliasKeys.includes(value)) {
           acc[key] = value;
         }
    -
         return acc;
       }, {});
       return visitorKeysMap[nodeType];
     }
    -
     const propertyTypes = {
       callProperties: {
         type: "loop",
    @@ -87,240 +75,173 @@ const propertyTypes = {
         type: "id"
       }
     };
    -
     class PatternVisitor extends OriginalPatternVisitor {
       ArrayPattern(node) {
         node.elements.forEach(this.visit, this);
       }
    -
       ObjectPattern(node) {
         node.properties.forEach(this.visit, this);
       }
    -
     }
    -
     var _client = new WeakMap();
    -
     class Referencer extends OriginalReferencer {
       constructor(options, scopeManager, client) {
         super(options, scopeManager);
    -
         _classPrivateFieldInitSpec(this, _client, {
           writable: true,
           value: void 0
         });
    -
         _classPrivateFieldSet(this, _client, client);
       }
    -
       visitPattern(node, options, callback) {
         if (!node) {
           return;
         }
    -
         this._checkIdentifierOrVisit(node.typeAnnotation);
    -
         if (node.type === "AssignmentPattern") {
           this._checkIdentifierOrVisit(node.left.typeAnnotation);
         }
    -
         if (typeof options === "function") {
           callback = options;
           options = {
             processRightHandNodes: false
           };
         }
    -
         const visitor = new PatternVisitor(this.options, node, callback);
         visitor.visit(node);
    -
         if (options.processRightHandNodes) {
           visitor.rightHandNodes.forEach(this.visit, this);
         }
       }
    -
       visitClass(node) {
         this._visitArray(node.decorators);
    -
         const typeParamScope = this._nestTypeParamScope(node);
    -
         this._visitTypeAnnotation(node.implements);
    -
         this._visitTypeAnnotation(node.superTypeParameters && node.superTypeParameters.params);
    -
         super.visitClass(node);
    -
         if (typeParamScope) {
           this.close(node);
         }
       }
    -
       visitFunction(node) {
         const typeParamScope = this._nestTypeParamScope(node);
    -
         this._checkIdentifierOrVisit(node.returnType);
    -
         super.visitFunction(node);
    -
         if (typeParamScope) {
           this.close(node);
         }
       }
    -
       visitProperty(node) {
         var _node$value;
    -
         if (((_node$value = node.value) == null ? void 0 : _node$value.type) === "TypeCastExpression") {
           this._visitTypeAnnotation(node.value);
         }
    -
         this._visitArray(node.decorators);
    -
         super.visitProperty(node);
       }
    -
       InterfaceDeclaration(node) {
         this._createScopeVariable(node, node.id);
    -
         const typeParamScope = this._nestTypeParamScope(node);
    -
         this._visitArray(node.extends);
    -
         this.visit(node.body);
    -
         if (typeParamScope) {
           this.close(node);
         }
       }
    -
       TypeAlias(node) {
         this._createScopeVariable(node, node.id);
    -
         const typeParamScope = this._nestTypeParamScope(node);
    -
         this.visit(node.right);
    -
         if (typeParamScope) {
           this.close(node);
         }
       }
    -
       ClassProperty(node) {
         this._visitClassProperty(node);
       }
    -
       ClassPrivateProperty(node) {
         this._visitClassProperty(node);
       }
    -
       PropertyDefinition(node) {
         this._visitClassProperty(node);
       }
    -
       ClassPrivateMethod(node) {
         super.MethodDefinition(node);
       }
    -
       DeclareModule(node) {
         this._visitDeclareX(node);
       }
    -
       DeclareFunction(node) {
         this._visitDeclareX(node);
       }
    -
       DeclareVariable(node) {
         this._visitDeclareX(node);
       }
    -
       DeclareClass(node) {
         this._visitDeclareX(node);
       }
    -
       OptionalMemberExpression(node) {
         super.MemberExpression(node);
       }
    -
       _visitClassProperty(node) {
         this._visitTypeAnnotation(node.typeAnnotation);
    -
         this.visitProperty(node);
       }
    -
       _visitDeclareX(node) {
         if (node.id) {
           this._createScopeVariable(node, node.id);
         }
    -
         const typeParamScope = this._nestTypeParamScope(node);
    -
         if (typeParamScope) {
           this.close(node);
         }
       }
    -
       _createScopeVariable(node, name) {
         this.currentScope().variableScope.__define(name, new Definition("Variable", name, node, null, null, null));
       }
    -
       _nestTypeParamScope(node) {
         if (!node.typeParameters) {
           return null;
         }
    -
         const parentScope = this.scopeManager.__currentScope;
         const scope = new Scope(this.scopeManager, "type-parameters", parentScope, node, false);
    -
         this.scopeManager.__nestScope(scope);
    -
         for (let j = 0; j < node.typeParameters.params.length; j++) {
           const name = node.typeParameters.params[j];
    -
           scope.__define(name, new Definition("TypeParameter", name, name));
    -
           if (name.typeAnnotation) {
             this._checkIdentifierOrVisit(name);
           }
         }
    -
         scope.__define = function () {
           return parentScope.__define.apply(parentScope, arguments);
         };
    -
         return scope;
       }
    -
       _visitTypeAnnotation(node) {
         if (!node) {
           return;
         }
    -
         if (Array.isArray(node)) {
           node.forEach(this._visitTypeAnnotation, this);
           return;
         }
    -
         const visitorValues = getVisitorValues(node.type, _classPrivateFieldGet(this, _client));
    -
         if (!visitorValues) {
           return;
         }
    -
         for (let i = 0; i < visitorValues.length; i++) {
           const visitorValue = visitorValues[i];
           const propertyType = propertyTypes[visitorValue];
           const nodeProperty = node[visitorValue];
    -
           if (propertyType == null || nodeProperty == null) {
             continue;
           }
    -
           if (propertyType.type === "loop") {
             for (let j = 0; j < nodeProperty.length; j++) {
               if (Array.isArray(propertyType.values)) {
                 for (let k = 0; k < propertyType.values.length; k++) {
                   const loopPropertyNode = nodeProperty[j][propertyType.values[k]];
    -
                   if (loopPropertyNode) {
                     this._checkIdentifierOrVisit(loopPropertyNode);
                   }
    @@ -346,7 +267,6 @@ class Referencer extends OriginalReferencer {
           }
         }
       }
    -
       _checkIdentifierOrVisit(node) {
         if (node != null && node.typeAnnotation) {
           this._visitTypeAnnotation(node.typeAnnotation);
    @@ -356,7 +276,6 @@ class Referencer extends OriginalReferencer {
           this._visitTypeAnnotation(node);
         }
       }
    -
       _visitArray(nodeList) {
         if (nodeList) {
           for (const node of nodeList) {
    @@ -364,12 +283,9 @@ class Referencer extends OriginalReferencer {
           }
         }
       }
    -
     }
    -
     module.exports = function analyzeScope(ast, parserOptions, client) {
       var _parserOptions$ecmaFe;
    -
       const options = {
         ignoreEval: true,
         optimistic: false,
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs
    index a6ffce73a848e5..474c8975b567f7 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/client.cjs
    @@ -1,29 +1,16 @@
     var _class, _worker, _worker_threads, _worker_threads_cache;
    -
     function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
    -
     function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
    -
     function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError("attempted to " + action + " private static field before its declaration"); } }
    -
     function _classCheckPrivateStaticAccess(receiver, classConstructor) { if (receiver !== classConstructor) { throw new TypeError("Private static access of wrong provenance"); } }
    -
     function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
    -
     function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
    -
     function _classPrivateFieldGet(receiver, privateMap) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "get"); return _classApplyDescriptorGet(receiver, descriptor); }
    -
     function _classApplyDescriptorGet(receiver, descriptor) { if (descriptor.get) { return descriptor.get.call(receiver); } return descriptor.value; }
    -
     function _classPrivateFieldSet(receiver, privateMap, value) { var descriptor = _classExtractFieldDescriptor(receiver, privateMap, "set"); _classApplyDescriptorSet(receiver, descriptor, value); return value; }
    -
     function _classExtractFieldDescriptor(receiver, privateMap, action) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to " + action + " private field on non-instance"); } return privateMap.get(receiver); }
    -
     function _classApplyDescriptorSet(receiver, descriptor, value) { if (descriptor.set) { descriptor.set.call(receiver, value); } else { if (!descriptor.writable) { throw new TypeError("attempted to set read only private field"); } descriptor.value = value; } }
    -
     const path = require("path");
    -
     const ACTIONS = {
       GET_VERSION: "GET_VERSION",
       GET_TYPES_INFO: "GET_TYPES_INFO",
    @@ -32,112 +19,83 @@ const ACTIONS = {
       MAYBE_PARSE: "MAYBE_PARSE",
       MAYBE_PARSE_SYNC: "MAYBE_PARSE_SYNC"
     };
    -
     var _send = new WeakMap();
    -
     var _vCache = new WeakMap();
    -
     var _tiCache = new WeakMap();
    -
     var _vkCache = new WeakMap();
    -
     var _tlCache = new WeakMap();
    -
     class Client {
       constructor(send) {
         _classPrivateFieldInitSpec(this, _send, {
           writable: true,
           value: void 0
         });
    -
         _classPrivateFieldInitSpec(this, _vCache, {
           writable: true,
           value: void 0
         });
    -
         _classPrivateFieldInitSpec(this, _tiCache, {
           writable: true,
           value: void 0
         });
    -
         _classPrivateFieldInitSpec(this, _vkCache, {
           writable: true,
           value: void 0
         });
    -
         _classPrivateFieldInitSpec(this, _tlCache, {
           writable: true,
           value: void 0
         });
    -
         _classPrivateFieldSet(this, _send, send);
       }
    -
       getVersion() {
         var _classPrivateFieldGet2;
    -
         return (_classPrivateFieldGet2 = _classPrivateFieldGet(this, _vCache)) != null ? _classPrivateFieldGet2 : _classPrivateFieldSet(this, _vCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_VERSION, undefined));
       }
    -
       getTypesInfo() {
         var _classPrivateFieldGet3;
    -
         return (_classPrivateFieldGet3 = _classPrivateFieldGet(this, _tiCache)) != null ? _classPrivateFieldGet3 : _classPrivateFieldSet(this, _tiCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_TYPES_INFO, undefined));
       }
    -
       getVisitorKeys() {
         var _classPrivateFieldGet4;
    -
         return (_classPrivateFieldGet4 = _classPrivateFieldGet(this, _vkCache)) != null ? _classPrivateFieldGet4 : _classPrivateFieldSet(this, _vkCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_VISITOR_KEYS, undefined));
       }
    -
       getTokLabels() {
         var _classPrivateFieldGet5;
    -
         return (_classPrivateFieldGet5 = _classPrivateFieldGet(this, _tlCache)) != null ? _classPrivateFieldGet5 : _classPrivateFieldSet(this, _tlCache, _classPrivateFieldGet(this, _send).call(this, ACTIONS.GET_TOKEN_LABELS, undefined));
       }
    -
       maybeParse(code, options) {
         return _classPrivateFieldGet(this, _send).call(this, ACTIONS.MAYBE_PARSE, {
           code,
           options
         });
       }
    -
     }
    -
     exports.WorkerClient = (_worker = new WeakMap(), (_class = class WorkerClient extends Client {
       constructor() {
         super((action, payload) => {
           const signal = new Int32Array(new SharedArrayBuffer(8));
           const subChannel = new (_classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).MessageChannel)();
    -
           _classPrivateFieldGet(this, _worker).postMessage({
             signal,
             port: subChannel.port1,
             action,
             payload
           }, [subChannel.port1]);
    -
           Atomics.wait(signal, 0, 0);
    -
           const {
             message
           } = _classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).receiveMessageOnPort(subChannel.port2);
    -
           if (message.error) throw Object.assign(message.error, message.errorData);else return message.result;
         });
    -
         _classPrivateFieldInitSpec(this, _worker, {
           writable: true,
           value: new (_classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).Worker)(path.resolve(__dirname, "../lib/worker/index.cjs"), {
             env: _classStaticPrivateFieldSpecGet(WorkerClient, _class, _worker_threads).SHARE_ENV
           })
         });
    -
         _classPrivateFieldGet(this, _worker).unref();
       }
    -
     }, _worker_threads = {
       get: _get_worker_threads,
       set: void 0
    @@ -145,26 +103,20 @@ exports.WorkerClient = (_worker = new WeakMap(), (_class = class WorkerClient ex
       writable: true,
       value: void 0
     }, _class));
    -
     function _get_worker_threads() {
       var _classStaticPrivateFi2;
    -
       return (_classStaticPrivateFi2 = _classStaticPrivateFieldSpecGet(_class, _class, _worker_threads_cache)) != null ? _classStaticPrivateFi2 : _classStaticPrivateFieldSpecSet(_class, _class, _worker_threads_cache, require("worker_threads"));
     }
    -
     {
       var _class2, _handleMessage;
    -
       exports.LocalClient = (_class2 = class LocalClient extends Client {
         constructor() {
           var _classStaticPrivateFi;
    -
           (_classStaticPrivateFi = _classStaticPrivateFieldSpecGet(LocalClient, _class2, _handleMessage)) != null ? _classStaticPrivateFi : _classStaticPrivateFieldSpecSet(LocalClient, _class2, _handleMessage, require("./worker/handle-message.cjs"));
           super((action, payload) => {
             return _classStaticPrivateFieldSpecGet(LocalClient, _class2, _handleMessage).call(LocalClient, action === ACTIONS.MAYBE_PARSE ? ACTIONS.MAYBE_PARSE_SYNC : action, payload);
           });
         }
    -
       }, _handleMessage = {
         writable: true,
         value: void 0
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs
    index e4b76b2ac907c0..b5ab70a3af7363 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/configuration.cjs
    @@ -1,16 +1,13 @@
     const _excluded = ["babelOptions", "ecmaVersion", "sourceType", "requireConfigFile"];
    -
     function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
    -
     exports.normalizeESLintConfig = function (options) {
       const {
    -    babelOptions = {},
    -    ecmaVersion = 2020,
    -    sourceType = "module",
    -    requireConfigFile = true
    -  } = options,
    -        otherOptions = _objectWithoutPropertiesLoose(options, _excluded);
    -
    +      babelOptions = {},
    +      ecmaVersion = 2020,
    +      sourceType = "module",
    +      requireConfigFile = true
    +    } = options,
    +    otherOptions = _objectWithoutPropertiesLoose(options, _excluded);
       return Object.assign({
         babelOptions: Object.assign({
           cwd: process.cwd()
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs
    index 286a88a66a75dc..7a37d13f1f3fce 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertAST.cjs
    @@ -1,9 +1,7 @@
     const ESLINT_VERSION = require("../utils/eslint-version.cjs");
    -
     function* it(children) {
       if (Array.isArray(children)) yield* children;else yield children;
     }
    -
     function traverse(node, visitorKeys, visitor) {
       const {
         type
    @@ -11,7 +9,6 @@ function traverse(node, visitorKeys, visitor) {
       if (!type) return;
       const keys = visitorKeys[type];
       if (!keys) return;
    -
       for (const key of keys) {
         for (const child of it(node[key])) {
           if (child && typeof child === "object") {
    @@ -22,79 +19,62 @@ function traverse(node, visitorKeys, visitor) {
         }
       }
     }
    -
     const convertNodesVisitor = {
       enter(node) {
         if (node.innerComments) {
           delete node.innerComments;
         }
    -
         if (node.trailingComments) {
           delete node.trailingComments;
         }
    -
         if (node.leadingComments) {
           delete node.leadingComments;
         }
       },
    -
       exit(node) {
         if (node.extra) {
           delete node.extra;
         }
    -
         if (node.loc.identifierName) {
           delete node.loc.identifierName;
         }
    -
         if (node.type === "TypeParameter") {
           node.type = "Identifier";
           node.typeAnnotation = node.bound;
           delete node.bound;
         }
    -
         if (node.type === "QualifiedTypeIdentifier") {
           delete node.id;
         }
    -
         if (node.type === "ObjectTypeProperty") {
           delete node.key;
         }
    -
         if (node.type === "ObjectTypeIndexer") {
           delete node.id;
         }
    -
         if (node.type === "FunctionTypeParam") {
           delete node.name;
         }
    -
         if (node.type === "ImportDeclaration") {
           delete node.isType;
         }
    -
         if (node.type === "TemplateLiteral") {
           for (let i = 0; i < node.quasis.length; i++) {
             const q = node.quasis[i];
             q.range[0] -= 1;
    -
             if (q.tail) {
               q.range[1] += 1;
             } else {
               q.range[1] += 2;
             }
    -
             q.loc.start.column -= 1;
    -
             if (q.tail) {
               q.loc.end.column += 1;
             } else {
               q.loc.end.column += 2;
             }
    -
             if (ESLINT_VERSION >= 8) {
               q.start -= 1;
    -
               if (q.tail) {
                 q.end += 1;
               } else {
    @@ -104,31 +84,24 @@ const convertNodesVisitor = {
           }
         }
       }
    -
     };
    -
     function convertNodes(ast, visitorKeys) {
       traverse(ast, visitorKeys, convertNodesVisitor);
     }
    -
     function convertProgramNode(ast) {
       ast.type = "Program";
       ast.sourceType = ast.program.sourceType;
       ast.body = ast.program.body;
       delete ast.program;
       delete ast.errors;
    -
       if (ast.comments.length) {
         const lastComment = ast.comments[ast.comments.length - 1];
    -
         if (ast.tokens.length) {
           const lastToken = ast.tokens[ast.tokens.length - 1];
    -
           if (lastComment.end > lastToken.end) {
             ast.range[1] = lastToken.end;
             ast.loc.end.line = lastToken.loc.end.line;
             ast.loc.end.column = lastToken.loc.end.column;
    -
             if (ESLINT_VERSION >= 8) {
               ast.end = lastToken.end;
             }
    @@ -140,17 +113,14 @@ function convertProgramNode(ast) {
           ast.loc.end.line = 1;
         }
       }
    -
       if (ast.body && ast.body.length > 0) {
         ast.loc.start.line = ast.body[0].loc.start.line;
         ast.range[0] = ast.body[0].start;
    -
         if (ESLINT_VERSION >= 8) {
           ast.start = ast.body[0].start;
         }
       }
     }
    -
     module.exports = function convertAST(ast, visitorKeys) {
       convertNodes(ast, visitorKeys);
       convertProgramNode(ast);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs
    index 559cee9348c103..4e09df6965babd 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertComments.cjs
    @@ -5,7 +5,6 @@ module.exports = function convertComments(comments) {
         } else if (comment.type === "CommentLine") {
           comment.type = "Line";
         }
    -
         if (!comment.range) {
           comment.range = [comment.start, comment.end];
         }
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs
    index 017d5c467c6bb3..bd8ac682c87e61 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/convertTokens.cjs
    @@ -1,10 +1,8 @@
     const ESLINT_VERSION = require("../utils/eslint-version.cjs");
    -
     function convertTemplateType(tokens, tl) {
       let curlyBrace = null;
       let templateTokens = [];
       const result = [];
    -
       function addTemplateType() {
         const start = templateTokens[0];
         const end = templateTokens[templateTokens.length - 1];
    @@ -14,7 +12,6 @@ function convertTemplateType(tokens, tl) {
           } else if (token.type.label !== tl.template) {
             result += token.type.label;
           }
    -
           return result;
         }, "");
         result.push({
    @@ -29,7 +26,6 @@ function convertTemplateType(tokens, tl) {
         });
         templateTokens = [];
       }
    -
       tokens.forEach(token => {
         switch (token.type.label) {
           case tl.backQuote:
    @@ -37,49 +33,38 @@ function convertTemplateType(tokens, tl) {
               result.push(curlyBrace);
               curlyBrace = null;
             }
    -
             templateTokens.push(token);
    -
             if (templateTokens.length > 1) {
               addTemplateType();
             }
    -
             break;
    -
           case tl.dollarBraceL:
             templateTokens.push(token);
             addTemplateType();
             break;
    -
           case tl.braceR:
             if (curlyBrace) {
               result.push(curlyBrace);
             }
    -
             curlyBrace = token;
             break;
    -
           case tl.template:
             if (curlyBrace) {
               templateTokens.push(curlyBrace);
               curlyBrace = null;
             }
    -
             templateTokens.push(token);
             break;
    -
           default:
             if (curlyBrace) {
               result.push(curlyBrace);
               curlyBrace = null;
             }
    -
             result.push(token);
         }
       });
       return result;
     }
    -
     function convertToken(token, source, tl) {
       const {
         type
    @@ -88,7 +73,6 @@ function convertToken(token, source, tl) {
         label
       } = type;
       token.range = [token.start, token.end];
    -
       if (label === tl.name) {
         if (token.value === "static") {
           token.type = "Keyword";
    @@ -97,7 +81,6 @@ function convertToken(token, source, tl) {
         }
       } else if (label === tl.semi || label === tl.comma || label === tl.parenL || label === tl.parenR || label === tl.braceL || label === tl.braceR || label === tl.slash || label === tl.dot || label === tl.bracketL || label === tl.bracketR || label === tl.ellipsis || label === tl.arrow || label === tl.pipeline || label === tl.star || label === tl.incDec || label === tl.colon || label === tl.question || label === tl.template || label === tl.backQuote || label === tl.dollarBraceL || label === tl.at || label === tl.logicalOR || label === tl.logicalAND || label === tl.nullishCoalescing || label === tl.bitwiseOR || label === tl.bitwiseXOR || label === tl.bitwiseAND || label === tl.equality || label === tl.relational || label === tl.bitShift || label === tl.plusMin || label === tl.modulo || label === tl.exponent || label === tl.bang || label === tl.tilde || label === tl.doubleColon || label === tl.hash || label === tl.questionDot || label === tl.braceHashL || label === tl.braceBarL || label === tl.braceBarR || label === tl.bracketHashL || label === tl.bracketBarL || label === tl.bracketBarR || label === tl.doubleCaret || label === tl.doubleAt || type.isAssign) {
         var _token$value;
    -
         token.type = "Punctuator";
         (_token$value = token.value) != null ? _token$value : token.value = label;
       } else if (label === tl.jsxTagStart) {
    @@ -138,30 +121,24 @@ function convertToken(token, source, tl) {
       } else if (label === tl.templateNonTail || label === tl.templateTail) {
         token.type = "Template";
       }
    -
       if (typeof token.type !== "string") {
         delete token.type.rightAssociative;
       }
     }
    -
     module.exports = function convertTokens(tokens, code, tl) {
       const result = [];
       const templateTypeMergedTokens = convertTemplateType(tokens, tl);
    -
       for (let i = 0, {
    -    length
    -  } = templateTypeMergedTokens; i < length - 1; i++) {
    +      length
    +    } = templateTypeMergedTokens; i < length - 1; i++) {
         const token = templateTypeMergedTokens[i];
         const tokenType = token.type;
    -
         if (tokenType === "CommentLine" || tokenType === "CommentBlock") {
           continue;
         }
    -
         {
           if (ESLINT_VERSION >= 8 && i + 1 < length && tokenType.label === tl.hash) {
             const nextToken = templateTypeMergedTokens[i + 1];
    -
             if (nextToken.type.label === tl.name && token.end === nextToken.start) {
               i++;
               nextToken.type = "PrivateIdentifier";
    @@ -176,7 +153,6 @@ module.exports = function convertTokens(tokens, code, tl) {
         convertToken(token, code, tl);
         result.push(token);
       }
    -
       return result;
     };
     
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs
    index 3b421b5fd7167e..4590116fcdebab 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/convert/index.cjs
    @@ -1,22 +1,17 @@
     const convertTokens = require("./convertTokens.cjs");
    -
     const convertComments = require("./convertComments.cjs");
    -
     const convertAST = require("./convertAST.cjs");
    -
     exports.ast = function convert(ast, code, tokLabels, visitorKeys) {
       ast.tokens = convertTokens(ast.tokens, code, tokLabels);
       convertComments(ast.comments);
       convertAST(ast, visitorKeys);
       return ast;
     };
    -
     exports.error = function convertError(err) {
       if (err instanceof SyntaxError) {
         err.lineNumber = err.loc.line;
         err.column = err.loc.column;
       }
    -
       return err;
     };
     
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs
    index 9fcde9d4584713..9f8179be7fd5c0 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/experimental-worker.cjs
    @@ -1,23 +1,16 @@
     const [major, minor] = process.versions.node.split(".").map(Number);
    -
     if (major < 12 || major === 12 && minor < 3) {
       throw new Error("@babel/eslint-parser/experimental-worker requires Node.js >= 12.3.0");
     }
    -
     const {
       normalizeESLintConfig
     } = require("./configuration.cjs");
    -
     const analyzeScope = require("./analyze-scope.cjs");
    -
     const baseParse = require("./parse.cjs");
    -
     const {
       WorkerClient
     } = require("./client.cjs");
    -
     const client = new WorkerClient();
    -
     exports.parseForESLint = function (code, options = {}) {
       const normalizedOptions = normalizeESLintConfig(options);
       const ast = baseParse(code, normalizedOptions, client);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs
    index a164660e5dabd4..926ecc1324cf0d 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/index.cjs
    @@ -1,22 +1,20 @@
     const {
       normalizeESLintConfig
     } = require("./configuration.cjs");
    -
     const analyzeScope = require("./analyze-scope.cjs");
    -
     const baseParse = require("./parse.cjs");
    -
     const {
       LocalClient,
       WorkerClient
     } = require("./client.cjs");
    -
     const client = new LocalClient();
    -
    +exports.meta = {
    +  name: "@babel/eslint-parser",
    +  version: "7.21.3"
    +};
     exports.parse = function (code, options = {}) {
       return baseParse(code, normalizeESLintConfig(options), client);
     };
    -
     exports.parseForESLint = function (code, options = {}) {
       const normalizedOptions = normalizeESLintConfig(options);
       const ast = baseParse(code, normalizedOptions, client);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs
    index 5caa20713970cb..a7cae86909f289 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/parse.cjs
    @@ -1,14 +1,11 @@
     "use strict";
     
     const semver = require("semver");
    -
     const convert = require("./convert/index.cjs");
    -
     const babelParser = require((((v, w) => (v = v.split("."), w = w.split("."), +v[0] > +w[0] || v[0] == w[0] && +v[1] >= +w[1]))(process.versions.node, "8.9") ? require.resolve : (r, {
       paths: [b]
     }, M = require("module")) => {
       let f = M._findPath(r, M._nodeModulePaths(b).concat(b));
    -
       if (f) return f;
       f = new Error(`Cannot resolve module '${r}'`);
       f.code = "MODULE_NOT_FOUND";
    @@ -16,26 +13,20 @@ const babelParser = require((((v, w) => (v = v.split("."), w = w.split("."), +v[
     })("@babel/parser", {
       paths: [require.resolve("@babel/core/package.json")]
     }));
    -
     let isRunningMinSupportedCoreVersion = null;
    -
     module.exports = function parse(code, options, client) {
       const minSupportedCoreVersion = ">=7.2.0";
    -
       if (typeof isRunningMinSupportedCoreVersion !== "boolean") {
         isRunningMinSupportedCoreVersion = semver.satisfies(client.getVersion(), minSupportedCoreVersion);
       }
    -
       if (!isRunningMinSupportedCoreVersion) {
    -    throw new Error(`@babel/eslint-parser@${"7.19.1"} does not support @babel/core@${client.getVersion()}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`);
    +    throw new Error(`@babel/eslint-parser@${"7.21.3"} does not support @babel/core@${client.getVersion()}. Please upgrade to @babel/core@${minSupportedCoreVersion}.`);
       }
    -
       const {
         ast,
         parserOptions
       } = client.maybeParse(code, options);
       if (ast) return ast;
    -
       try {
         return convert.ast(babelParser.parse(code, parserOptions), code, client.getTokLabels(), client.getVisitorKeys());
       } catch (err) {
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs
    index adb65a9375c805..6a5985ee14cd70 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/ast-info.cjs
    @@ -1,9 +1,6 @@
     const ESLINT_VISITOR_KEYS = require("eslint-visitor-keys").KEYS;
    -
     const babel = require("./babel-core.cjs");
    -
     let visitorKeys;
    -
     exports.getVisitorKeys = function getVisitorKeys() {
       if (!visitorKeys) {
         const newTypes = {
    @@ -20,12 +17,9 @@ exports.getVisitorKeys = function getVisitorKeys() {
         };
         visitorKeys = Object.assign({}, newTypes, babel.types.VISITOR_KEYS, conflictTypes);
       }
    -
       return visitorKeys;
     };
    -
     let tokLabels;
    -
     exports.getTokLabels = function getTokLabels() {
       return tokLabels || (tokLabels = (p => p.reduce((o, [k, v]) => Object.assign({}, o, {
         [k]: v
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs
    index 01d4573363a21a..426a6d1d571c0e 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/babel-core.cjs
    @@ -9,7 +9,6 @@ function initialize(babel) {
       exports.loadPartialConfigAsync = babel.loadPartialConfigAsync;
       exports.createConfigItem = babel.createConfigItem;
     }
    -
     {
       initialize(require("@babel/core"));
     }
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs
    index 5aab1914ead32c..0d9e1ae7b214de 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/configuration.cjs
    @@ -1,32 +1,23 @@
     function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
    -
     function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
    -
     const babel = require("./babel-core.cjs");
    -
     const ESLINT_VERSION = require("../utils/eslint-version.cjs");
    -
     function getParserPlugins(babelOptions) {
       var _babelOptions$parserO, _babelOptions$parserO2;
    -
       const babelParserPlugins = (_babelOptions$parserO = (_babelOptions$parserO2 = babelOptions.parserOpts) == null ? void 0 : _babelOptions$parserO2.plugins) != null ? _babelOptions$parserO : [];
       const estreeOptions = {
         classFeatures: ESLINT_VERSION >= 8
       };
    -
       for (const plugin of babelParserPlugins) {
         if (Array.isArray(plugin) && plugin[0] === "estree") {
           Object.assign(estreeOptions, plugin[1]);
           break;
         }
       }
    -
       return [["estree", estreeOptions], ...babelParserPlugins];
     }
    -
     function normalizeParserOptions(options) {
       var _options$allowImportE, _options$ecmaFeatures, _options$ecmaFeatures2;
    -
       return Object.assign({
         sourceType: options.sourceType,
         filename: options.filePath
    @@ -47,27 +38,21 @@ function normalizeParserOptions(options) {
         }, options.babelOptions.caller)
       });
     }
    -
     function validateResolvedConfig(config, options, parseOptions) {
       if (config !== null) {
         if (options.requireConfigFile !== false) {
           if (!config.hasFilesystemConfig()) {
             let error = `No Babel config file detected for ${config.options.filename}. Either disable config file checking with requireConfigFile: false, or configure Babel so that it can find the config files.`;
    -
             if (config.options.filename.includes("node_modules")) {
               error += `\nIf you have a .babelrc.js file or use package.json#babel, keep in mind that it's not used when parsing dependencies. If you want your config to be applied to your whole app, consider using babel.config.js or babel.config.json instead.`;
             }
    -
             throw new Error(error);
           }
         }
    -
         if (config.options) return config.options;
       }
    -
       return getDefaultParserOptions(parseOptions);
     }
    -
     function getDefaultParserOptions(options) {
       return Object.assign({
         plugins: []
    @@ -79,13 +64,11 @@ function getDefaultParserOptions(options) {
         only: null
       });
     }
    -
     exports.normalizeBabelParseConfig = _asyncToGenerator(function* (options) {
       const parseOptions = normalizeParserOptions(options);
       const config = yield babel.loadPartialConfigAsync(parseOptions);
       return validateResolvedConfig(config, options, parseOptions);
     });
    -
     exports.normalizeBabelParseConfigSync = function (options) {
       const parseOptions = normalizeParserOptions(options);
       const config = babel.loadPartialConfigSync(parseOptions);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs
    index 1ddd6179beadb0..29f4c3b138e83f 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/extract-parser-options-plugin.cjs
    @@ -3,7 +3,6 @@ module.exports = function extractParserOptionsPlugin() {
         parserOverride(code, opts) {
           return opts;
         }
    -
       };
     };
     
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs
    index c227db8278deea..a3083454d1909f 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/handle-message.cjs
    @@ -1,43 +1,33 @@
     const babel = require("./babel-core.cjs");
    -
     const maybeParse = require("./maybeParse.cjs");
    -
     const {
       getVisitorKeys,
       getTokLabels
     } = require("./ast-info.cjs");
    -
     const {
       normalizeBabelParseConfig,
       normalizeBabelParseConfigSync
     } = require("./configuration.cjs");
    -
     module.exports = function handleMessage(action, payload) {
       switch (action) {
         case "GET_VERSION":
           return babel.version;
    -
         case "GET_TYPES_INFO":
           return {
             FLOW_FLIPPED_ALIAS_KEYS: babel.types.FLIPPED_ALIAS_KEYS.Flow,
             VISITOR_KEYS: babel.types.VISITOR_KEYS
           };
    -
         case "GET_TOKEN_LABELS":
           return getTokLabels();
    -
         case "GET_VISITOR_KEYS":
           return getVisitorKeys();
    -
         case "MAYBE_PARSE":
           return normalizeBabelParseConfig(payload.options).then(options => maybeParse(payload.code, options));
    -
         case "MAYBE_PARSE_SYNC":
           {
             return maybeParse(payload.code, normalizeBabelParseConfigSync(payload.options));
           }
       }
    -
       throw new Error(`Unknown internal parser worker action: ${action}`);
     };
     
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs
    index ea1c2a794c01f9..5287153267ef50 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/index.cjs
    @@ -1,15 +1,10 @@
     function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
    -
     function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
    -
     const babel = require("./babel-core.cjs");
    -
     const handleMessage = require("./handle-message.cjs");
    -
     const {
       parentPort
     } = require("worker_threads");
    -
     parentPort.addListener("message", _asyncToGenerator(function* ({
       signal,
       port,
    @@ -17,7 +12,6 @@ parentPort.addListener("message", _asyncToGenerator(function* ({
       payload
     }) {
       let response;
    -
       try {
         if (babel.init) yield babel.init;
         response = {
    @@ -29,7 +23,6 @@ parentPort.addListener("message", _asyncToGenerator(function* ({
           errorData: Object.assign({}, error)
         };
       }
    -
       try {
         port.postMessage(response);
       } catch (_unused) {
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs
    index aa49494d8a4e77..37dbfbaee062c2 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/lib/worker/maybeParse.cjs
    @@ -1,18 +1,13 @@
     const babel = require("./babel-core.cjs");
    -
     const convert = require("../convert/index.cjs");
    -
     const {
       getVisitorKeys,
       getTokLabels
     } = require("./ast-info.cjs");
    -
     const extractParserOptionsPlugin = require("./extract-parser-options-plugin.cjs");
    -
     const ref = {};
     let extractParserOptionsConfigItem;
     const MULTIPLE_OVERRIDES = /More than one plugin attempted to override parsing/;
    -
     module.exports = function maybeParse(code, options) {
       if (!extractParserOptionsConfigItem) {
         extractParserOptionsConfigItem = babel.createConfigItem([extractParserOptionsPlugin, ref], {
    @@ -20,12 +15,10 @@ module.exports = function maybeParse(code, options) {
           type: "plugin"
         });
       }
    -
       const {
         plugins
       } = options;
       options.plugins = plugins.concat(extractParserOptionsConfigItem);
    -
       try {
         return {
           parserOptions: babel.parseSync(code, options),
    @@ -36,16 +29,13 @@ module.exports = function maybeParse(code, options) {
           throw err;
         }
       }
    -
       options.plugins = plugins;
       let ast;
    -
       try {
         ast = babel.parseSync(code, options);
       } catch (err) {
         throw convert.error(err);
       }
    -
       return {
         ast: convert.ast(ast, code, getTokLabels(), getVisitorKeys()),
         parserOptions: null
    diff --git a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json
    index f1615977e14e11..a083731aa6e232 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json
    +++ b/tools/node_modules/eslint/node_modules/@babel/eslint-parser/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@babel/eslint-parser",
    -  "version": "7.19.1",
    +  "version": "7.21.3",
       "description": "ESLint parser that allows for linting of experimental syntax transformed by Babel",
       "author": "The Babel Team (https://babel.dev/team)",
       "license": "MIT",
    @@ -36,7 +36,7 @@
         "semver": "^6.3.0"
       },
       "devDependencies": {
    -    "@babel/core": "^7.19.1",
    +    "@babel/core": "^7.21.3",
         "dedent": "^0.7.0",
         "eslint": "^8.22.0"
       }
    diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js
    index 774fe36826650e..def555245c87f6 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/buffer.js
    @@ -235,7 +235,10 @@ class Buffer {
         return this._queueCursor !== 0 || !!this._last;
       }
       exactSource(loc, cb) {
    -    if (!this._map) return cb();
    +    if (!this._map) {
    +      cb();
    +      return;
    +    }
         this.source("start", loc);
         const identifierName = loc.identifierName;
         const sourcePos = this._sourcePosition;
    @@ -260,8 +263,9 @@ class Buffer {
         this._normalizePosition(prop, loc, lineOffset, columnOffset);
       }
       withSource(prop, loc, cb) {
    -    if (!this._map) return cb();
    -    this.source(prop, loc);
    +    if (this._map) {
    +      this.source(prop, loc);
    +    }
         cb();
       }
       _normalizePosition(prop, loc, lineOffset, columnOffset) {
    diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js
    index c37a731281d5fc..e02aa98147f27d 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/generators/types.js
    @@ -175,10 +175,8 @@ function StringLiteral(node) {
         this.token(raw);
         return;
       }
    -  const val = _jsesc(node.value, Object.assign(this.format.jsescOption, this.format.jsonCompatibleStrings && {
    -    json: true
    -  }));
    -  return this.token(val);
    +  const val = _jsesc(node.value, this.format.jsescOption);
    +  this.token(val);
     }
     function BigIntLiteral(node) {
       const raw = this.getPossibleRaw(node);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js
    index f52ff2aa0d8ef8..d0ef9862850a5b 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/index.js
    @@ -44,7 +44,7 @@ function normalizeOptions(code, opts) {
       };
       {
         format.decoratorsBeforeExport = opts.decoratorsBeforeExport;
    -    format.jsonCompatibleStrings = opts.jsonCompatibleStrings;
    +    format.jsescOption.json = opts.jsonCompatibleStrings;
       }
       if (format.minified) {
         format.compact = true;
    @@ -53,7 +53,7 @@ function normalizeOptions(code, opts) {
         format.shouldPrintComment = format.shouldPrintComment || (value => format.comments || value.includes("@license") || value.includes("@preserve"));
       }
       if (format.compact === "auto") {
    -    format.compact = code.length > 500000;
    +    format.compact = typeof code === "string" && code.length > 500000;
         if (format.compact) {
           console.error("[BABEL] Note: The code generator has deoptimised the styling of " + `${opts.filename} as it exceeds the max of ${"500KB"}.`);
         }
    diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js b/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js
    index dbee2fc57aa35d..ff17be07536965 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/generator/lib/printer.js
    @@ -8,6 +8,7 @@ var _buffer = require("./buffer");
     var n = require("./node");
     var _t = require("@babel/types");
     var generatorFunctions = require("./generators");
    +require("@jridgewell/trace-mapping");
     const {
       isFunction,
       isStatement,
    @@ -150,7 +151,10 @@ class Printer {
         this._buf.removeTrailingNewline();
       }
       exactSource(loc, cb) {
    -    if (!loc) return cb();
    +    if (!loc) {
    +      cb();
    +      return;
    +    }
         this._catchUp("start", loc);
         this._buf.exactSource(loc, cb);
       }
    @@ -165,7 +169,10 @@ class Printer {
         this._buf.sourceWithOffset(prop, loc, lineOffset, columnOffset);
       }
       withSource(prop, loc, cb) {
    -    if (!loc) return cb();
    +    if (!loc) {
    +      cb();
    +      return;
    +    }
         this._catchUp(prop, loc);
         this._buf.withSource(prop, loc, cb);
       }
    @@ -455,13 +462,13 @@ class Printer {
       }
       printSequence(nodes, parent, opts = {}) {
         opts.statement = true;
    -    return this.printJoin(nodes, parent, opts);
    +    this.printJoin(nodes, parent, opts);
       }
       printList(items, parent, opts = {}) {
         if (opts.separator == null) {
           opts.separator = commaSeparator;
         }
    -    return this.printJoin(items, parent, opts);
    +    this.printJoin(items, parent, opts);
       }
       _printNewline(newLine, opts) {
         if (this.format.retainLines || this.format.compact) return;
    diff --git a/tools/node_modules/eslint/node_modules/@babel/generator/package.json b/tools/node_modules/eslint/node_modules/@babel/generator/package.json
    index 074c9a94e15533..105522cca50eba 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/generator/package.json
    +++ b/tools/node_modules/eslint/node_modules/@babel/generator/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@babel/generator",
    -  "version": "7.21.1",
    +  "version": "7.21.3",
       "description": "Turns an AST into code.",
       "author": "The Babel Team (https://babel.dev/team)",
       "license": "MIT",
    @@ -19,14 +19,14 @@
         "lib"
       ],
       "dependencies": {
    -    "@babel/types": "^7.21.0",
    +    "@babel/types": "^7.21.3",
         "@jridgewell/gen-mapping": "^0.3.2",
         "@jridgewell/trace-mapping": "^0.3.17",
         "jsesc": "^2.5.1"
       },
       "devDependencies": {
         "@babel/helper-fixtures": "^7.21.0",
    -    "@babel/parser": "^7.21.1",
    +    "@babel/parser": "^7.21.3",
         "@types/jsesc": "^2.5.0",
         "charcodes": "^0.2.0"
       },
    diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js
    index ca4efefeb1a52b..3465898f917706 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/parser/lib/index.js
    @@ -1,824 +1,100 @@
     'use strict';
     
    -Object.defineProperty(exports, '__esModule', { value: true });
    -
    -function _objectWithoutPropertiesLoose(source, excluded) {
    -  if (source == null) return {};
    -  var target = {};
    -  var sourceKeys = Object.keys(source);
    -  var key, i;
    -  for (i = 0; i < sourceKeys.length; i++) {
    -    key = sourceKeys[i];
    -    if (excluded.indexOf(key) >= 0) continue;
    -    target[key] = source[key];
    +Object.defineProperty(exports, '__esModule', {
    +  value: true
    +});
    +const defaultOptions = {
    +  sourceType: "script",
    +  sourceFilename: undefined,
    +  startColumn: 0,
    +  startLine: 1,
    +  allowAwaitOutsideFunction: false,
    +  allowReturnOutsideFunction: false,
    +  allowNewTargetOutsideFunction: false,
    +  allowImportExportEverywhere: false,
    +  allowSuperOutsideMethod: false,
    +  allowUndeclaredExports: false,
    +  plugins: [],
    +  strictMode: null,
    +  ranges: false,
    +  tokens: false,
    +  createParenthesizedExpressions: false,
    +  errorRecovery: false,
    +  attachComment: true,
    +  annexB: true
    +};
    +function getOptions(opts) {
    +  if (opts && opts.annexB != null && opts.annexB !== false) {
    +    throw new Error("The `annexB` option can only be set to `false`.");
       }
    -  return target;
    -}
    -
    -class Position {
    -  constructor(line, col, index) {
    -    this.line = void 0;
    -    this.column = void 0;
    -    this.index = void 0;
    -    this.line = line;
    -    this.column = col;
    -    this.index = index;
    +  const options = {};
    +  for (const key of Object.keys(defaultOptions)) {
    +    options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];
       }
    +  return options;
     }
    -class SourceLocation {
    -  constructor(start, end) {
    -    this.start = void 0;
    -    this.end = void 0;
    -    this.filename = void 0;
    -    this.identifierName = void 0;
    -    this.start = start;
    -    this.end = end;
    +class TokContext {
    +  constructor(token, preserveSpace) {
    +    this.token = void 0;
    +    this.preserveSpace = void 0;
    +    this.token = token;
    +    this.preserveSpace = !!preserveSpace;
       }
     }
    -function createPositionWithColumnOffset(position, columnOffset) {
    -  const {
    -    line,
    -    column,
    -    index
    -  } = position;
    -  return new Position(line, column + columnOffset, index + columnOffset);
    -}
    -
    -var ParseErrorCode = {
    -  SyntaxError: "BABEL_PARSER_SYNTAX_ERROR",
    -  SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
    +const types = {
    +  brace: new TokContext("{"),
    +  j_oTag: new TokContext("...", true)
     };
    -const reflect = (keys, last = keys.length - 1) => ({
    -  get() {
    -    return keys.reduce((object, key) => object[key], this);
    -  },
    -  set(value) {
    -    keys.reduce((item, key, i) => i === last ? item[key] = value : item[key], this);
    -  }
    -});
    -const instantiate = (constructor, properties, descriptors) => Object.keys(descriptors).map(key => [key, descriptors[key]]).filter(([, descriptor]) => !!descriptor).map(([key, descriptor]) => [key, typeof descriptor === "function" ? {
    -  value: descriptor,
    -  enumerable: false
    -} : typeof descriptor.reflect === "string" ? Object.assign({}, descriptor, reflect(descriptor.reflect.split("."))) : descriptor]).reduce((instance, [key, descriptor]) => Object.defineProperty(instance, key, Object.assign({
    -  configurable: true
    -}, descriptor)), Object.assign(new constructor(), properties));
    -
    -var ModuleErrors = {
    -  ImportMetaOutsideModule: {
    -    message: `import.meta may appear only with 'sourceType: "module"'`,
    -    code: ParseErrorCode.SourceTypeModuleError
    -  },
    -  ImportOutsideModule: {
    -    message: `'import' and 'export' may appear only with 'sourceType: "module"'`,
    -    code: ParseErrorCode.SourceTypeModuleError
    +{
    +  types.template = new TokContext("`", true);
    +}
    +const beforeExpr = true;
    +const startsExpr = true;
    +const isLoop = true;
    +const isAssign = true;
    +const prefix = true;
    +const postfix = true;
    +class ExportedTokenType {
    +  constructor(label, conf = {}) {
    +    this.label = void 0;
    +    this.keyword = void 0;
    +    this.beforeExpr = void 0;
    +    this.startsExpr = void 0;
    +    this.rightAssociative = void 0;
    +    this.isLoop = void 0;
    +    this.isAssign = void 0;
    +    this.prefix = void 0;
    +    this.postfix = void 0;
    +    this.binop = void 0;
    +    this.label = label;
    +    this.keyword = conf.keyword;
    +    this.beforeExpr = !!conf.beforeExpr;
    +    this.startsExpr = !!conf.startsExpr;
    +    this.rightAssociative = !!conf.rightAssociative;
    +    this.isLoop = !!conf.isLoop;
    +    this.isAssign = !!conf.isAssign;
    +    this.prefix = !!conf.prefix;
    +    this.postfix = !!conf.postfix;
    +    this.binop = conf.binop != null ? conf.binop : null;
    +    {
    +      this.updateContext = null;
    +    }
       }
    -};
    -
    -const NodeDescriptions = {
    -  ArrayPattern: "array destructuring pattern",
    -  AssignmentExpression: "assignment expression",
    -  AssignmentPattern: "assignment expression",
    -  ArrowFunctionExpression: "arrow function expression",
    -  ConditionalExpression: "conditional expression",
    -  CatchClause: "catch clause",
    -  ForOfStatement: "for-of statement",
    -  ForInStatement: "for-in statement",
    -  ForStatement: "for-loop",
    -  FormalParameters: "function parameter list",
    -  Identifier: "identifier",
    -  ImportSpecifier: "import specifier",
    -  ImportDefaultSpecifier: "import default specifier",
    -  ImportNamespaceSpecifier: "import namespace specifier",
    -  ObjectPattern: "object destructuring pattern",
    -  ParenthesizedExpression: "parenthesized expression",
    -  RestElement: "rest element",
    -  UpdateExpression: {
    -    true: "prefix operation",
    -    false: "postfix operation"
    -  },
    -  VariableDeclarator: "variable declaration",
    -  YieldExpression: "yield expression"
    -};
    -const toNodeDescription = ({
    -  type,
    -  prefix
    -}) => type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type];
    -
    -var StandardErrors = {
    -  AccessorIsGenerator: ({
    -    kind
    -  }) => `A ${kind}ter cannot be a generator.`,
    -  ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",
    -  AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",
    -  AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",
    -  AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",
    -  AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",
    -  AwaitInUsingBinding: "'await' is not allowed to be used as a name in 'using' declarations.",
    -  AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",
    -  AwaitNotInAsyncFunction: "'await' is only allowed within async functions.",
    -  BadGetterArity: "A 'get' accessor must not have any formal parameters.",
    -  BadSetterArity: "A 'set' accessor must have exactly one formal parameter.",
    -  BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.",
    -  ConstructorClassField: "Classes may not have a field named 'constructor'.",
    -  ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",
    -  ConstructorIsAccessor: "Class constructor may not be an accessor.",
    -  ConstructorIsAsync: "Constructor can't be an async function.",
    -  ConstructorIsGenerator: "Constructor can't be a generator.",
    -  DeclarationMissingInitializer: ({
    -    kind
    -  }) => `Missing initializer in ${kind} declaration.`,
    -  DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",
    -  DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.",
    -  DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",
    -  DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",
    -  DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.",
    -  DecoratorSemicolon: "Decorators must not be followed by a semicolon.",
    -  DecoratorStaticBlock: "Decorators can't be used with a static block.",
    -  DeletePrivateField: "Deleting a private field is not allowed.",
    -  DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",
    -  DuplicateConstructor: "Duplicate constructor in the same class.",
    -  DuplicateDefaultExport: "Only one default export allowed per module.",
    -  DuplicateExport: ({
    -    exportName
    -  }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`,
    -  DuplicateProto: "Redefinition of __proto__ property.",
    -  DuplicateRegExpFlags: "Duplicate regular expression flag.",
    -  ElementAfterRest: "Rest element must be last element.",
    -  EscapedCharNotAnIdentifier: "Invalid Unicode escape.",
    -  ExportBindingIsString: ({
    -    localName,
    -    exportName
    -  }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`,
    -  ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",
    -  ForInOfLoopInitializer: ({
    -    type
    -  }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`,
    -  ForInUsing: "For-in loop may not start with 'using' declaration.",
    -  ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",
    -  ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",
    -  GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",
    -  IllegalBreakContinue: ({
    -    type
    -  }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`,
    -  IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",
    -  IllegalReturn: "'return' outside of function.",
    -  ImportBindingIsString: ({
    -    importName
    -  }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`,
    -  ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",
    -  ImportCallArity: ({
    -    maxArgumentCount
    -  }) => `\`import()\` requires exactly ${maxArgumentCount === 1 ? "one argument" : "one or two arguments"}.`,
    -  ImportCallNotNewExpression: "Cannot use new with import(...).",
    -  ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
    -  ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.",
    -  ImportReflectionHasAssertion: "`import module x` cannot have assertions.",
    -  ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.',
    -  IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.",
    -  InvalidBigIntLiteral: "Invalid BigIntLiteral.",
    -  InvalidCodePoint: "Code point out of bounds.",
    -  InvalidCoverInitializedName: "Invalid shorthand property initializer.",
    -  InvalidDecimal: "Invalid decimal.",
    -  InvalidDigit: ({
    -    radix
    -  }) => `Expected number in radix ${radix}.`,
    -  InvalidEscapeSequence: "Bad character escape sequence.",
    -  InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",
    -  InvalidEscapedReservedWord: ({
    -    reservedWord
    -  }) => `Escape sequence in keyword ${reservedWord}.`,
    -  InvalidIdentifier: ({
    -    identifierName
    -  }) => `Invalid identifier ${identifierName}.`,
    -  InvalidLhs: ({
    -    ancestor
    -  }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,
    -  InvalidLhsBinding: ({
    -    ancestor
    -  }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,
    -  InvalidNumber: "Invalid number.",
    -  InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",
    -  InvalidOrUnexpectedToken: ({
    -    unexpected
    -  }) => `Unexpected character '${unexpected}'.`,
    -  InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",
    -  InvalidPrivateFieldResolution: ({
    -    identifierName
    -  }) => `Private name #${identifierName} is not defined.`,
    -  InvalidPropertyBindingPattern: "Binding member expression.",
    -  InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",
    -  InvalidRestAssignmentPattern: "Invalid rest operator's argument.",
    -  LabelRedeclaration: ({
    -    labelName
    -  }) => `Label '${labelName}' is already declared.`,
    -  LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.",
    -  LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",
    -  MalformedRegExpFlags: "Invalid regular expression flag.",
    -  MissingClassName: "A class name is required.",
    -  MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",
    -  MissingSemicolon: "Missing semicolon.",
    -  MissingPlugin: ({
    -    missingPlugin
    -  }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
    -  MissingOneOfPlugins: ({
    -    missingPlugin
    -  }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
    -  MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",
    -  MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",
    -  ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",
    -  ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",
    -  ModuleAttributesWithDuplicateKeys: ({
    -    key
    -  }) => `Duplicate key "${key}" is not allowed in module attributes.`,
    -  ModuleExportNameHasLoneSurrogate: ({
    -    surrogateCharCode
    -  }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`,
    -  ModuleExportUndefined: ({
    -    localName
    -  }) => `Export '${localName}' is not defined.`,
    -  MultipleDefaultsInSwitch: "Multiple default clauses.",
    -  NewlineAfterThrow: "Illegal newline after throw.",
    -  NoCatchOrFinally: "Missing catch or finally clause.",
    -  NumberIdentifier: "Identifier directly after number.",
    -  NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",
    -  ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",
    -  OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",
    -  OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",
    -  OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",
    -  ParamDupe: "Argument name clash.",
    -  PatternHasAccessor: "Object pattern can't contain getter or setter.",
    -  PatternHasMethod: "Object pattern can't contain methods.",
    -  PrivateInExpectedIn: ({
    -    identifierName
    -  }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`,
    -  PrivateNameRedeclaration: ({
    -    identifierName
    -  }) => `Duplicate private name #${identifierName}.`,
    -  RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    -  RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    -  RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
    -  RecordNoProto: "'__proto__' is not allowed in Record expressions.",
    -  RestTrailingComma: "Unexpected trailing comma after rest element.",
    -  SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.",
    -  SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",
    -  StaticPrototype: "Classes may not have static property named prototype.",
    -  SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",
    -  SuperPrivateField: "Private fields can't be accessed on super.",
    -  TrailingDecorator: "Decorators must be attached to a class element.",
    -  TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    -  TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    -  TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
    -  UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",
    -  UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',
    -  UnexpectedDigitAfterHash: "Unexpected digit after hash token.",
    -  UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",
    -  UnexpectedKeyword: ({
    -    keyword
    -  }) => `Unexpected keyword '${keyword}'.`,
    -  UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",
    -  UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",
    -  UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",
    -  UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",
    -  UnexpectedPrivateField: "Unexpected private name.",
    -  UnexpectedReservedWord: ({
    -    reservedWord
    -  }) => `Unexpected reserved word '${reservedWord}'.`,
    -  UnexpectedSuper: "'super' is only allowed in object methods and classes.",
    -  UnexpectedToken: ({
    -    expected,
    -    unexpected
    -  }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`,
    -  UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",
    -  UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.",
    -  UnsupportedBind: "Binding should be performed on object property.",
    -  UnsupportedDecoratorExport: "A decorated export must export a class declaration.",
    -  UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",
    -  UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",
    -  UnsupportedMetaProperty: ({
    -    target,
    -    onlyValidPropertyName
    -  }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,
    -  UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",
    -  UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",
    -  UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",
    -  UnterminatedComment: "Unterminated comment.",
    -  UnterminatedRegExp: "Unterminated regular expression.",
    -  UnterminatedString: "Unterminated string constant.",
    -  UnterminatedTemplate: "Unterminated template.",
    -  UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.",
    -  VarRedeclaration: ({
    -    identifierName
    -  }) => `Identifier '${identifierName}' has already been declared.`,
    -  YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",
    -  YieldInParameter: "Yield expression is not allowed in formal parameters.",
    -  ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."
    -};
    -
    -var StrictModeErrors = {
    -  StrictDelete: "Deleting local variable in strict mode.",
    -  StrictEvalArguments: ({
    -    referenceName
    -  }) => `Assigning to '${referenceName}' in strict mode.`,
    -  StrictEvalArgumentsBinding: ({
    -    bindingName
    -  }) => `Binding '${bindingName}' in strict mode.`,
    -  StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",
    -  StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",
    -  StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",
    -  StrictWith: "'with' in strict mode."
    -};
    -
    -const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]);
    -var PipelineOperatorErrors = {
    -  PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",
    -  PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
    -  PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",
    -  PipeTopicUnconfiguredToken: ({
    -    token
    -  }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`,
    -  PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",
    -  PipeUnparenthesizedBody: ({
    -    type
    -  }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({
    -    type
    -  })}; please wrap it in parentheses.`,
    -  PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',
    -  PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",
    -  PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",
    -  PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",
    -  PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",
    -  PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'
    -};
    -
    -const _excluded$1 = ["toMessage"],
    -  _excluded2$1 = ["message"];
    -function toParseErrorConstructor(_ref) {
    -  let {
    -      toMessage
    -    } = _ref,
    -    properties = _objectWithoutPropertiesLoose(_ref, _excluded$1);
    -  return function constructor({
    -    loc,
    -    details
    -  }) {
    -    return instantiate(SyntaxError, Object.assign({}, properties, {
    -      loc
    -    }), {
    -      clone(overrides = {}) {
    -        const loc = overrides.loc || {};
    -        return constructor({
    -          loc: new Position("line" in loc ? loc.line : this.loc.line, "column" in loc ? loc.column : this.loc.column, "index" in loc ? loc.index : this.loc.index),
    -          details: Object.assign({}, this.details, overrides.details)
    -        });
    -      },
    -      details: {
    -        value: details,
    -        enumerable: false
    -      },
    -      message: {
    -        get() {
    -          return `${toMessage(this.details)} (${this.loc.line}:${this.loc.column})`;
    -        },
    -        set(value) {
    -          Object.defineProperty(this, "message", {
    -            value
    -          });
    -        }
    -      },
    -      pos: {
    -        reflect: "loc.index",
    -        enumerable: true
    -      },
    -      missingPlugin: "missingPlugin" in details && {
    -        reflect: "details.missingPlugin",
    -        enumerable: true
    -      }
    -    });
    -  };
     }
    -function ParseErrorEnum(argument, syntaxPlugin) {
    -  if (Array.isArray(argument)) {
    -    return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]);
    -  }
    -  const ParseErrorConstructors = {};
    -  for (const reasonCode of Object.keys(argument)) {
    -    const template = argument[reasonCode];
    -    const _ref2 = typeof template === "string" ? {
    -        message: () => template
    -      } : typeof template === "function" ? {
    -        message: template
    -      } : template,
    -      {
    -        message
    -      } = _ref2,
    -      rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
    -    const toMessage = typeof message === "string" ? () => message : message;
    -    ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({
    -      code: ParseErrorCode.SyntaxError,
    -      reasonCode,
    -      toMessage
    -    }, syntaxPlugin ? {
    -      syntaxPlugin
    -    } : {}, rest));
    -  }
    -  return ParseErrorConstructors;
    +const keywords$1 = new Map();
    +function createKeyword(name, options = {}) {
    +  options.keyword = name;
    +  const token = createToken(name, options);
    +  keywords$1.set(name, token);
    +  return token;
     }
    -const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors));
    -
    -const {
    -  defineProperty
    -} = Object;
    -const toUnenumerable = (object, key) => defineProperty(object, key, {
    -  enumerable: false,
    -  value: object[key]
    -});
    -function toESTreeLocation(node) {
    -  node.loc.start && toUnenumerable(node.loc.start, "index");
    -  node.loc.end && toUnenumerable(node.loc.end, "index");
    -  return node;
    -}
    -var estree = (superClass => class ESTreeParserMixin extends superClass {
    -  parse() {
    -    const file = toESTreeLocation(super.parse());
    -    if (this.options.tokens) {
    -      file.tokens = file.tokens.map(toESTreeLocation);
    -    }
    -    return file;
    -  }
    -  parseRegExpLiteral({
    -    pattern,
    -    flags
    -  }) {
    -    let regex = null;
    -    try {
    -      regex = new RegExp(pattern, flags);
    -    } catch (e) {}
    -    const node = this.estreeParseLiteral(regex);
    -    node.regex = {
    -      pattern,
    -      flags
    -    };
    -    return node;
    -  }
    -  parseBigIntLiteral(value) {
    -    let bigInt;
    -    try {
    -      bigInt = BigInt(value);
    -    } catch (_unused) {
    -      bigInt = null;
    -    }
    -    const node = this.estreeParseLiteral(bigInt);
    -    node.bigint = String(node.value || value);
    -    return node;
    -  }
    -  parseDecimalLiteral(value) {
    -    const decimal = null;
    -    const node = this.estreeParseLiteral(decimal);
    -    node.decimal = String(node.value || value);
    -    return node;
    -  }
    -  estreeParseLiteral(value) {
    -    return this.parseLiteral(value, "Literal");
    -  }
    -  parseStringLiteral(value) {
    -    return this.estreeParseLiteral(value);
    -  }
    -  parseNumericLiteral(value) {
    -    return this.estreeParseLiteral(value);
    -  }
    -  parseNullLiteral() {
    -    return this.estreeParseLiteral(null);
    -  }
    -  parseBooleanLiteral(value) {
    -    return this.estreeParseLiteral(value);
    -  }
    -  directiveToStmt(directive) {
    -    const expression = directive.value;
    -    delete directive.value;
    -    expression.type = "Literal";
    -    expression.raw = expression.extra.raw;
    -    expression.value = expression.extra.expressionValue;
    -    const stmt = directive;
    -    stmt.type = "ExpressionStatement";
    -    stmt.expression = expression;
    -    stmt.directive = expression.extra.rawValue;
    -    delete expression.extra;
    -    return stmt;
    -  }
    -  initFunction(node, isAsync) {
    -    super.initFunction(node, isAsync);
    -    node.expression = false;
    -  }
    -  checkDeclaration(node) {
    -    if (node != null && this.isObjectProperty(node)) {
    -      this.checkDeclaration(node.value);
    -    } else {
    -      super.checkDeclaration(node);
    -    }
    -  }
    -  getObjectOrClassMethodParams(method) {
    -    return method.value.params;
    -  }
    -  isValidDirective(stmt) {
    -    var _stmt$expression$extr;
    -    return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);
    -  }
    -  parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
    -    super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse);
    -    const directiveStatements = node.directives.map(d => this.directiveToStmt(d));
    -    node.body = directiveStatements.concat(node.body);
    -    delete node.directives;
    -  }
    -  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
    -    this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);
    -    if (method.typeParameters) {
    -      method.value.typeParameters = method.typeParameters;
    -      delete method.typeParameters;
    -    }
    -    classBody.body.push(method);
    -  }
    -  parsePrivateName() {
    -    const node = super.parsePrivateName();
    -    {
    -      if (!this.getPluginOption("estree", "classFeatures")) {
    -        return node;
    -      }
    -    }
    -    return this.convertPrivateNameToPrivateIdentifier(node);
    -  }
    -  convertPrivateNameToPrivateIdentifier(node) {
    -    const name = super.getPrivateNameSV(node);
    -    node = node;
    -    delete node.id;
    -    node.name = name;
    -    node.type = "PrivateIdentifier";
    -    return node;
    -  }
    -  isPrivateName(node) {
    -    {
    -      if (!this.getPluginOption("estree", "classFeatures")) {
    -        return super.isPrivateName(node);
    -      }
    -    }
    -    return node.type === "PrivateIdentifier";
    -  }
    -  getPrivateNameSV(node) {
    -    {
    -      if (!this.getPluginOption("estree", "classFeatures")) {
    -        return super.getPrivateNameSV(node);
    -      }
    -    }
    -    return node.name;
    -  }
    -  parseLiteral(value, type) {
    -    const node = super.parseLiteral(value, type);
    -    node.raw = node.extra.raw;
    -    delete node.extra;
    -    return node;
    -  }
    -  parseFunctionBody(node, allowExpression, isMethod = false) {
    -    super.parseFunctionBody(node, allowExpression, isMethod);
    -    node.expression = node.body.type !== "BlockStatement";
    -  }
    -  parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
    -    let funcNode = this.startNode();
    -    funcNode.kind = node.kind;
    -    funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
    -    funcNode.type = "FunctionExpression";
    -    delete funcNode.kind;
    -    node.value = funcNode;
    -    if (type === "ClassPrivateMethod") {
    -      node.computed = false;
    -    }
    -    return this.finishNode(node, "MethodDefinition");
    -  }
    -  parseClassProperty(...args) {
    -    const propertyNode = super.parseClassProperty(...args);
    -    {
    -      if (!this.getPluginOption("estree", "classFeatures")) {
    -        return propertyNode;
    -      }
    -    }
    -    propertyNode.type = "PropertyDefinition";
    -    return propertyNode;
    -  }
    -  parseClassPrivateProperty(...args) {
    -    const propertyNode = super.parseClassPrivateProperty(...args);
    -    {
    -      if (!this.getPluginOption("estree", "classFeatures")) {
    -        return propertyNode;
    -      }
    -    }
    -    propertyNode.type = "PropertyDefinition";
    -    propertyNode.computed = false;
    -    return propertyNode;
    -  }
    -  parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
    -    const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);
    -    if (node) {
    -      node.type = "Property";
    -      if (node.kind === "method") {
    -        node.kind = "init";
    -      }
    -      node.shorthand = false;
    -    }
    -    return node;
    -  }
    -  parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
    -    const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
    -    if (node) {
    -      node.kind = "init";
    -      node.type = "Property";
    -    }
    -    return node;
    -  }
    -  isValidLVal(type, isUnparenthesizedInAssign, binding) {
    -    return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding);
    -  }
    -  isAssignable(node, isBinding) {
    -    if (node != null && this.isObjectProperty(node)) {
    -      return this.isAssignable(node.value, isBinding);
    -    }
    -    return super.isAssignable(node, isBinding);
    -  }
    -  toAssignable(node, isLHS = false) {
    -    if (node != null && this.isObjectProperty(node)) {
    -      const {
    -        key,
    -        value
    -      } = node;
    -      if (this.isPrivateName(key)) {
    -        this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
    -      }
    -      this.toAssignable(value, isLHS);
    -    } else {
    -      super.toAssignable(node, isLHS);
    -    }
    -  }
    -  toAssignableObjectExpressionProp(prop, isLast, isLHS) {
    -    if (prop.kind === "get" || prop.kind === "set") {
    -      this.raise(Errors.PatternHasAccessor, {
    -        at: prop.key
    -      });
    -    } else if (prop.method) {
    -      this.raise(Errors.PatternHasMethod, {
    -        at: prop.key
    -      });
    -    } else {
    -      super.toAssignableObjectExpressionProp(prop, isLast, isLHS);
    -    }
    -  }
    -  finishCallExpression(unfinished, optional) {
    -    const node = super.finishCallExpression(unfinished, optional);
    -    if (node.callee.type === "Import") {
    -      node.type = "ImportExpression";
    -      node.source = node.arguments[0];
    -      if (this.hasPlugin("importAssertions")) {
    -        var _node$arguments$;
    -        node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;
    -      }
    -      delete node.arguments;
    -      delete node.callee;
    -    }
    -    return node;
    -  }
    -  toReferencedArguments(node) {
    -    if (node.type === "ImportExpression") {
    -      return;
    -    }
    -    super.toReferencedArguments(node);
    -  }
    -  parseExport(unfinished, decorators) {
    -    const exportStartLoc = this.state.lastTokStartLoc;
    -    const node = super.parseExport(unfinished, decorators);
    -    switch (node.type) {
    -      case "ExportAllDeclaration":
    -        node.exported = null;
    -        break;
    -      case "ExportNamedDeclaration":
    -        if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {
    -          node.type = "ExportAllDeclaration";
    -          node.exported = node.specifiers[0].exported;
    -          delete node.specifiers;
    -        }
    -      case "ExportDefaultDeclaration":
    -        {
    -          var _declaration$decorato;
    -          const {
    -            declaration
    -          } = node;
    -          if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) {
    -            this.resetStartLocation(node, exportStartLoc);
    -          }
    -        }
    -        break;
    -    }
    -    return node;
    -  }
    -  parseSubscript(base, startLoc, noCalls, state) {
    -    const node = super.parseSubscript(base, startLoc, noCalls, state);
    -    if (state.optionalChainMember) {
    -      if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {
    -        node.type = node.type.substring(8);
    -      }
    -      if (state.stop) {
    -        const chain = this.startNodeAtNode(node);
    -        chain.expression = node;
    -        return this.finishNode(chain, "ChainExpression");
    -      }
    -    } else if (node.type === "MemberExpression" || node.type === "CallExpression") {
    -      node.optional = false;
    -    }
    -    return node;
    -  }
    -  hasPropertyAsPrivateName(node) {
    -    if (node.type === "ChainExpression") {
    -      node = node.expression;
    -    }
    -    return super.hasPropertyAsPrivateName(node);
    -  }
    -  isObjectProperty(node) {
    -    return node.type === "Property" && node.kind === "init" && !node.method;
    -  }
    -  isObjectMethod(node) {
    -    return node.method || node.kind === "get" || node.kind === "set";
    -  }
    -  finishNodeAt(node, type, endLoc) {
    -    return toESTreeLocation(super.finishNodeAt(node, type, endLoc));
    -  }
    -  resetStartLocation(node, startLoc) {
    -    super.resetStartLocation(node, startLoc);
    -    toESTreeLocation(node);
    -  }
    -  resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {
    -    super.resetEndLocation(node, endLoc);
    -    toESTreeLocation(node);
    -  }
    -});
    -
    -class TokContext {
    -  constructor(token, preserveSpace) {
    -    this.token = void 0;
    -    this.preserveSpace = void 0;
    -    this.token = token;
    -    this.preserveSpace = !!preserveSpace;
    -  }
    -}
    -const types = {
    -  brace: new TokContext("{"),
    -  j_oTag: new TokContext("...", true)
    -};
    -{
    -  types.template = new TokContext("`", true);
    -}
    -
    -const beforeExpr = true;
    -const startsExpr = true;
    -const isLoop = true;
    -const isAssign = true;
    -const prefix = true;
    -const postfix = true;
    -class ExportedTokenType {
    -  constructor(label, conf = {}) {
    -    this.label = void 0;
    -    this.keyword = void 0;
    -    this.beforeExpr = void 0;
    -    this.startsExpr = void 0;
    -    this.rightAssociative = void 0;
    -    this.isLoop = void 0;
    -    this.isAssign = void 0;
    -    this.prefix = void 0;
    -    this.postfix = void 0;
    -    this.binop = void 0;
    -    this.label = label;
    -    this.keyword = conf.keyword;
    -    this.beforeExpr = !!conf.beforeExpr;
    -    this.startsExpr = !!conf.startsExpr;
    -    this.rightAssociative = !!conf.rightAssociative;
    -    this.isLoop = !!conf.isLoop;
    -    this.isAssign = !!conf.isAssign;
    -    this.prefix = !!conf.prefix;
    -    this.postfix = !!conf.postfix;
    -    this.binop = conf.binop != null ? conf.binop : null;
    -    {
    -      this.updateContext = null;
    -    }
    -  }
    -}
    -const keywords$1 = new Map();
    -function createKeyword(name, options = {}) {
    -  options.keyword = name;
    -  const token = createToken(name, options);
    -  keywords$1.set(name, token);
    -  return token;
    -}
    -function createBinop(name, binop) {
    -  return createToken(name, {
    -    beforeExpr,
    -    binop
    -  });
    +function createBinop(name, binop) {
    +  return createToken(name, {
    +    beforeExpr,
    +    binop
    +  });
     }
     let tokenTypeCounter = -1;
     const tokenTypes = [];
    @@ -1239,85 +515,828 @@ const tt = {
         startsExpr: true
       })
     };
    -function tokenIsIdentifier(token) {
    -  return token >= 93 && token <= 130;
    -}
    -function tokenKeywordOrIdentifierIsKeyword(token) {
    -  return token <= 92;
    -}
    -function tokenIsKeywordOrIdentifier(token) {
    -  return token >= 58 && token <= 130;
    -}
    -function tokenIsLiteralPropertyName(token) {
    -  return token >= 58 && token <= 134;
    -}
    -function tokenComesBeforeExpression(token) {
    -  return tokenBeforeExprs[token];
    -}
    -function tokenCanStartExpression(token) {
    -  return tokenStartsExprs[token];
    -}
    -function tokenIsAssignment(token) {
    -  return token >= 29 && token <= 33;
    -}
    -function tokenIsFlowInterfaceOrTypeOrOpaque(token) {
    -  return token >= 127 && token <= 129;
    -}
    -function tokenIsLoop(token) {
    -  return token >= 90 && token <= 92;
    -}
    -function tokenIsKeyword(token) {
    -  return token >= 58 && token <= 92;
    -}
    -function tokenIsOperator(token) {
    -  return token >= 39 && token <= 59;
    -}
    -function tokenIsPostfix(token) {
    -  return token === 34;
    -}
    -function tokenIsPrefix(token) {
    -  return tokenPrefixes[token];
    -}
    -function tokenIsTSTypeOperator(token) {
    -  return token >= 119 && token <= 121;
    -}
    -function tokenIsTSDeclarationStart(token) {
    -  return token >= 122 && token <= 128;
    -}
    -function tokenLabelName(token) {
    -  return tokenLabels[token];
    -}
    -function tokenOperatorPrecedence(token) {
    -  return tokenBinops[token];
    -}
    -function tokenIsRightAssociative(token) {
    -  return token === 57;
    +function tokenIsIdentifier(token) {
    +  return token >= 93 && token <= 130;
    +}
    +function tokenKeywordOrIdentifierIsKeyword(token) {
    +  return token <= 92;
    +}
    +function tokenIsKeywordOrIdentifier(token) {
    +  return token >= 58 && token <= 130;
    +}
    +function tokenIsLiteralPropertyName(token) {
    +  return token >= 58 && token <= 134;
    +}
    +function tokenComesBeforeExpression(token) {
    +  return tokenBeforeExprs[token];
    +}
    +function tokenCanStartExpression(token) {
    +  return tokenStartsExprs[token];
    +}
    +function tokenIsAssignment(token) {
    +  return token >= 29 && token <= 33;
    +}
    +function tokenIsFlowInterfaceOrTypeOrOpaque(token) {
    +  return token >= 127 && token <= 129;
    +}
    +function tokenIsLoop(token) {
    +  return token >= 90 && token <= 92;
    +}
    +function tokenIsKeyword(token) {
    +  return token >= 58 && token <= 92;
    +}
    +function tokenIsOperator(token) {
    +  return token >= 39 && token <= 59;
    +}
    +function tokenIsPostfix(token) {
    +  return token === 34;
    +}
    +function tokenIsPrefix(token) {
    +  return tokenPrefixes[token];
    +}
    +function tokenIsTSTypeOperator(token) {
    +  return token >= 119 && token <= 121;
    +}
    +function tokenIsTSDeclarationStart(token) {
    +  return token >= 122 && token <= 128;
    +}
    +function tokenLabelName(token) {
    +  return tokenLabels[token];
    +}
    +function tokenOperatorPrecedence(token) {
    +  return tokenBinops[token];
    +}
    +function tokenIsRightAssociative(token) {
    +  return token === 57;
    +}
    +function tokenIsTemplate(token) {
    +  return token >= 24 && token <= 25;
    +}
    +function getExportedToken(token) {
    +  return tokenTypes[token];
    +}
    +{
    +  tokenTypes[8].updateContext = context => {
    +    context.pop();
    +  };
    +  tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {
    +    context.push(types.brace);
    +  };
    +  tokenTypes[22].updateContext = context => {
    +    if (context[context.length - 1] === types.template) {
    +      context.pop();
    +    } else {
    +      context.push(types.template);
    +    }
    +  };
    +  tokenTypes[140].updateContext = context => {
    +    context.push(types.j_expr, types.j_oTag);
    +  };
    +}
    +function _objectWithoutPropertiesLoose(source, excluded) {
    +  if (source == null) return {};
    +  var target = {};
    +  var sourceKeys = Object.keys(source);
    +  var key, i;
    +  for (i = 0; i < sourceKeys.length; i++) {
    +    key = sourceKeys[i];
    +    if (excluded.indexOf(key) >= 0) continue;
    +    target[key] = source[key];
    +  }
    +  return target;
    +}
    +class Position {
    +  constructor(line, col, index) {
    +    this.line = void 0;
    +    this.column = void 0;
    +    this.index = void 0;
    +    this.line = line;
    +    this.column = col;
    +    this.index = index;
    +  }
    +}
    +class SourceLocation {
    +  constructor(start, end) {
    +    this.start = void 0;
    +    this.end = void 0;
    +    this.filename = void 0;
    +    this.identifierName = void 0;
    +    this.start = start;
    +    this.end = end;
    +  }
    +}
    +function createPositionWithColumnOffset(position, columnOffset) {
    +  const {
    +    line,
    +    column,
    +    index
    +  } = position;
    +  return new Position(line, column + columnOffset, index + columnOffset);
    +}
    +var ParseErrorCode = {
    +  SyntaxError: "BABEL_PARSER_SYNTAX_ERROR",
    +  SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
    +};
    +const reflect = (keys, last = keys.length - 1) => ({
    +  get() {
    +    return keys.reduce((object, key) => object[key], this);
    +  },
    +  set(value) {
    +    keys.reduce((item, key, i) => i === last ? item[key] = value : item[key], this);
    +  }
    +});
    +const instantiate = (constructor, properties, descriptors) => Object.keys(descriptors).map(key => [key, descriptors[key]]).filter(([, descriptor]) => !!descriptor).map(([key, descriptor]) => [key, typeof descriptor === "function" ? {
    +  value: descriptor,
    +  enumerable: false
    +} : typeof descriptor.reflect === "string" ? Object.assign({}, descriptor, reflect(descriptor.reflect.split("."))) : descriptor]).reduce((instance, [key, descriptor]) => Object.defineProperty(instance, key, Object.assign({
    +  configurable: true
    +}, descriptor)), Object.assign(new constructor(), properties));
    +var ModuleErrors = {
    +  ImportMetaOutsideModule: {
    +    message: `import.meta may appear only with 'sourceType: "module"'`,
    +    code: ParseErrorCode.SourceTypeModuleError
    +  },
    +  ImportOutsideModule: {
    +    message: `'import' and 'export' may appear only with 'sourceType: "module"'`,
    +    code: ParseErrorCode.SourceTypeModuleError
    +  }
    +};
    +const NodeDescriptions = {
    +  ArrayPattern: "array destructuring pattern",
    +  AssignmentExpression: "assignment expression",
    +  AssignmentPattern: "assignment expression",
    +  ArrowFunctionExpression: "arrow function expression",
    +  ConditionalExpression: "conditional expression",
    +  CatchClause: "catch clause",
    +  ForOfStatement: "for-of statement",
    +  ForInStatement: "for-in statement",
    +  ForStatement: "for-loop",
    +  FormalParameters: "function parameter list",
    +  Identifier: "identifier",
    +  ImportSpecifier: "import specifier",
    +  ImportDefaultSpecifier: "import default specifier",
    +  ImportNamespaceSpecifier: "import namespace specifier",
    +  ObjectPattern: "object destructuring pattern",
    +  ParenthesizedExpression: "parenthesized expression",
    +  RestElement: "rest element",
    +  UpdateExpression: {
    +    true: "prefix operation",
    +    false: "postfix operation"
    +  },
    +  VariableDeclarator: "variable declaration",
    +  YieldExpression: "yield expression"
    +};
    +const toNodeDescription = ({
    +  type,
    +  prefix
    +}) => type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type];
    +var StandardErrors = {
    +  AccessorIsGenerator: ({
    +    kind
    +  }) => `A ${kind}ter cannot be a generator.`,
    +  ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",
    +  AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",
    +  AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",
    +  AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",
    +  AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",
    +  AwaitInUsingBinding: "'await' is not allowed to be used as a name in 'using' declarations.",
    +  AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",
    +  AwaitNotInAsyncFunction: "'await' is only allowed within async functions.",
    +  BadGetterArity: "A 'get' accessor must not have any formal parameters.",
    +  BadSetterArity: "A 'set' accessor must have exactly one formal parameter.",
    +  BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.",
    +  ConstructorClassField: "Classes may not have a field named 'constructor'.",
    +  ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",
    +  ConstructorIsAccessor: "Class constructor may not be an accessor.",
    +  ConstructorIsAsync: "Constructor can't be an async function.",
    +  ConstructorIsGenerator: "Constructor can't be a generator.",
    +  DeclarationMissingInitializer: ({
    +    kind
    +  }) => `Missing initializer in ${kind} declaration.`,
    +  DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",
    +  DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.",
    +  DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",
    +  DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",
    +  DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.",
    +  DecoratorSemicolon: "Decorators must not be followed by a semicolon.",
    +  DecoratorStaticBlock: "Decorators can't be used with a static block.",
    +  DeletePrivateField: "Deleting a private field is not allowed.",
    +  DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",
    +  DuplicateConstructor: "Duplicate constructor in the same class.",
    +  DuplicateDefaultExport: "Only one default export allowed per module.",
    +  DuplicateExport: ({
    +    exportName
    +  }) => `\`${exportName}\` has already been exported. Exported identifiers must be unique.`,
    +  DuplicateProto: "Redefinition of __proto__ property.",
    +  DuplicateRegExpFlags: "Duplicate regular expression flag.",
    +  ElementAfterRest: "Rest element must be last element.",
    +  EscapedCharNotAnIdentifier: "Invalid Unicode escape.",
    +  ExportBindingIsString: ({
    +    localName,
    +    exportName
    +  }) => `A string literal cannot be used as an exported binding without \`from\`.\n- Did you mean \`export { '${localName}' as '${exportName}' } from 'some-module'\`?`,
    +  ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",
    +  ForInOfLoopInitializer: ({
    +    type
    +  }) => `'${type === "ForInStatement" ? "for-in" : "for-of"}' loop variable declaration may not have an initializer.`,
    +  ForInUsing: "For-in loop may not start with 'using' declaration.",
    +  ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",
    +  ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",
    +  GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",
    +  IllegalBreakContinue: ({
    +    type
    +  }) => `Unsyntactic ${type === "BreakStatement" ? "break" : "continue"}.`,
    +  IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",
    +  IllegalReturn: "'return' outside of function.",
    +  ImportBindingIsString: ({
    +    importName
    +  }) => `A string literal cannot be used as an imported binding.\n- Did you mean \`import { "${importName}" as foo }\`?`,
    +  ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",
    +  ImportCallArity: ({
    +    maxArgumentCount
    +  }) => `\`import()\` requires exactly ${maxArgumentCount === 1 ? "one argument" : "one or two arguments"}.`,
    +  ImportCallNotNewExpression: "Cannot use new with import(...).",
    +  ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
    +  ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.",
    +  ImportReflectionHasAssertion: "`import module x` cannot have assertions.",
    +  ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.',
    +  IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.",
    +  InvalidBigIntLiteral: "Invalid BigIntLiteral.",
    +  InvalidCodePoint: "Code point out of bounds.",
    +  InvalidCoverInitializedName: "Invalid shorthand property initializer.",
    +  InvalidDecimal: "Invalid decimal.",
    +  InvalidDigit: ({
    +    radix
    +  }) => `Expected number in radix ${radix}.`,
    +  InvalidEscapeSequence: "Bad character escape sequence.",
    +  InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",
    +  InvalidEscapedReservedWord: ({
    +    reservedWord
    +  }) => `Escape sequence in keyword ${reservedWord}.`,
    +  InvalidIdentifier: ({
    +    identifierName
    +  }) => `Invalid identifier ${identifierName}.`,
    +  InvalidLhs: ({
    +    ancestor
    +  }) => `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,
    +  InvalidLhsBinding: ({
    +    ancestor
    +  }) => `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,
    +  InvalidNumber: "Invalid number.",
    +  InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",
    +  InvalidOrUnexpectedToken: ({
    +    unexpected
    +  }) => `Unexpected character '${unexpected}'.`,
    +  InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",
    +  InvalidPrivateFieldResolution: ({
    +    identifierName
    +  }) => `Private name #${identifierName} is not defined.`,
    +  InvalidPropertyBindingPattern: "Binding member expression.",
    +  InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",
    +  InvalidRestAssignmentPattern: "Invalid rest operator's argument.",
    +  LabelRedeclaration: ({
    +    labelName
    +  }) => `Label '${labelName}' is already declared.`,
    +  LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.",
    +  LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",
    +  MalformedRegExpFlags: "Invalid regular expression flag.",
    +  MissingClassName: "A class name is required.",
    +  MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",
    +  MissingSemicolon: "Missing semicolon.",
    +  MissingPlugin: ({
    +    missingPlugin
    +  }) => `This experimental syntax requires enabling the parser plugin: ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
    +  MissingOneOfPlugins: ({
    +    missingPlugin
    +  }) => `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin.map(name => JSON.stringify(name)).join(", ")}.`,
    +  MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",
    +  MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",
    +  ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",
    +  ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",
    +  ModuleAttributesWithDuplicateKeys: ({
    +    key
    +  }) => `Duplicate key "${key}" is not allowed in module attributes.`,
    +  ModuleExportNameHasLoneSurrogate: ({
    +    surrogateCharCode
    +  }) => `An export name cannot include a lone surrogate, found '\\u${surrogateCharCode.toString(16)}'.`,
    +  ModuleExportUndefined: ({
    +    localName
    +  }) => `Export '${localName}' is not defined.`,
    +  MultipleDefaultsInSwitch: "Multiple default clauses.",
    +  NewlineAfterThrow: "Illegal newline after throw.",
    +  NoCatchOrFinally: "Missing catch or finally clause.",
    +  NumberIdentifier: "Identifier directly after number.",
    +  NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",
    +  ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",
    +  OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",
    +  OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",
    +  OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",
    +  ParamDupe: "Argument name clash.",
    +  PatternHasAccessor: "Object pattern can't contain getter or setter.",
    +  PatternHasMethod: "Object pattern can't contain methods.",
    +  PrivateInExpectedIn: ({
    +    identifierName
    +  }) => `Private names are only allowed in property accesses (\`obj.#${identifierName}\`) or in \`in\` expressions (\`#${identifierName} in obj\`).`,
    +  PrivateNameRedeclaration: ({
    +    identifierName
    +  }) => `Duplicate private name #${identifierName}.`,
    +  RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    +  RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    +  RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
    +  RecordNoProto: "'__proto__' is not allowed in Record expressions.",
    +  RestTrailingComma: "Unexpected trailing comma after rest element.",
    +  SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.",
    +  SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",
    +  StaticPrototype: "Classes may not have static property named prototype.",
    +  SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",
    +  SuperPrivateField: "Private fields can't be accessed on super.",
    +  TrailingDecorator: "Decorators must be attached to a class element.",
    +  TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    +  TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    +  TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
    +  UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",
    +  UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',
    +  UnexpectedDigitAfterHash: "Unexpected digit after hash token.",
    +  UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",
    +  UnexpectedKeyword: ({
    +    keyword
    +  }) => `Unexpected keyword '${keyword}'.`,
    +  UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",
    +  UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",
    +  UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",
    +  UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",
    +  UnexpectedPrivateField: "Unexpected private name.",
    +  UnexpectedReservedWord: ({
    +    reservedWord
    +  }) => `Unexpected reserved word '${reservedWord}'.`,
    +  UnexpectedSuper: "'super' is only allowed in object methods and classes.",
    +  UnexpectedToken: ({
    +    expected,
    +    unexpected
    +  }) => `Unexpected token${unexpected ? ` '${unexpected}'.` : ""}${expected ? `, expected "${expected}"` : ""}`,
    +  UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",
    +  UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.",
    +  UnsupportedBind: "Binding should be performed on object property.",
    +  UnsupportedDecoratorExport: "A decorated export must export a class declaration.",
    +  UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",
    +  UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",
    +  UnsupportedMetaProperty: ({
    +    target,
    +    onlyValidPropertyName
    +  }) => `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,
    +  UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",
    +  UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",
    +  UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",
    +  UnterminatedComment: "Unterminated comment.",
    +  UnterminatedRegExp: "Unterminated regular expression.",
    +  UnterminatedString: "Unterminated string constant.",
    +  UnterminatedTemplate: "Unterminated template.",
    +  UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.",
    +  VarRedeclaration: ({
    +    identifierName
    +  }) => `Identifier '${identifierName}' has already been declared.`,
    +  YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",
    +  YieldInParameter: "Yield expression is not allowed in formal parameters.",
    +  ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."
    +};
    +var StrictModeErrors = {
    +  StrictDelete: "Deleting local variable in strict mode.",
    +  StrictEvalArguments: ({
    +    referenceName
    +  }) => `Assigning to '${referenceName}' in strict mode.`,
    +  StrictEvalArgumentsBinding: ({
    +    bindingName
    +  }) => `Binding '${bindingName}' in strict mode.`,
    +  StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",
    +  StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",
    +  StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",
    +  StrictWith: "'with' in strict mode."
    +};
    +const UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]);
    +var PipelineOperatorErrors = {
    +  PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",
    +  PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
    +  PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",
    +  PipeTopicUnconfiguredToken: ({
    +    token
    +  }) => `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "${token}" }.`,
    +  PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",
    +  PipeUnparenthesizedBody: ({
    +    type
    +  }) => `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({
    +    type
    +  })}; please wrap it in parentheses.`,
    +  PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',
    +  PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",
    +  PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",
    +  PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",
    +  PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",
    +  PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'
    +};
    +const _excluded$1 = ["toMessage"],
    +  _excluded2$1 = ["message"];
    +function toParseErrorConstructor(_ref) {
    +  let {
    +      toMessage
    +    } = _ref,
    +    properties = _objectWithoutPropertiesLoose(_ref, _excluded$1);
    +  return function constructor({
    +    loc,
    +    details
    +  }) {
    +    return instantiate(SyntaxError, Object.assign({}, properties, {
    +      loc
    +    }), {
    +      clone(overrides = {}) {
    +        const loc = overrides.loc || {};
    +        return constructor({
    +          loc: new Position("line" in loc ? loc.line : this.loc.line, "column" in loc ? loc.column : this.loc.column, "index" in loc ? loc.index : this.loc.index),
    +          details: Object.assign({}, this.details, overrides.details)
    +        });
    +      },
    +      details: {
    +        value: details,
    +        enumerable: false
    +      },
    +      message: {
    +        get() {
    +          return `${toMessage(this.details)} (${this.loc.line}:${this.loc.column})`;
    +        },
    +        set(value) {
    +          Object.defineProperty(this, "message", {
    +            value
    +          });
    +        }
    +      },
    +      pos: {
    +        reflect: "loc.index",
    +        enumerable: true
    +      },
    +      missingPlugin: "missingPlugin" in details && {
    +        reflect: "details.missingPlugin",
    +        enumerable: true
    +      }
    +    });
    +  };
     }
    -function tokenIsTemplate(token) {
    -  return token >= 24 && token <= 25;
    +function ParseErrorEnum(argument, syntaxPlugin) {
    +  if (Array.isArray(argument)) {
    +    return parseErrorTemplates => ParseErrorEnum(parseErrorTemplates, argument[0]);
    +  }
    +  const ParseErrorConstructors = {};
    +  for (const reasonCode of Object.keys(argument)) {
    +    const template = argument[reasonCode];
    +    const _ref2 = typeof template === "string" ? {
    +        message: () => template
    +      } : typeof template === "function" ? {
    +        message: template
    +      } : template,
    +      {
    +        message
    +      } = _ref2,
    +      rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
    +    const toMessage = typeof message === "string" ? () => message : message;
    +    ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({
    +      code: ParseErrorCode.SyntaxError,
    +      reasonCode,
    +      toMessage
    +    }, syntaxPlugin ? {
    +      syntaxPlugin
    +    } : {}, rest));
    +  }
    +  return ParseErrorConstructors;
     }
    -function getExportedToken(token) {
    -  return tokenTypes[token];
    +const Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors));
    +const {
    +  defineProperty
    +} = Object;
    +const toUnenumerable = (object, key) => defineProperty(object, key, {
    +  enumerable: false,
    +  value: object[key]
    +});
    +function toESTreeLocation(node) {
    +  node.loc.start && toUnenumerable(node.loc.start, "index");
    +  node.loc.end && toUnenumerable(node.loc.end, "index");
    +  return node;
     }
    -{
    -  tokenTypes[8].updateContext = context => {
    -    context.pop();
    -  };
    -  tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = context => {
    -    context.push(types.brace);
    -  };
    -  tokenTypes[22].updateContext = context => {
    -    if (context[context.length - 1] === types.template) {
    -      context.pop();
    +var estree = superClass => class ESTreeParserMixin extends superClass {
    +  parse() {
    +    const file = toESTreeLocation(super.parse());
    +    if (this.options.tokens) {
    +      file.tokens = file.tokens.map(toESTreeLocation);
    +    }
    +    return file;
    +  }
    +  parseRegExpLiteral({
    +    pattern,
    +    flags
    +  }) {
    +    let regex = null;
    +    try {
    +      regex = new RegExp(pattern, flags);
    +    } catch (e) {}
    +    const node = this.estreeParseLiteral(regex);
    +    node.regex = {
    +      pattern,
    +      flags
    +    };
    +    return node;
    +  }
    +  parseBigIntLiteral(value) {
    +    let bigInt;
    +    try {
    +      bigInt = BigInt(value);
    +    } catch (_unused) {
    +      bigInt = null;
    +    }
    +    const node = this.estreeParseLiteral(bigInt);
    +    node.bigint = String(node.value || value);
    +    return node;
    +  }
    +  parseDecimalLiteral(value) {
    +    const decimal = null;
    +    const node = this.estreeParseLiteral(decimal);
    +    node.decimal = String(node.value || value);
    +    return node;
    +  }
    +  estreeParseLiteral(value) {
    +    return this.parseLiteral(value, "Literal");
    +  }
    +  parseStringLiteral(value) {
    +    return this.estreeParseLiteral(value);
    +  }
    +  parseNumericLiteral(value) {
    +    return this.estreeParseLiteral(value);
    +  }
    +  parseNullLiteral() {
    +    return this.estreeParseLiteral(null);
    +  }
    +  parseBooleanLiteral(value) {
    +    return this.estreeParseLiteral(value);
    +  }
    +  directiveToStmt(directive) {
    +    const expression = directive.value;
    +    delete directive.value;
    +    expression.type = "Literal";
    +    expression.raw = expression.extra.raw;
    +    expression.value = expression.extra.expressionValue;
    +    const stmt = directive;
    +    stmt.type = "ExpressionStatement";
    +    stmt.expression = expression;
    +    stmt.directive = expression.extra.rawValue;
    +    delete expression.extra;
    +    return stmt;
    +  }
    +  initFunction(node, isAsync) {
    +    super.initFunction(node, isAsync);
    +    node.expression = false;
    +  }
    +  checkDeclaration(node) {
    +    if (node != null && this.isObjectProperty(node)) {
    +      this.checkDeclaration(node.value);
    +    } else {
    +      super.checkDeclaration(node);
    +    }
    +  }
    +  getObjectOrClassMethodParams(method) {
    +    return method.value.params;
    +  }
    +  isValidDirective(stmt) {
    +    var _stmt$expression$extr;
    +    return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);
    +  }
    +  parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
    +    super.parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse);
    +    const directiveStatements = node.directives.map(d => this.directiveToStmt(d));
    +    node.body = directiveStatements.concat(node.body);
    +    delete node.directives;
    +  }
    +  pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
    +    this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);
    +    if (method.typeParameters) {
    +      method.value.typeParameters = method.typeParameters;
    +      delete method.typeParameters;
    +    }
    +    classBody.body.push(method);
    +  }
    +  parsePrivateName() {
    +    const node = super.parsePrivateName();
    +    {
    +      if (!this.getPluginOption("estree", "classFeatures")) {
    +        return node;
    +      }
    +    }
    +    return this.convertPrivateNameToPrivateIdentifier(node);
    +  }
    +  convertPrivateNameToPrivateIdentifier(node) {
    +    const name = super.getPrivateNameSV(node);
    +    node = node;
    +    delete node.id;
    +    node.name = name;
    +    node.type = "PrivateIdentifier";
    +    return node;
    +  }
    +  isPrivateName(node) {
    +    {
    +      if (!this.getPluginOption("estree", "classFeatures")) {
    +        return super.isPrivateName(node);
    +      }
    +    }
    +    return node.type === "PrivateIdentifier";
    +  }
    +  getPrivateNameSV(node) {
    +    {
    +      if (!this.getPluginOption("estree", "classFeatures")) {
    +        return super.getPrivateNameSV(node);
    +      }
    +    }
    +    return node.name;
    +  }
    +  parseLiteral(value, type) {
    +    const node = super.parseLiteral(value, type);
    +    node.raw = node.extra.raw;
    +    delete node.extra;
    +    return node;
    +  }
    +  parseFunctionBody(node, allowExpression, isMethod = false) {
    +    super.parseFunctionBody(node, allowExpression, isMethod);
    +    node.expression = node.body.type !== "BlockStatement";
    +  }
    +  parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope = false) {
    +    let funcNode = this.startNode();
    +    funcNode.kind = node.kind;
    +    funcNode = super.parseMethod(funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
    +    funcNode.type = "FunctionExpression";
    +    delete funcNode.kind;
    +    node.value = funcNode;
    +    if (type === "ClassPrivateMethod") {
    +      node.computed = false;
    +    }
    +    return this.finishNode(node, "MethodDefinition");
    +  }
    +  parseClassProperty(...args) {
    +    const propertyNode = super.parseClassProperty(...args);
    +    {
    +      if (!this.getPluginOption("estree", "classFeatures")) {
    +        return propertyNode;
    +      }
    +    }
    +    propertyNode.type = "PropertyDefinition";
    +    return propertyNode;
    +  }
    +  parseClassPrivateProperty(...args) {
    +    const propertyNode = super.parseClassPrivateProperty(...args);
    +    {
    +      if (!this.getPluginOption("estree", "classFeatures")) {
    +        return propertyNode;
    +      }
    +    }
    +    propertyNode.type = "PropertyDefinition";
    +    propertyNode.computed = false;
    +    return propertyNode;
    +  }
    +  parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
    +    const node = super.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor);
    +    if (node) {
    +      node.type = "Property";
    +      if (node.kind === "method") {
    +        node.kind = "init";
    +      }
    +      node.shorthand = false;
    +    }
    +    return node;
    +  }
    +  parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
    +    const node = super.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
    +    if (node) {
    +      node.kind = "init";
    +      node.type = "Property";
    +    }
    +    return node;
    +  }
    +  isValidLVal(type, isUnparenthesizedInAssign, binding) {
    +    return type === "Property" ? "value" : super.isValidLVal(type, isUnparenthesizedInAssign, binding);
    +  }
    +  isAssignable(node, isBinding) {
    +    if (node != null && this.isObjectProperty(node)) {
    +      return this.isAssignable(node.value, isBinding);
    +    }
    +    return super.isAssignable(node, isBinding);
    +  }
    +  toAssignable(node, isLHS = false) {
    +    if (node != null && this.isObjectProperty(node)) {
    +      const {
    +        key,
    +        value
    +      } = node;
    +      if (this.isPrivateName(key)) {
    +        this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
    +      }
    +      this.toAssignable(value, isLHS);
         } else {
    -      context.push(types.template);
    +      super.toAssignable(node, isLHS);
         }
    -  };
    -  tokenTypes[140].updateContext = context => {
    -    context.push(types.j_expr, types.j_oTag);
    -  };
    -}
    -
    +  }
    +  toAssignableObjectExpressionProp(prop, isLast, isLHS) {
    +    if (prop.kind === "get" || prop.kind === "set") {
    +      this.raise(Errors.PatternHasAccessor, {
    +        at: prop.key
    +      });
    +    } else if (prop.method) {
    +      this.raise(Errors.PatternHasMethod, {
    +        at: prop.key
    +      });
    +    } else {
    +      super.toAssignableObjectExpressionProp(prop, isLast, isLHS);
    +    }
    +  }
    +  finishCallExpression(unfinished, optional) {
    +    const node = super.finishCallExpression(unfinished, optional);
    +    if (node.callee.type === "Import") {
    +      node.type = "ImportExpression";
    +      node.source = node.arguments[0];
    +      if (this.hasPlugin("importAssertions")) {
    +        var _node$arguments$;
    +        node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;
    +      }
    +      delete node.arguments;
    +      delete node.callee;
    +    }
    +    return node;
    +  }
    +  toReferencedArguments(node) {
    +    if (node.type === "ImportExpression") {
    +      return;
    +    }
    +    super.toReferencedArguments(node);
    +  }
    +  parseExport(unfinished, decorators) {
    +    const exportStartLoc = this.state.lastTokStartLoc;
    +    const node = super.parseExport(unfinished, decorators);
    +    switch (node.type) {
    +      case "ExportAllDeclaration":
    +        node.exported = null;
    +        break;
    +      case "ExportNamedDeclaration":
    +        if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {
    +          node.type = "ExportAllDeclaration";
    +          node.exported = node.specifiers[0].exported;
    +          delete node.specifiers;
    +        }
    +      case "ExportDefaultDeclaration":
    +        {
    +          var _declaration$decorato;
    +          const {
    +            declaration
    +          } = node;
    +          if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) {
    +            this.resetStartLocation(node, exportStartLoc);
    +          }
    +        }
    +        break;
    +    }
    +    return node;
    +  }
    +  parseSubscript(base, startLoc, noCalls, state) {
    +    const node = super.parseSubscript(base, startLoc, noCalls, state);
    +    if (state.optionalChainMember) {
    +      if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {
    +        node.type = node.type.substring(8);
    +      }
    +      if (state.stop) {
    +        const chain = this.startNodeAtNode(node);
    +        chain.expression = node;
    +        return this.finishNode(chain, "ChainExpression");
    +      }
    +    } else if (node.type === "MemberExpression" || node.type === "CallExpression") {
    +      node.optional = false;
    +    }
    +    return node;
    +  }
    +  hasPropertyAsPrivateName(node) {
    +    if (node.type === "ChainExpression") {
    +      node = node.expression;
    +    }
    +    return super.hasPropertyAsPrivateName(node);
    +  }
    +  isObjectProperty(node) {
    +    return node.type === "Property" && node.kind === "init" && !node.method;
    +  }
    +  isObjectMethod(node) {
    +    return node.method || node.kind === "get" || node.kind === "set";
    +  }
    +  finishNodeAt(node, type, endLoc) {
    +    return toESTreeLocation(super.finishNodeAt(node, type, endLoc));
    +  }
    +  resetStartLocation(node, startLoc) {
    +    super.resetStartLocation(node, startLoc);
    +    toESTreeLocation(node);
    +  }
    +  resetEndLocation(node, endLoc = this.state.lastTokEndLoc) {
    +    super.resetEndLocation(node, endLoc);
    +    toESTreeLocation(node);
    +  }
    +};
     let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ca\ua7d0\ua7d1\ua7d3\ua7d5-\ua7d9\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
     let nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0898-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f";
     const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
    @@ -1357,7 +1376,6 @@ function isIdentifierChar(code) {
       }
       return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
     }
    -
     const reservedWords = {
       keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
       strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
    @@ -1381,7 +1399,6 @@ function isStrictBindReservedWord(word, inModule) {
     function isKeyword(word) {
       return keywords.has(word);
     }
    -
     function isIteratorStart(current, next, next2) {
       return current === 64 && next === 64 && isIdentifierStart(next2);
     }
    @@ -1389,7 +1406,6 @@ const reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debu
     function canBeReservedWord(word) {
       return reservedWordLikeSet.has(word);
     }
    -
     const SCOPE_OTHER = 0b000000000,
       SCOPE_PROGRAM = 0b000000001,
       SCOPE_FUNCTION = 0b000000010,
    @@ -1438,7 +1454,6 @@ const CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FL
       CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,
       CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,
       CLASS_ELEMENT_OTHER = 0;
    -
     class Scope {
       constructor(flags) {
         this.var = new Set();
    @@ -1588,7 +1603,6 @@ class ScopeHandler {
         }
       }
     }
    -
     class FlowScope extends Scope {
       constructor(...args) {
         super(...args);
    @@ -1622,7 +1636,6 @@ class FlowScopeHandler extends ScopeHandler {
         }
       }
     }
    -
     class BaseParser {
       constructor() {
         this.sawUnambiguousESM = false;
    @@ -1650,7 +1663,6 @@ class BaseParser {
         return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];
       }
     }
    -
     function setTrailingComments(node, comments) {
       if (node.trailingComments === undefined) {
         node.trailingComments = comments;
    @@ -1816,7 +1828,6 @@ class CommentsParser extends BaseParser {
         }
       }
     }
    -
     const lineBreak = /\r\n?|[\n\u2028\u2029]/;
     const lineBreakG = new RegExp(lineBreak.source, "g");
     function isNewLine(code) {
    @@ -1861,7 +1872,6 @@ function isWhitespace(code) {
           return false;
       }
     }
    -
     class State {
       constructor() {
         this.strict = void 0;
    @@ -1932,7 +1942,6 @@ class State {
         return state;
       }
     }
    -
     var _isDigit = function isDigit(code) {
       return code >= 48 && code <= 57;
     };
    @@ -2218,7 +2227,6 @@ function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
         pos
       };
     }
    -
     const _excluded = ["at"],
       _excluded2 = ["at"];
     function buildPosition(pos, lineStart, curLine) {
    @@ -2665,7 +2673,7 @@ class Tokenizer extends CommentsParser {
           this.finishOp(37, 2);
           const lookaheadCh = this.input.codePointAt(this.state.pos);
           if (lookaheadCh === 94) {
    -        throw this.unexpected();
    +        this.unexpected();
           }
         } else {
           this.finishOp(44, 1);
    @@ -3310,7 +3318,6 @@ class Tokenizer extends CommentsParser {
         };
       }
     }
    -
     class ClassScope {
       constructor() {
         this.privateNames = new Set();
    @@ -3391,7 +3398,6 @@ class ClassScopeHandler {
         }
       }
     }
    -
     const kExpression = 0,
       kMaybeArrowParameterDeclaration = 1,
       kMaybeAsyncArrowParameterDeclaration = 2,
    @@ -3525,7 +3531,6 @@ function newAsyncArrowScope() {
     function newExpressionScope() {
       return new ExpressionScope();
     }
    -
     const PARAM = 0b0000,
       PARAM_YIELD = 0b0001,
       PARAM_AWAIT = 0b0010,
    @@ -3560,7 +3565,6 @@ class ProductionParameterHandler {
     function functionFlags(isAsync, isGenerator) {
       return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);
     }
    -
     class UtilParser extends Tokenizer {
       addExtra(node, key, value, enumerable = true) {
         if (!node) return;
    @@ -3603,7 +3607,7 @@ class UtilParser extends Tokenizer {
               at: this.state.startLoc
             });
           }
    -      throw this.unexpected(null, token);
    +      this.unexpected(null, token);
         }
       }
       canInsertSemicolon() {
    @@ -3780,7 +3784,6 @@ class ExpressionErrors {
         this.optionalParametersLoc = null;
       }
     }
    -
     class Node {
       constructor(parser, pos, loc) {
         this.type = "";
    @@ -3892,7 +3895,6 @@ class NodeUtils extends UtilParser {
         this.resetStartLocation(node, locationNode.loc.start);
       }
     }
    -
     const reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
     const FlowErrors = ParseErrorEnum`flow`({
       AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",
    @@ -4011,7 +4013,7 @@ function partition(list, test) {
       return [list1, list2];
     }
     const FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/;
    -var flow = (superClass => class FlowParserMixin extends superClass {
    +var flow = superClass => class FlowParserMixin extends superClass {
       constructor(...args) {
         super(...args);
         this.flowPragma = undefined;
    @@ -4031,12 +4033,12 @@ var flow = (superClass => class FlowParserMixin extends superClass {
             this.flowPragma = null;
           }
         }
    -    return super.finishToken(type, val);
    +    super.finishToken(type, val);
       }
       addComment(comment) {
         if (this.flowPragma === undefined) {
           const matches = FLOW_PRAGMA_REGEX.exec(comment.value);
    -      if (!matches) ; else if (matches[1] === "flow") {
    +      if (!matches) ;else if (matches[1] === "flow") {
             this.flowPragma = "flow";
           } else if (matches[1] === "noflow") {
             this.flowPragma = "noflow";
    @@ -4044,7 +4046,7 @@ var flow = (superClass => class FlowParserMixin extends superClass {
             throw new Error("Unexpected flow pragma");
           }
         }
    -    return super.addComment(comment);
    +    super.addComment(comment);
       }
       flowParseTypeInitialiser(tok) {
         const oldInType = this.state.inType;
    @@ -4146,7 +4148,7 @@ var flow = (superClass => class FlowParserMixin extends superClass {
         } else if (this.match(82)) {
           return this.flowParseDeclareExportDeclaration(node, insideModule);
         } else {
    -      throw this.unexpected();
    +      this.unexpected();
         }
       }
       flowParseDeclareVariable(node) {
    @@ -4248,7 +4250,7 @@ var flow = (superClass => class FlowParserMixin extends superClass {
             return node;
           }
         }
    -    throw this.unexpected();
    +    this.unexpected();
       }
       flowParseDeclareModuleExports(node) {
         this.next();
    @@ -4271,10 +4273,10 @@ var flow = (superClass => class FlowParserMixin extends superClass {
       }
       flowParseDeclareInterface(node) {
         this.next();
    -    this.flowParseInterfaceish(node);
    +    this.flowParseInterfaceish(node, false);
         return this.finishNode(node, "DeclareInterface");
       }
    -  flowParseInterfaceish(node, isClass = false) {
    +  flowParseInterfaceish(node, isClass) {
         node.id = this.flowParseRestrictedIdentifier(!isClass, true);
         this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.loc.start);
         if (this.match(47)) {
    @@ -4290,17 +4292,17 @@ var flow = (superClass => class FlowParserMixin extends superClass {
             node.extends.push(this.flowParseInterfaceExtends());
           } while (!isClass && this.eat(12));
         }
    -    if (this.isContextual(115)) {
    -      this.next();
    -      do {
    -        node.mixins.push(this.flowParseInterfaceExtends());
    -      } while (this.eat(12));
    -    }
    -    if (this.isContextual(111)) {
    -      this.next();
    -      do {
    -        node.implements.push(this.flowParseInterfaceExtends());
    -      } while (this.eat(12));
    +    if (isClass) {
    +      if (this.eatContextual(115)) {
    +        do {
    +          node.mixins.push(this.flowParseInterfaceExtends());
    +        } while (this.eat(12));
    +      }
    +      if (this.eatContextual(111)) {
    +        do {
    +          node.implements.push(this.flowParseInterfaceExtends());
    +        } while (this.eat(12));
    +      }
         }
         node.body = this.flowParseObjectType({
           allowStatic: isClass,
    @@ -4321,7 +4323,7 @@ var flow = (superClass => class FlowParserMixin extends superClass {
         return this.finishNode(node, "InterfaceExtends");
       }
       flowParseInterface(node) {
    -    this.flowParseInterfaceish(node);
    +    this.flowParseInterfaceish(node, false);
         return this.finishNode(node, "InterfaceDeclaration");
       }
       checkNotUnderscore(word) {
    @@ -4955,7 +4957,8 @@ var flow = (superClass => class FlowParserMixin extends superClass {
                 at: this.state.startLoc
               });
             }
    -        throw this.unexpected();
    +        this.unexpected();
    +        return;
           case 132:
             return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
           case 133:
    @@ -4986,7 +4989,7 @@ var flow = (superClass => class FlowParserMixin extends superClass {
               return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier());
             }
         }
    -    throw this.unexpected();
    +    this.unexpected();
       }
       flowParsePostfixType() {
         const startLoc = this.state.startLoc;
    @@ -5107,9 +5110,10 @@ var flow = (superClass => class FlowParserMixin extends superClass {
       }
       parseFunctionBody(node, allowExpressionBody, isMethod = false) {
         if (allowExpressionBody) {
    -      return this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));
    +      this.forwardNoArrowParamsConversionAt(node, () => super.parseFunctionBody(node, true, isMethod));
    +      return;
         }
    -    return super.parseFunctionBody(node, false, isMethod);
    +    super.parseFunctionBody(node, false, isMethod);
       }
       parseFunctionBodyAndFinish(node, type, isMethod = false) {
         if (this.match(14)) {
    @@ -5412,19 +5416,20 @@ var flow = (superClass => class FlowParserMixin extends superClass {
       getTokenFromCode(code) {
         const next = this.input.charCodeAt(this.state.pos + 1);
         if (code === 123 && next === 124) {
    -      return this.finishOp(6, 2);
    +      this.finishOp(6, 2);
         } else if (this.state.inType && (code === 62 || code === 60)) {
    -      return this.finishOp(code === 62 ? 48 : 47, 1);
    +      this.finishOp(code === 62 ? 48 : 47, 1);
         } else if (this.state.inType && code === 63) {
           if (next === 46) {
    -        return this.finishOp(18, 2);
    +        this.finishOp(18, 2);
    +      } else {
    +        this.finishOp(17, 1);
           }
    -      return this.finishOp(17, 1);
         } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {
           this.state.pos += 2;
    -      return this.readIterator();
    +      this.readIterator();
         } else {
    -      return super.getTokenFromCode(code);
    +      super.getTokenFromCode(code);
         }
       }
       isAssignable(node, isBinding) {
    @@ -5854,7 +5859,7 @@ var flow = (superClass => class FlowParserMixin extends superClass {
             });
           }
         }
    -    return super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged);
    +    super.checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged);
       }
       parseParenAndDistinguishExpression(canBeArrow) {
         return super.parseParenAndDistinguishExpression(canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1);
    @@ -6365,8 +6370,7 @@ var flow = (superClass => class FlowParserMixin extends superClass {
       maybeUnwrapTypeCastExpression(node) {
         return node.type === "TypeCastExpression" ? node.expression : node;
       }
    -});
    -
    +};
     const entities = {
       __proto__: null,
       quot: "\u0022",
    @@ -6623,7 +6627,6 @@ const entities = {
       hearts: "\u2665",
       diams: "\u2666"
     };
    -
     const JsxErrors = ParseErrorEnum`jsx`({
       AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.",
       MissingClosingTagElement: ({
    @@ -6654,7 +6657,7 @@ function getQualifiedJSXName(object) {
       }
       throw new Error("Node had unexpected type: " + object.type);
     }
    -var jsx = (superClass => class JSXParserMixin extends superClass {
    +var jsx = superClass => class JSXParserMixin extends superClass {
       jsxReadToken() {
         let out = "";
         let chunkStart = this.state.pos;
    @@ -6671,12 +6674,15 @@ var jsx = (superClass => class JSXParserMixin extends superClass {
               if (this.state.pos === this.state.start) {
                 if (ch === 60 && this.state.canStartJSXElement) {
                   ++this.state.pos;
    -              return this.finishToken(140);
    +              this.finishToken(140);
    +            } else {
    +              super.getTokenFromCode(ch);
                 }
    -            return super.getTokenFromCode(ch);
    +            return;
               }
               out += this.input.slice(chunkStart, this.state.pos);
    -          return this.finishToken(139, out);
    +          this.finishToken(139, out);
    +          return;
             case 38:
               out += this.input.slice(chunkStart, this.state.pos);
               out += this.jsxReadEntity();
    @@ -6733,7 +6739,7 @@ var jsx = (superClass => class JSXParserMixin extends superClass {
           }
         }
         out += this.input.slice(chunkStart, this.state.pos++);
    -    return this.finishToken(131, out);
    +    this.finishToken(131, out);
       }
       jsxReadEntity() {
         const startPos = ++this.state.pos;
    @@ -6773,7 +6779,7 @@ var jsx = (superClass => class JSXParserMixin extends superClass {
         do {
           ch = this.input.charCodeAt(++this.state.pos);
         } while (isIdentifierChar(ch) || ch === 45);
    -    return this.finishToken(138, this.input.slice(start, this.state.pos));
    +    this.finishToken(138, this.input.slice(start, this.state.pos));
       }
       jsxParseIdentifier() {
         const node = this.startNode();
    @@ -6933,7 +6939,7 @@ var jsx = (superClass => class JSXParserMixin extends superClass {
                   break;
                 }
               default:
    -            throw this.unexpected();
    +            this.unexpected();
             }
           }
           if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {
    @@ -6999,25 +7005,30 @@ var jsx = (superClass => class JSXParserMixin extends superClass {
       getTokenFromCode(code) {
         const context = this.curContext();
         if (context === types.j_expr) {
    -      return this.jsxReadToken();
    +      this.jsxReadToken();
    +      return;
         }
         if (context === types.j_oTag || context === types.j_cTag) {
           if (isIdentifierStart(code)) {
    -        return this.jsxReadWord();
    +        this.jsxReadWord();
    +        return;
           }
           if (code === 62) {
             ++this.state.pos;
    -        return this.finishToken(141);
    +        this.finishToken(141);
    +        return;
           }
           if ((code === 34 || code === 39) && context === types.j_oTag) {
    -        return this.jsxReadString(code);
    +        this.jsxReadString(code);
    +        return;
           }
         }
         if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {
           ++this.state.pos;
    -      return this.finishToken(140);
    +      this.finishToken(140);
    +      return;
         }
    -    return super.getTokenFromCode(code);
    +    super.getTokenFromCode(code);
       }
       updateContext(prevType) {
         const {
    @@ -7042,8 +7053,7 @@ var jsx = (superClass => class JSXParserMixin extends superClass {
           this.state.canStartJSXElement = tokenComesBeforeExpression(type);
         }
       }
    -});
    -
    +};
     class TypeScriptScope extends Scope {
       constructor(...args) {
         super(...args);
    @@ -7151,16 +7161,10 @@ class TypeScriptScopeHandler extends ScopeHandler {
         super.checkLocalExport(id);
       }
     }
    -
     const getOwn$1 = (object, key) => Object.hasOwnProperty.call(object, key) && object[key];
     const unwrapParenthesizedExpression = node => {
       return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;
     };
    -var ParseBindingListFlags = {
    -  ALLOW_EMPTY: 1,
    -  IS_FUNCTION_PARAMS: 2,
    -  IS_CONSTRUCTOR_PARAMS: 4
    -};
     class LValParser extends NodeUtils {
       toAssignable(node, isLHS = false) {
         var _node$extra, _node$extra3;
    @@ -7345,7 +7349,7 @@ class LValParser extends NodeUtils {
             {
               const node = this.startNode();
               this.next();
    -          node.elements = this.parseBindingList(3, 93, ParseBindingListFlags.ALLOW_EMPTY);
    +          node.elements = this.parseBindingList(3, 93, 1);
               return this.finishNode(node, "ArrayPattern");
             }
           case 5:
    @@ -7354,7 +7358,7 @@ class LValParser extends NodeUtils {
         return this.parseIdentifier();
       }
       parseBindingList(close, closeCharCode, flags) {
    -    const allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;
    +    const allowEmpty = flags & 1;
         const elts = [];
         let first = true;
         while (!this.eat(close)) {
    @@ -7557,7 +7561,6 @@ class LValParser extends NodeUtils {
         return true;
       }
     }
    -
     const getOwn = (object, key) => Object.hasOwnProperty.call(object, key) && object[key];
     function nonNull(x) {
       if (x == null) {
    @@ -7649,6 +7652,7 @@ const TSErrors = ParseErrorEnum`typescript`({
         typeParameterName
       }) => `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,
       StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.",
    +  TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).",
       TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
       TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.",
       TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",
    @@ -7695,7 +7699,7 @@ function tsIsAccessModifier(modifier) {
     function tsIsVarianceAnnotations(modifier) {
       return modifier === "in" || modifier === "out";
     }
    -var typescript = (superClass => class TypeScriptParserMixin extends superClass {
    +var typescript = superClass => class TypeScriptParserMixin extends superClass {
       constructor(...args) {
         super(...args);
         this.tsParseInOutModifiers = this.tsParseModifiers.bind(this, {
    @@ -7827,7 +7831,6 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
           case "TypeParametersOrArguments":
             return this.match(48);
         }
    -    throw new Error("Unreachable");
       }
       tsParseList(kind, parseElement) {
         const result = [];
    @@ -7996,7 +7999,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
         }
       }
       tsParseBindingListForSignature() {
    -    return super.parseBindingList(11, 41, ParseBindingListFlags.IS_FUNCTION_PARAMS).map(pattern => {
    +    return super.parseBindingList(11, 41, 2).map(pattern => {
           if (pattern.type !== "Identifier" && pattern.type !== "RestElement" && pattern.type !== "ObjectPattern" && pattern.type !== "ArrayPattern") {
             this.raise(TSErrors.UnsupportedSignatureParameterKind, {
               at: pattern,
    @@ -8237,21 +8240,61 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
           startLoc
         } = this.state;
         const rest = this.eat(21);
    -    let type = this.tsParseType();
    -    const optional = this.eat(17);
    -    const labeled = this.eat(14);
    +    let labeled;
    +    let label;
    +    let optional;
    +    let type;
    +    const isWord = tokenIsKeywordOrIdentifier(this.state.type);
    +    const chAfterWord = isWord ? this.lookaheadCharCode() : null;
    +    if (chAfterWord === 58) {
    +      labeled = true;
    +      optional = false;
    +      label = this.parseIdentifier(true);
    +      this.expect(14);
    +      type = this.tsParseType();
    +    } else if (chAfterWord === 63) {
    +      optional = true;
    +      const startLoc = this.state.startLoc;
    +      const wordName = this.state.value;
    +      const typeOrLabel = this.tsParseNonArrayType();
    +      if (this.lookaheadCharCode() === 58) {
    +        labeled = true;
    +        label = this.createIdentifier(this.startNodeAt(startLoc), wordName);
    +        this.expect(17);
    +        this.expect(14);
    +        type = this.tsParseType();
    +      } else {
    +        labeled = false;
    +        type = typeOrLabel;
    +        this.expect(17);
    +      }
    +    } else {
    +      type = this.tsParseType();
    +      optional = this.eat(17);
    +      labeled = this.eat(14);
    +    }
         if (labeled) {
    -      const labeledNode = this.startNodeAtNode(type);
    -      labeledNode.optional = optional;
    -      if (type.type === "TSTypeReference" && !type.typeParameters && type.typeName.type === "Identifier") {
    -        labeledNode.label = type.typeName;
    +      let labeledNode;
    +      if (label) {
    +        labeledNode = this.startNodeAtNode(label);
    +        labeledNode.optional = optional;
    +        labeledNode.label = label;
    +        labeledNode.elementType = type;
    +        if (this.eat(17)) {
    +          labeledNode.optional = true;
    +          this.raise(TSErrors.TupleOptionalAfterType, {
    +            at: this.state.lastTokStartLoc
    +          });
    +        }
           } else {
    +        labeledNode = this.startNodeAtNode(type);
    +        labeledNode.optional = optional;
             this.raise(TSErrors.InvalidTupleMemberLabel, {
               at: type
             });
             labeledNode.label = type;
    +        labeledNode.elementType = this.tsParseType();
           }
    -      labeledNode.elementType = this.tsParseType();
           type = this.finishNode(labeledNode, "TSNamedTupleMember");
         } else if (optional) {
           const optionalTypeNode = this.startNodeAtNode(type);
    @@ -8293,7 +8336,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
             case 86:
               return super.parseExprAtom();
             default:
    -          throw this.unexpected();
    +          this.unexpected();
           }
         })();
         return this.finishNode(node, "TSLiteralType");
    @@ -8328,7 +8371,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
               const node = this.startNode();
               const nextToken = this.lookahead();
               if (nextToken.type !== 132 && nextToken.type !== 133) {
    -            throw this.unexpected();
    +            this.unexpected();
               }
               node.literal = this.parseMaybeUnary();
               return this.finishNode(node, "TSLiteralType");
    @@ -8365,7 +8408,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
               }
             }
         }
    -    throw this.unexpected();
    +    this.unexpected();
       }
       tsParseArrayTypeOrHigher() {
         let type = this.tsParseNonArrayType();
    @@ -8477,7 +8520,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
           } = this.state;
           const previousErrorCount = errors.length;
           try {
    -        super.parseBindingList(3, 93, ParseBindingListFlags.ALLOW_EMPTY);
    +        super.parseBindingList(3, 93, 1);
             return errors.length === previousErrorCount;
           } catch (_unused2) {
             return false;
    @@ -8824,7 +8867,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
         this.expectContextual(117);
         this.expect(10);
         if (!this.match(131)) {
    -      throw this.unexpected();
    +      this.unexpected();
         }
         node.expression = super.parseExprAtom();
         this.expect(11);
    @@ -9024,7 +9067,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
         const accessibility = modified.accessibility;
         const override = modified.override;
         const readonly = modified.readonly;
    -    if (!(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) && (accessibility || readonly || override)) {
    +    if (!(flags & 4) && (accessibility || readonly || override)) {
           this.raise(TSErrors.UnexpectedParameterModifier, {
             at: startLoc
           });
    @@ -9721,7 +9764,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
         return super.parseArrow(node);
       }
       parseAssignableListItemTypes(param, flags) {
    -    if (!(flags & ParseBindingListFlags.IS_FUNCTION_PARAMS)) return param;
    +    if (!(flags & 2)) return param;
         if (this.eat(17)) {
           param.optional = true;
         }
    @@ -9849,13 +9892,15 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
       getTokenFromCode(code) {
         if (this.state.inType) {
           if (code === 62) {
    -        return this.finishOp(48, 1);
    +        this.finishOp(48, 1);
    +        return;
           }
           if (code === 60) {
    -        return this.finishOp(47, 1);
    +        this.finishOp(47, 1);
    +        return;
           }
         }
    -    return super.getTokenFromCode(code);
    +    super.getTokenFromCode(code);
       }
       reScan_lt_gt() {
         const {
    @@ -10072,7 +10117,7 @@ var typescript = (superClass => class TypeScriptParserMixin extends superClass {
           this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? BIND_TS_TYPE_IMPORT : BIND_FLAGS_TS_IMPORT);
         }
       }
    -});
    +};
     function isPossiblyLiteralEnum(expression) {
       if (expression.type !== "MemberExpression") return false;
       const {
    @@ -10142,12 +10187,11 @@ function isUncomputedMemberExpressionChain(expression) {
       if (expression.computed) return false;
       return isUncomputedMemberExpressionChain(expression.object);
     }
    -
     const PlaceholderErrors = ParseErrorEnum`placeholders`({
       ClassNameIsRequired: "A class name is required.",
       UnexpectedSpace: "Unexpected space in placeholder."
     });
    -var placeholders = (superClass => class PlaceholdersParserMixin extends superClass {
    +var placeholders = superClass => class PlaceholdersParserMixin extends superClass {
       parsePlaceholder(expectedNode) {
         if (this.match(142)) {
           const node = this.startNode();
    @@ -10166,9 +10210,10 @@ var placeholders = (superClass => class PlaceholdersParserMixin extends superCla
       }
       getTokenFromCode(code) {
         if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
    -      return this.finishOp(142, 2);
    +      this.finishOp(142, 2);
    +    } else {
    +      super.getTokenFromCode(code);
         }
    -    return super.getTokenFromCode(code);
       }
       parseExprAtom(refExpressionErrors) {
         return this.parsePlaceholder("Expression") || super.parseExprAtom(refExpressionErrors);
    @@ -10326,9 +10371,8 @@ var placeholders = (superClass => class PlaceholdersParserMixin extends superCla
           });
         }
       }
    -});
    -
    -var v8intrinsic = (superClass => class V8IntrinsicMixin extends superClass {
    +};
    +var v8intrinsic = superClass => class V8IntrinsicMixin extends superClass {
       parseV8Intrinsic() {
         if (this.match(54)) {
           const v8IntrinsicStartLoc = this.state.startLoc;
    @@ -10348,8 +10392,7 @@ var v8intrinsic = (superClass => class V8IntrinsicMixin extends superClass {
       parseExprAtom(refExpressionErrors) {
         return this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors);
       }
    -});
    -
    +};
     function hasPlugin(plugins, expectedConfig) {
       const [expectedName, expectedOptions] = typeof expectedConfig === "string" ? [expectedConfig, {}] : expectedConfig;
       const expectedKeys = Object.keys(expectedOptions);
    @@ -10464,38 +10507,6 @@ const mixinPlugins = {
       placeholders
     };
     const mixinPluginNames = Object.keys(mixinPlugins);
    -
    -const defaultOptions = {
    -  sourceType: "script",
    -  sourceFilename: undefined,
    -  startColumn: 0,
    -  startLine: 1,
    -  allowAwaitOutsideFunction: false,
    -  allowReturnOutsideFunction: false,
    -  allowNewTargetOutsideFunction: false,
    -  allowImportExportEverywhere: false,
    -  allowSuperOutsideMethod: false,
    -  allowUndeclaredExports: false,
    -  plugins: [],
    -  strictMode: null,
    -  ranges: false,
    -  tokens: false,
    -  createParenthesizedExpressions: false,
    -  errorRecovery: false,
    -  attachComment: true,
    -  annexB: true
    -};
    -function getOptions(opts) {
    -  if (opts && opts.annexB != null && opts.annexB !== false) {
    -    throw new Error("The `annexB` option can only be set to `false`.");
    -  }
    -  const options = {};
    -  for (const key of Object.keys(defaultOptions)) {
    -    options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];
    -  }
    -  return options;
    -}
    -
     class ExpressionParser extends LValParser {
       checkProto(prop, isRecord, protoRef, refExpressionErrors) {
         if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {
    @@ -11198,19 +11209,19 @@ class ExpressionParser extends LValParser {
               const pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
               if (pipeProposal) {
                 return this.parseTopicReference(pipeProposal);
    -          } else {
    -            throw this.unexpected();
               }
    +          this.unexpected();
    +          break;
             }
           case 47:
             {
               const lookaheadCh = this.input.codePointAt(this.nextTokenStart());
               if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {
                 this.expectOnePlugin(["jsx", "flow", "typescript"]);
    -            break;
               } else {
    -            throw this.unexpected();
    +            this.unexpected();
               }
    +          break;
             }
           default:
             if (tokenIsIdentifier(type)) {
    @@ -11245,7 +11256,7 @@ class ExpressionParser extends LValParser {
               }
               return id;
             } else {
    -          throw this.unexpected();
    +          this.unexpected();
             }
         }
       }
    @@ -11259,7 +11270,7 @@ class ExpressionParser extends LValParser {
           this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);
           return this.parseTopicReference(pipeProposal);
         } else {
    -      throw this.unexpected();
    +      this.unexpected();
         }
       }
       parseTopicReference(pipeProposal) {
    @@ -11831,7 +11842,7 @@ class ExpressionParser extends LValParser {
                   break;
                 }
               default:
    -            throw this.unexpected();
    +            this.unexpected();
             }
           }
           prop.key = key;
    @@ -12016,7 +12027,7 @@ class ExpressionParser extends LValParser {
         if (tokenIsKeywordOrIdentifier(type)) {
           name = this.state.value;
         } else {
    -      throw this.unexpected();
    +      this.unexpected();
         }
         const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);
         if (liberal) {
    @@ -12294,27 +12305,12 @@ class ExpressionParser extends LValParser {
       }
       parsePropertyNamePrefixOperator(prop) {}
     }
    -
     const loopLabel = {
         kind: "loop"
       },
       switchLabel = {
         kind: "switch"
       };
    -var ParseFunctionFlag = {
    -  Expression: 0,
    -  Declaration: 1,
    -  HangingDeclaration: 2,
    -  NullableId: 4,
    -  Async: 8
    -};
    -var ParseStatementFlag = {
    -  StatementOnly: 0,
    -  AllowImportExport: 1,
    -  AllowDeclaration: 2,
    -  AllowFunctionDeclaration: 4,
    -  AllowLabeledFunction: 8
    -};
     const loneSurrogate = /[\uD800-\uDFFF]/u;
     const keywordRelationalOperator = /in(?:stanceof)?/y;
     function babel7CompatTokens(tokens, input) {
    @@ -12522,23 +12518,23 @@ class StatementParser extends ExpressionParser {
         }
       }
       parseModuleItem() {
    -    return this.parseStatementLike(ParseStatementFlag.AllowImportExport | ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | ParseStatementFlag.AllowLabeledFunction);
    +    return this.parseStatementLike(1 | 2 | 4 | 8);
       }
       parseStatementListItem() {
    -    return this.parseStatementLike(ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | (!this.options.annexB || this.state.strict ? 0 : ParseStatementFlag.AllowLabeledFunction));
    +    return this.parseStatementLike(2 | 4 | (!this.options.annexB || this.state.strict ? 0 : 8));
       }
       parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction = false) {
    -    let flags = ParseStatementFlag.StatementOnly;
    +    let flags = 0;
         if (this.options.annexB && !this.state.strict) {
    -      flags |= ParseStatementFlag.AllowFunctionDeclaration;
    +      flags |= 4;
           if (allowLabeledFunction) {
    -        flags |= ParseStatementFlag.AllowLabeledFunction;
    +        flags |= 8;
           }
         }
         return this.parseStatementLike(flags);
       }
       parseStatement() {
    -    return this.parseStatementLike(ParseStatementFlag.StatementOnly);
    +    return this.parseStatementLike(0);
       }
       parseStatementLike(flags) {
         let decorators = null;
    @@ -12550,9 +12546,9 @@ class StatementParser extends ExpressionParser {
       parseStatementContent(flags, decorators) {
         const starttype = this.state.type;
         const node = this.startNode();
    -    const allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);
    -    const allowFunctionDeclaration = !!(flags & ParseStatementFlag.AllowFunctionDeclaration);
    -    const topLevel = flags & ParseStatementFlag.AllowImportExport;
    +    const allowDeclaration = !!(flags & 2);
    +    const allowFunctionDeclaration = !!(flags & 4);
    +    const topLevel = flags & 1;
         switch (starttype) {
           case 60:
             return this.parseBreakContinueStatement(node, true);
    @@ -12912,7 +12908,7 @@ class StatementParser extends ExpressionParser {
       }
       parseFunctionStatement(node, isAsync, isHangingDeclaration) {
         this.next();
    -    return this.parseFunction(node, ParseFunctionFlag.Declaration | (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) | (isAsync ? ParseFunctionFlag.Async : 0));
    +    return this.parseFunction(node, 1 | (isHangingDeclaration ? 2 : 0) | (isAsync ? 8 : 0));
       }
       parseIfStatement(node) {
         this.next();
    @@ -13079,7 +13075,7 @@ class StatementParser extends ExpressionParser {
           kind: kind,
           statementStart: this.state.start
         });
    -    node.body = flags & ParseStatementFlag.AllowLabeledFunction ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();
    +    node.body = flags & 8 ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();
         this.state.labels.pop();
         node.label = expr;
         return this.finishNode(node, "LabeledStatement");
    @@ -13224,13 +13220,13 @@ class StatementParser extends ExpressionParser {
         decl.id = id;
       }
       parseAsyncFunctionExpression(node) {
    -    return this.parseFunction(node, ParseFunctionFlag.Async);
    +    return this.parseFunction(node, 8);
       }
    -  parseFunction(node, flags = ParseFunctionFlag.Expression) {
    -    const hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;
    -    const isDeclaration = !!(flags & ParseFunctionFlag.Declaration);
    -    const requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);
    -    const isAsync = !!(flags & ParseFunctionFlag.Async);
    +  parseFunction(node, flags = 0) {
    +    const hangingDeclaration = flags & 2;
    +    const isDeclaration = !!(flags & 1);
    +    const requireId = isDeclaration && !(flags & 4);
    +    const isAsync = !!(flags & 8);
         this.initFunction(node, isAsync);
         if (this.match(55)) {
           if (hangingDeclaration) {
    @@ -13269,7 +13265,7 @@ class StatementParser extends ExpressionParser {
       parseFunctionParams(node, isConstructor) {
         this.expect(10);
         this.expressionScope.enter(newParameterDeclarationScope());
    -    node.params = this.parseBindingList(11, 41, ParseBindingListFlags.IS_FUNCTION_PARAMS | (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0));
    +    node.params = this.parseBindingList(11, 41, 2 | (isConstructor ? 4 : 0));
         this.expressionScope.exit();
       }
       registerFunctionStatementId(node) {
    @@ -13632,10 +13628,10 @@ class StatementParser extends ExpressionParser {
         }
         const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);
         if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {
    -      throw this.unexpected(null, 5);
    +      this.unexpected(null, 5);
         }
         if (hasNamespace && parseAfterNamespace) {
    -      throw this.unexpected(null, 97);
    +      this.unexpected(null, 97);
         }
         let hasDeclaration;
         if (isFromRequired || hasSpecifiers) {
    @@ -13676,7 +13672,7 @@ class StatementParser extends ExpressionParser {
           this.checkExport(node2, true, true);
           return this.finishNode(node2, "ExportDefaultDeclaration");
         }
    -    throw this.unexpected(null, 5);
    +    this.unexpected(null, 5);
       }
       eatExportStar(node) {
         return this.eat(55);
    @@ -13737,11 +13733,11 @@ class StatementParser extends ExpressionParser {
         const expr = this.startNode();
         if (this.match(68)) {
           this.next();
    -      return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId);
    +      return this.parseFunction(expr, 1 | 4);
         } else if (this.isAsyncFunction()) {
           this.next();
           this.next();
    -      return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId | ParseFunctionFlag.Async);
    +      return this.parseFunction(expr, 1 | 4 | 8);
         }
         if (this.match(80)) {
           return this.parseClass(expr, true, true);
    @@ -14228,7 +14224,6 @@ class StatementParser extends ExpressionParser {
         return param.type === "Identifier" && param.name === "this";
       }
     }
    -
     class Parser extends StatementParser {
       constructor(options, input) {
         options = getOptions(options);
    @@ -14260,7 +14255,6 @@ function pluginsMap(plugins) {
       }
       return pluginMap;
     }
    -
     function parse(input, options) {
       var _options;
       if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") {
    @@ -14329,7 +14323,6 @@ function getParserClass(pluginsFromOptions) {
       }
       return cls;
     }
    -
     exports.parse = parse;
     exports.parseExpression = parseExpression;
     exports.tokTypes = tokTypes;
    diff --git a/tools/node_modules/eslint/node_modules/@babel/parser/package.json b/tools/node_modules/eslint/node_modules/@babel/parser/package.json
    index f8a3a8e3d6ba43..10b4d042e5e6be 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/parser/package.json
    +++ b/tools/node_modules/eslint/node_modules/@babel/parser/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@babel/parser",
    -  "version": "7.21.2",
    +  "version": "7.21.3",
       "description": "A JavaScript parser",
       "author": "The Babel Team (https://babel.dev/team)",
       "homepage": "https://babel.dev/docs/en/next/babel-parser",
    diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js
    index 0f45abc63d4ae6..522d541e02a2e6 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/index.js
    @@ -54,7 +54,8 @@ traverse.visitors = visitors;
     traverse.verify = visitors.verify;
     traverse.explode = visitors.explode;
     traverse.cheap = function (node, enter) {
    -  return traverseFast(node, enter);
    +  traverseFast(node, enter);
    +  return;
     };
     traverse.node = function (node, opts, scope, state, path, skipKeys) {
       (0, _traverseNode.traverseNode)(node, opts, scope, state, path, skipKeys);
    diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js
    index e62e9523b61c23..a184ae62d44d51 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/context.js
    @@ -147,13 +147,15 @@ function _resyncKey() {
       if (Array.isArray(this.container)) {
         for (let i = 0; i < this.container.length; i++) {
           if (this.container[i] === this.node) {
    -        return this.setKey(i);
    +        this.setKey(i);
    +        return;
           }
         }
       } else {
         for (const key of Object.keys(this.container)) {
           if (this.container[key] === this.node) {
    -        return this.setKey(key);
    +        this.setKey(key);
    +        return;
           }
         }
       }
    diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js
    index 33799d561d8871..2f96dc12ecf67b 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/path/evaluation.js
    @@ -22,6 +22,7 @@ function deopt(path, state) {
       state.deoptPath = path;
       state.confident = false;
     }
    +const Globals = new Map([["undefined", undefined], ["Infinity", Infinity], ["NaN", NaN]]);
     function evaluateCached(path, state) {
       const {
         node
    @@ -111,28 +112,29 @@ function _evaluate(path, state) {
       }
       if (path.isReferencedIdentifier()) {
         const binding = path.scope.getBinding(path.node.name);
    -    if (binding && binding.constantViolations.length > 0) {
    -      return deopt(binding.path, state);
    +    if (binding) {
    +      if (binding.constantViolations.length > 0 || path.node.start < binding.path.node.end) {
    +        deopt(binding.path, state);
    +        return;
    +      }
    +      if (binding.hasValue) {
    +        return binding.value;
    +      }
         }
    -    if (binding && path.node.start < binding.path.node.end) {
    -      return deopt(binding.path, state);
    +    const name = path.node.name;
    +    if (Globals.has(name)) {
    +      if (!binding) {
    +        return Globals.get(name);
    +      }
    +      deopt(binding.path, state);
    +      return;
         }
    -    if (binding != null && binding.hasValue) {
    -      return binding.value;
    +    const resolved = path.resolve();
    +    if (resolved === path) {
    +      deopt(path, state);
    +      return;
         } else {
    -      if (path.node.name === "undefined") {
    -        return binding ? deopt(binding.path, state) : undefined;
    -      } else if (path.node.name === "Infinity") {
    -        return binding ? deopt(binding.path, state) : Infinity;
    -      } else if (path.node.name === "NaN") {
    -        return binding ? deopt(binding.path, state) : NaN;
    -      }
    -      const resolved = path.resolve();
    -      if (resolved === path) {
    -        return deopt(path, state);
    -      } else {
    -        return evaluateCached(resolved, state);
    -      }
    +      return evaluateCached(resolved, state);
         }
       }
       if (path.isUnaryExpression({
    @@ -168,7 +170,8 @@ function _evaluate(path, state) {
           if (elemValue.confident) {
             arr.push(elemValue.value);
           } else {
    -        return deopt(elemValue.deopt, state);
    +        deopt(elemValue.deopt, state);
    +        return;
           }
         }
         return arr;
    @@ -178,14 +181,16 @@ function _evaluate(path, state) {
         const props = path.get("properties");
         for (const prop of props) {
           if (prop.isObjectMethod() || prop.isSpreadElement()) {
    -        return deopt(prop, state);
    +        deopt(prop, state);
    +        return;
           }
           const keyPath = prop.get("key");
           let key;
           if (prop.node.computed) {
             key = keyPath.evaluate();
             if (!key.confident) {
    -          return deopt(key.deopt, state);
    +          deopt(key.deopt, state);
    +          return;
             }
             key = key.value;
           } else if (keyPath.isIdentifier()) {
    @@ -196,7 +201,8 @@ function _evaluate(path, state) {
           const valuePath = prop.get("value");
           let value = valuePath.evaluate();
           if (!value.confident) {
    -        return deopt(value.deopt, state);
    +        deopt(value.deopt, state);
    +        return;
           }
           value = value.value;
           obj[key] = value;
    diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js
    index 815d7b6a813bb5..95f9a0b2abefb5 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/lib/scope/index.js
    @@ -401,7 +401,9 @@ class Scope {
         if (binding) {
           newName || (newName = this.generateUidIdentifier(oldName).name);
           const renamer = new _renamer.default(binding, oldName, newName);
    -      return renamer.rename(arguments[2]);
    +      {
    +        renamer.rename(arguments[2]);
    +      }
         }
       }
       _renameFromMap(map, oldName, newName, value) {
    diff --git a/tools/node_modules/eslint/node_modules/@babel/traverse/package.json b/tools/node_modules/eslint/node_modules/@babel/traverse/package.json
    index bbf81a68c25976..b3217a1926d6b4 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/traverse/package.json
    +++ b/tools/node_modules/eslint/node_modules/@babel/traverse/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@babel/traverse",
    -  "version": "7.21.2",
    +  "version": "7.21.3",
       "description": "The Babel Traverse module maintains the overall tree state, and is responsible for replacing, removing, and adding nodes",
       "author": "The Babel Team (https://babel.dev/team)",
       "homepage": "https://babel.dev/docs/en/next/babel-traverse",
    @@ -17,13 +17,13 @@
       "main": "./lib/index.js",
       "dependencies": {
         "@babel/code-frame": "^7.18.6",
    -    "@babel/generator": "^7.21.1",
    +    "@babel/generator": "^7.21.3",
         "@babel/helper-environment-visitor": "^7.18.9",
         "@babel/helper-function-name": "^7.21.0",
         "@babel/helper-hoist-variables": "^7.18.6",
         "@babel/helper-split-export-declaration": "^7.18.6",
    -    "@babel/parser": "^7.21.2",
    -    "@babel/types": "^7.21.2",
    +    "@babel/parser": "^7.21.3",
    +    "@babel/types": "^7.21.3",
         "debug": "^4.1.0",
         "globals": "^11.1.0"
       },
    diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js
    index d986781d8f1b75..1da6be832fea27 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/definitions/utils.js
    @@ -208,7 +208,7 @@ function defineAliasedType(...aliases) {
         }
         const additional = aliases.filter(a => !defined.includes(a));
         defined.unshift(...additional);
    -    return defineType(type, opts);
    +    defineType(type, opts);
       };
     }
     function defineType(type, opts = {}) {
    diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js
    index b9b3187b9c3ad5..8ccd49b551ec01 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/index.js
    @@ -559,18 +559,6 @@ Object.keys(_generated4).forEach(function (key) {
         }
       });
     });
    -var _generated5 = require("./ast-types/generated");
    -Object.keys(_generated5).forEach(function (key) {
    -  if (key === "default" || key === "__esModule") return;
    -  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
    -  if (key in exports && exports[key] === _generated5[key]) return;
    -  Object.defineProperty(exports, key, {
    -    enumerable: true,
    -    get: function () {
    -      return _generated5[key];
    -    }
    -  });
    -});
     var _deprecationWarning = require("./utils/deprecationWarning");
     const react = {
       isReactComponent: _isReactComponent.default,
    diff --git a/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/deprecationWarning.js b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/deprecationWarning.js
    index 1d151ddb5bbc58..358b558f8c9fef 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/deprecationWarning.js
    +++ b/tools/node_modules/eslint/node_modules/@babel/types/lib/utils/deprecationWarning.js
    @@ -8,8 +8,14 @@ const warnings = new Set();
     function deprecationWarning(oldName, newName, prefix = "") {
       if (warnings.has(oldName)) return;
       warnings.add(oldName);
    -  const stack = captureShortStackTrace(1, 2);
    -  console.warn(`${prefix}\`${oldName}\` has been deprecated, please migrate to \`${newName}\`\n${stack}`);
    +  const {
    +    internal,
    +    trace
    +  } = captureShortStackTrace(1, 2);
    +  if (internal) {
    +    return;
    +  }
    +  console.warn(`${prefix}\`${oldName}\` has been deprecated, please migrate to \`${newName}\`\n${trace}`);
     }
     function captureShortStackTrace(skip, length) {
       const {
    @@ -24,7 +30,15 @@ function captureShortStackTrace(skip, length) {
       new Error().stack;
       Error.stackTraceLimit = stackTraceLimit;
       Error.prepareStackTrace = prepareStackTrace;
    -  return stackTrace.slice(1 + skip, 1 + skip + length).map(frame => `    at ${frame}`).join("\n");
    +  if (!stackTrace) return {
    +    internal: false,
    +    trace: ""
    +  };
    +  const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);
    +  return {
    +    internal: /[\\/]@babel[\\/]/.test(shortStackTrace[1].getFileName()),
    +    trace: shortStackTrace.map(frame => `    at ${frame}`).join("\n")
    +  };
     }
     
     //# sourceMappingURL=deprecationWarning.js.map
    diff --git a/tools/node_modules/eslint/node_modules/@babel/types/package.json b/tools/node_modules/eslint/node_modules/@babel/types/package.json
    index 5fbcc16fc076ee..11e6c1c180352e 100644
    --- a/tools/node_modules/eslint/node_modules/@babel/types/package.json
    +++ b/tools/node_modules/eslint/node_modules/@babel/types/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@babel/types",
    -  "version": "7.21.2",
    +  "version": "7.21.3",
       "description": "Babel Types is a Lodash-esque utility library for AST nodes",
       "author": "The Babel Team (https://babel.dev/team)",
       "homepage": "https://babel.dev/docs/en/next/babel-types",
    @@ -29,8 +29,8 @@
         "to-fast-properties": "^2.0.0"
       },
       "devDependencies": {
    -    "@babel/generator": "^7.21.1",
    -    "@babel/parser": "^7.21.2",
    +    "@babel/generator": "^7.21.3",
    +    "@babel/parser": "^7.21.3",
         "chalk": "^4.1.0",
         "glob": "^7.2.0"
       },
    diff --git a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json
    index c43829b5ea6858..c0034db32f20d8 100644
    --- a/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json
    +++ b/tools/node_modules/eslint/node_modules/@es-joy/jsdoccomment/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@es-joy/jsdoccomment",
    -  "version": "0.36.1",
    +  "version": "0.37.0",
       "author": "Brett Zamir ",
       "contributors": [],
       "description": "Maintained replacement for ESLint's deprecated SourceCode#getJSDocComment along with other jsdoc utilities",
    @@ -43,7 +43,7 @@
       "dependencies": {
         "comment-parser": "1.3.1",
         "esquery": "^1.4.0",
    -    "jsdoc-type-pratt-parser": "~3.1.0"
    +    "jsdoc-type-pratt-parser": "~4.0.0"
       },
       "devDependencies": {
         "@babel/core": "^7.19.6",
    diff --git a/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.js b/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.js
    index ccf35c38a8b65c..156015e0e463b5 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.js
    +++ b/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.js
    @@ -310,6 +310,24 @@ const builtinNames = Object.freeze(
     const callAllowed = new Set(
         [
             Array.isArray,
    +        Array.of,
    +        Array.prototype.at,
    +        Array.prototype.concat,
    +        Array.prototype.entries,
    +        Array.prototype.every,
    +        Array.prototype.filter,
    +        Array.prototype.find,
    +        Array.prototype.findIndex,
    +        Array.prototype.flat,
    +        Array.prototype.includes,
    +        Array.prototype.indexOf,
    +        Array.prototype.join,
    +        Array.prototype.keys,
    +        Array.prototype.lastIndexOf,
    +        Array.prototype.slice,
    +        Array.prototype.some,
    +        Array.prototype.toString,
    +        Array.prototype.values,
             typeof BigInt === "function" ? BigInt : undefined,
             Boolean,
             Date,
    @@ -322,7 +340,14 @@ const callAllowed = new Set(
             isFinite,
             isNaN,
             isPrototypeOf,
    +        Map,
    +        Map.prototype.entries,
    +        Map.prototype.get,
    +        Map.prototype.has,
    +        Map.prototype.keys,
    +        Map.prototype.values,
             ...Object.getOwnPropertyNames(Math)
    +            .filter((k) => k !== "random")
                 .map((k) => Math[k])
                 .filter((f) => typeof f === "function"),
             Number,
    @@ -330,6 +355,10 @@ const callAllowed = new Set(
             Number.isNaN,
             Number.parseFloat,
             Number.parseInt,
    +        Number.prototype.toExponential,
    +        Number.prototype.toFixed,
    +        Number.prototype.toPrecision,
    +        Number.prototype.toString,
             Object,
             Object.entries,
             Object.is,
    @@ -341,10 +370,39 @@ const callAllowed = new Set(
             parseFloat,
             parseInt,
             RegExp,
    +        Set,
    +        Set.prototype.entries,
    +        Set.prototype.has,
    +        Set.prototype.keys,
    +        Set.prototype.values,
             String,
             String.fromCharCode,
             String.fromCodePoint,
             String.raw,
    +        String.prototype.at,
    +        String.prototype.charAt,
    +        String.prototype.charCodeAt,
    +        String.prototype.codePointAt,
    +        String.prototype.concat,
    +        String.prototype.endsWith,
    +        String.prototype.includes,
    +        String.prototype.indexOf,
    +        String.prototype.lastIndexOf,
    +        String.prototype.normalize,
    +        String.prototype.padEnd,
    +        String.prototype.padStart,
    +        String.prototype.slice,
    +        String.prototype.startsWith,
    +        String.prototype.substr,
    +        String.prototype.substring,
    +        String.prototype.toLowerCase,
    +        String.prototype.toString,
    +        String.prototype.toUpperCase,
    +        String.prototype.trim,
    +        String.prototype.trimEnd,
    +        String.prototype.trimLeft,
    +        String.prototype.trimRight,
    +        String.prototype.trimStart,
             Symbol.for,
             Symbol.keyFor,
             unescape,
    @@ -356,6 +414,26 @@ const callPassThrough = new Set([
         Object.seal,
     ]);
     
    +/** @type {ReadonlyArray]>} */
    +const getterAllowed = [
    +    [Map, new Set(["size"])],
    +    [
    +        RegExp,
    +        new Set([
    +            "dotAll",
    +            "flags",
    +            "global",
    +            "hasIndices",
    +            "ignoreCase",
    +            "multiline",
    +            "source",
    +            "sticky",
    +            "unicode",
    +        ]),
    +    ],
    +    [Set, new Set(["size"])],
    +];
    +
     /**
      * Get the property descriptor.
      * @param {object} object The object to get.
    @@ -415,6 +493,23 @@ function getElementValues(nodeList, initialScope) {
         return valueList
     }
     
    +/**
    + * Returns whether the given variable is never written to after initialization.
    + * @param {import("eslint").Scope.Variable} variable
    + * @returns {boolean}
    + */
    +function isEffectivelyConst(variable) {
    +    const refs = variable.references;
    +
    +    const inits = refs.filter((r) => r.init).length;
    +    const reads = refs.filter((r) => r.isReadOnly()).length;
    +    if (inits === 1 && reads + inits === refs.length) {
    +        // there is only one init and all other references only read
    +        return true
    +    }
    +    return false
    +}
    +
     const operations = Object.freeze({
         ArrayExpression(node, initialScope) {
             const elements = getElementValues(node.elements, initialScope);
    @@ -573,7 +668,9 @@ const operations = Object.freeze({
                     const def = variable.defs[0];
                     if (
                         def.parent &&
    -                    def.parent.kind === "const" &&
    +                    def.type === "Variable" &&
    +                    (def.parent.kind === "const" ||
    +                        isEffectivelyConst(variable)) &&
                         // TODO(mysticatea): don't support destructuring here.
                         def.node.id.type === "Identifier"
                     ) {
    @@ -624,8 +721,19 @@ const operations = Object.freeze({
                 }
                 const property = getStaticPropertyNameValue(node, initialScope);
     
    -            if (property != null && !isGetter(object.value, property.value)) {
    -                return { value: object.value[property.value] }
    +            if (property != null) {
    +                if (!isGetter(object.value, property.value)) {
    +                    return { value: object.value[property.value] }
    +                }
    +
    +                for (const [classFn, allowed] of getterAllowed) {
    +                    if (
    +                        object.value instanceof classFn &&
    +                        allowed.has(property.value)
    +                    ) {
    +                        return { value: object.value[property.value] }
    +                    }
    +                }
                 }
             }
             return null
    diff --git a/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.mjs b/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.mjs
    index 00cc62cc7dc5ba..54b25816bf936f 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.mjs
    +++ b/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/index.mjs
    @@ -306,6 +306,24 @@ const builtinNames = Object.freeze(
     const callAllowed = new Set(
         [
             Array.isArray,
    +        Array.of,
    +        Array.prototype.at,
    +        Array.prototype.concat,
    +        Array.prototype.entries,
    +        Array.prototype.every,
    +        Array.prototype.filter,
    +        Array.prototype.find,
    +        Array.prototype.findIndex,
    +        Array.prototype.flat,
    +        Array.prototype.includes,
    +        Array.prototype.indexOf,
    +        Array.prototype.join,
    +        Array.prototype.keys,
    +        Array.prototype.lastIndexOf,
    +        Array.prototype.slice,
    +        Array.prototype.some,
    +        Array.prototype.toString,
    +        Array.prototype.values,
             typeof BigInt === "function" ? BigInt : undefined,
             Boolean,
             Date,
    @@ -318,7 +336,14 @@ const callAllowed = new Set(
             isFinite,
             isNaN,
             isPrototypeOf,
    +        Map,
    +        Map.prototype.entries,
    +        Map.prototype.get,
    +        Map.prototype.has,
    +        Map.prototype.keys,
    +        Map.prototype.values,
             ...Object.getOwnPropertyNames(Math)
    +            .filter((k) => k !== "random")
                 .map((k) => Math[k])
                 .filter((f) => typeof f === "function"),
             Number,
    @@ -326,6 +351,10 @@ const callAllowed = new Set(
             Number.isNaN,
             Number.parseFloat,
             Number.parseInt,
    +        Number.prototype.toExponential,
    +        Number.prototype.toFixed,
    +        Number.prototype.toPrecision,
    +        Number.prototype.toString,
             Object,
             Object.entries,
             Object.is,
    @@ -337,10 +366,39 @@ const callAllowed = new Set(
             parseFloat,
             parseInt,
             RegExp,
    +        Set,
    +        Set.prototype.entries,
    +        Set.prototype.has,
    +        Set.prototype.keys,
    +        Set.prototype.values,
             String,
             String.fromCharCode,
             String.fromCodePoint,
             String.raw,
    +        String.prototype.at,
    +        String.prototype.charAt,
    +        String.prototype.charCodeAt,
    +        String.prototype.codePointAt,
    +        String.prototype.concat,
    +        String.prototype.endsWith,
    +        String.prototype.includes,
    +        String.prototype.indexOf,
    +        String.prototype.lastIndexOf,
    +        String.prototype.normalize,
    +        String.prototype.padEnd,
    +        String.prototype.padStart,
    +        String.prototype.slice,
    +        String.prototype.startsWith,
    +        String.prototype.substr,
    +        String.prototype.substring,
    +        String.prototype.toLowerCase,
    +        String.prototype.toString,
    +        String.prototype.toUpperCase,
    +        String.prototype.trim,
    +        String.prototype.trimEnd,
    +        String.prototype.trimLeft,
    +        String.prototype.trimRight,
    +        String.prototype.trimStart,
             Symbol.for,
             Symbol.keyFor,
             unescape,
    @@ -352,6 +410,26 @@ const callPassThrough = new Set([
         Object.seal,
     ]);
     
    +/** @type {ReadonlyArray]>} */
    +const getterAllowed = [
    +    [Map, new Set(["size"])],
    +    [
    +        RegExp,
    +        new Set([
    +            "dotAll",
    +            "flags",
    +            "global",
    +            "hasIndices",
    +            "ignoreCase",
    +            "multiline",
    +            "source",
    +            "sticky",
    +            "unicode",
    +        ]),
    +    ],
    +    [Set, new Set(["size"])],
    +];
    +
     /**
      * Get the property descriptor.
      * @param {object} object The object to get.
    @@ -411,6 +489,23 @@ function getElementValues(nodeList, initialScope) {
         return valueList
     }
     
    +/**
    + * Returns whether the given variable is never written to after initialization.
    + * @param {import("eslint").Scope.Variable} variable
    + * @returns {boolean}
    + */
    +function isEffectivelyConst(variable) {
    +    const refs = variable.references;
    +
    +    const inits = refs.filter((r) => r.init).length;
    +    const reads = refs.filter((r) => r.isReadOnly()).length;
    +    if (inits === 1 && reads + inits === refs.length) {
    +        // there is only one init and all other references only read
    +        return true
    +    }
    +    return false
    +}
    +
     const operations = Object.freeze({
         ArrayExpression(node, initialScope) {
             const elements = getElementValues(node.elements, initialScope);
    @@ -569,7 +664,9 @@ const operations = Object.freeze({
                     const def = variable.defs[0];
                     if (
                         def.parent &&
    -                    def.parent.kind === "const" &&
    +                    def.type === "Variable" &&
    +                    (def.parent.kind === "const" ||
    +                        isEffectivelyConst(variable)) &&
                         // TODO(mysticatea): don't support destructuring here.
                         def.node.id.type === "Identifier"
                     ) {
    @@ -620,8 +717,19 @@ const operations = Object.freeze({
                 }
                 const property = getStaticPropertyNameValue(node, initialScope);
     
    -            if (property != null && !isGetter(object.value, property.value)) {
    -                return { value: object.value[property.value] }
    +            if (property != null) {
    +                if (!isGetter(object.value, property.value)) {
    +                    return { value: object.value[property.value] }
    +                }
    +
    +                for (const [classFn, allowed] of getterAllowed) {
    +                    if (
    +                        object.value instanceof classFn &&
    +                        allowed.has(property.value)
    +                    ) {
    +                        return { value: object.value[property.value] }
    +                    }
    +                }
                 }
             }
             return null
    diff --git a/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/package.json b/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/package.json
    index 1e9f149abfa339..c4ee587b75f952 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/package.json
    +++ b/tools/node_modules/eslint/node_modules/@eslint-community/eslint-utils/package.json
    @@ -1,6 +1,6 @@
     {
         "name": "@eslint-community/eslint-utils",
    -    "version": "4.2.0",
    +    "version": "4.4.0",
         "description": "Utilities for ESLint plugins.",
         "keywords": [
             "eslint"
    diff --git a/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.js b/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.js
    index 7343f0c4f579c1..518c34cbb55202 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.js
    +++ b/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.js
    @@ -108,7 +108,7 @@ class DataSet {
     const gcNameSet = new Set(["General_Category", "gc"]);
     const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]);
     const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", "", "", "");
    -const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "");
    +const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz");
     const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict", "", "");
     function isValidUnicodeProperty(version, name, value) {
         if (gcNameSet.has(name)) {
    @@ -119,7 +119,8 @@ function isValidUnicodeProperty(version, name, value) {
                 (version >= 2019 && scValueSets.es2019.has(value)) ||
                 (version >= 2020 && scValueSets.es2020.has(value)) ||
                 (version >= 2021 && scValueSets.es2021.has(value)) ||
    -            (version >= 2022 && scValueSets.es2022.has(value)));
    +            (version >= 2022 && scValueSets.es2022.has(value)) ||
    +            (version >= 2023 && scValueSets.es2023.has(value)));
         }
         return false;
     }
    @@ -480,7 +481,9 @@ class RegExpValidator {
         }
         validatePattern(source, start = 0, end = source.length, uFlag = false) {
             this._uFlag = uFlag && this.ecmaVersion >= 2015;
    -        this._nFlag = uFlag && this.ecmaVersion >= 2018;
    +        this._nFlag =
    +            (uFlag && this.ecmaVersion >= 2018) ||
    +                Boolean(this._options.strict && this.ecmaVersion >= 2023);
             this.reset(source, start, end);
             this.consumePattern();
             if (!this._nFlag &&
    @@ -496,7 +499,7 @@ class RegExpValidator {
         }
         get ecmaVersion() {
             var _a;
    -        return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : 2022;
    +        return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : 2023;
         }
         onLiteralEnter(start) {
             if (this._options.onLiteralEnter) {
    @@ -1558,7 +1561,7 @@ class RegExpParserState {
             this._capturingGroups = [];
             this.source = "";
             this.strict = Boolean(options === null || options === void 0 ? void 0 : options.strict);
    -        this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : 2022;
    +        this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : 2023;
         }
         get pattern() {
             if (this._node.type !== "Pattern") {
    diff --git a/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.mjs b/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.mjs
    index 17f856da8f0911..a808c812203668 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.mjs
    +++ b/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/index.mjs
    @@ -104,7 +104,7 @@ class DataSet {
     const gcNameSet = new Set(["General_Category", "gc"]);
     const scNameSet = new Set(["Script", "Script_Extensions", "sc", "scx"]);
     const gcValueSets = new DataSet("C Cased_Letter Cc Cf Close_Punctuation Cn Co Combining_Mark Connector_Punctuation Control Cs Currency_Symbol Dash_Punctuation Decimal_Number Enclosing_Mark Final_Punctuation Format Initial_Punctuation L LC Letter Letter_Number Line_Separator Ll Lm Lo Lowercase_Letter Lt Lu M Mark Math_Symbol Mc Me Mn Modifier_Letter Modifier_Symbol N Nd Nl No Nonspacing_Mark Number Open_Punctuation Other Other_Letter Other_Number Other_Punctuation Other_Symbol P Paragraph_Separator Pc Pd Pe Pf Pi Po Private_Use Ps Punctuation S Sc Separator Sk Sm So Space_Separator Spacing_Mark Surrogate Symbol Titlecase_Letter Unassigned Uppercase_Letter Z Zl Zp Zs cntrl digit punct", "", "", "", "", "");
    -const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "");
    +const scValueSets = new DataSet("Adlam Adlm Aghb Ahom Anatolian_Hieroglyphs Arab Arabic Armenian Armi Armn Avestan Avst Bali Balinese Bamu Bamum Bass Bassa_Vah Batak Batk Beng Bengali Bhaiksuki Bhks Bopo Bopomofo Brah Brahmi Brai Braille Bugi Buginese Buhd Buhid Cakm Canadian_Aboriginal Cans Cari Carian Caucasian_Albanian Chakma Cham Cher Cherokee Common Copt Coptic Cprt Cuneiform Cypriot Cyrillic Cyrl Deseret Deva Devanagari Dsrt Dupl Duployan Egyp Egyptian_Hieroglyphs Elba Elbasan Ethi Ethiopic Geor Georgian Glag Glagolitic Gonm Goth Gothic Gran Grantha Greek Grek Gujarati Gujr Gurmukhi Guru Han Hang Hangul Hani Hano Hanunoo Hatr Hatran Hebr Hebrew Hira Hiragana Hluw Hmng Hung Imperial_Aramaic Inherited Inscriptional_Pahlavi Inscriptional_Parthian Ital Java Javanese Kaithi Kali Kana Kannada Katakana Kayah_Li Khar Kharoshthi Khmer Khmr Khoj Khojki Khudawadi Knda Kthi Lana Lao Laoo Latin Latn Lepc Lepcha Limb Limbu Lina Linb Linear_A Linear_B Lisu Lyci Lycian Lydi Lydian Mahajani Mahj Malayalam Mand Mandaic Mani Manichaean Marc Marchen Masaram_Gondi Meetei_Mayek Mend Mende_Kikakui Merc Mero Meroitic_Cursive Meroitic_Hieroglyphs Miao Mlym Modi Mong Mongolian Mro Mroo Mtei Mult Multani Myanmar Mymr Nabataean Narb Nbat New_Tai_Lue Newa Nko Nkoo Nshu Nushu Ogam Ogham Ol_Chiki Olck Old_Hungarian Old_Italic Old_North_Arabian Old_Permic Old_Persian Old_South_Arabian Old_Turkic Oriya Orkh Orya Osage Osge Osma Osmanya Pahawh_Hmong Palm Palmyrene Pau_Cin_Hau Pauc Perm Phag Phags_Pa Phli Phlp Phnx Phoenician Plrd Prti Psalter_Pahlavi Qaac Qaai Rejang Rjng Runic Runr Samaritan Samr Sarb Saur Saurashtra Sgnw Sharada Shavian Shaw Shrd Sidd Siddham SignWriting Sind Sinh Sinhala Sora Sora_Sompeng Soyo Soyombo Sund Sundanese Sylo Syloti_Nagri Syrc Syriac Tagalog Tagb Tagbanwa Tai_Le Tai_Tham Tai_Viet Takr Takri Tale Talu Tamil Taml Tang Tangut Tavt Telu Telugu Tfng Tglg Thaa Thaana Thai Tibetan Tibt Tifinagh Tirh Tirhuta Ugar Ugaritic Vai Vaii Wara Warang_Citi Xpeo Xsux Yi Yiii Zanabazar_Square Zanb Zinh Zyyy", "Dogr Dogra Gong Gunjala_Gondi Hanifi_Rohingya Maka Makasar Medefaidrin Medf Old_Sogdian Rohg Sogd Sogdian Sogo", "Elym Elymaic Hmnp Nand Nandinagari Nyiakeng_Puachue_Hmong Wancho Wcho", "Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi", "Cpmn Cypro_Minoan Old_Uyghur Ougr Tangsa Tnsa Toto Vith Vithkuqi", "Hrkt Katakana_Or_Hiragana Kawi Nag_Mundari Nagm Unknown Zzzz");
     const binPropertySets = new DataSet("AHex ASCII ASCII_Hex_Digit Alpha Alphabetic Any Assigned Bidi_C Bidi_Control Bidi_M Bidi_Mirrored CI CWCF CWCM CWKCF CWL CWT CWU Case_Ignorable Cased Changes_When_Casefolded Changes_When_Casemapped Changes_When_Lowercased Changes_When_NFKC_Casefolded Changes_When_Titlecased Changes_When_Uppercased DI Dash Default_Ignorable_Code_Point Dep Deprecated Dia Diacritic Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Ext Extender Gr_Base Gr_Ext Grapheme_Base Grapheme_Extend Hex Hex_Digit IDC IDS IDSB IDST IDS_Binary_Operator IDS_Trinary_Operator ID_Continue ID_Start Ideo Ideographic Join_C Join_Control LOE Logical_Order_Exception Lower Lowercase Math NChar Noncharacter_Code_Point Pat_Syn Pat_WS Pattern_Syntax Pattern_White_Space QMark Quotation_Mark RI Radical Regional_Indicator SD STerm Sentence_Terminal Soft_Dotted Term Terminal_Punctuation UIdeo Unified_Ideograph Upper Uppercase VS Variation_Selector White_Space XIDC XIDS XID_Continue XID_Start space", "Extended_Pictographic", "", "EBase EComp EMod EPres ExtPict", "", "");
     function isValidUnicodeProperty(version, name, value) {
         if (gcNameSet.has(name)) {
    @@ -115,7 +115,8 @@ function isValidUnicodeProperty(version, name, value) {
                 (version >= 2019 && scValueSets.es2019.has(value)) ||
                 (version >= 2020 && scValueSets.es2020.has(value)) ||
                 (version >= 2021 && scValueSets.es2021.has(value)) ||
    -            (version >= 2022 && scValueSets.es2022.has(value)));
    +            (version >= 2022 && scValueSets.es2022.has(value)) ||
    +            (version >= 2023 && scValueSets.es2023.has(value)));
         }
         return false;
     }
    @@ -476,7 +477,9 @@ class RegExpValidator {
         }
         validatePattern(source, start = 0, end = source.length, uFlag = false) {
             this._uFlag = uFlag && this.ecmaVersion >= 2015;
    -        this._nFlag = uFlag && this.ecmaVersion >= 2018;
    +        this._nFlag =
    +            (uFlag && this.ecmaVersion >= 2018) ||
    +                Boolean(this._options.strict && this.ecmaVersion >= 2023);
             this.reset(source, start, end);
             this.consumePattern();
             if (!this._nFlag &&
    @@ -492,7 +495,7 @@ class RegExpValidator {
         }
         get ecmaVersion() {
             var _a;
    -        return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : 2022;
    +        return (_a = this._options.ecmaVersion) !== null && _a !== void 0 ? _a : 2023;
         }
         onLiteralEnter(start) {
             if (this._options.onLiteralEnter) {
    @@ -1554,7 +1557,7 @@ class RegExpParserState {
             this._capturingGroups = [];
             this.source = "";
             this.strict = Boolean(options === null || options === void 0 ? void 0 : options.strict);
    -        this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : 2022;
    +        this.ecmaVersion = (_a = options === null || options === void 0 ? void 0 : options.ecmaVersion) !== null && _a !== void 0 ? _a : 2023;
         }
         get pattern() {
             if (this._node.type !== "Pattern") {
    diff --git a/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/package.json b/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/package.json
    index 9f6aeab9007ccc..8bd4083fbb73c2 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/package.json
    +++ b/tools/node_modules/eslint/node_modules/@eslint-community/regexpp/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@eslint-community/regexpp",
    -  "version": "4.4.0",
    +  "version": "4.5.0",
       "description": "Regular expression parser for ECMAScript.",
       "keywords": [
         "regexp",
    @@ -48,7 +48,7 @@
         "build": "run-s build:*",
         "build:tsc": "tsc --module es2015",
         "build:rollup": "rollup -c",
    -    "build:dts": "dts-bundle --name @eslint-community/regexpp --main .temp/index.d.ts --out ../index.d.ts",
    +    "build:dts": "npm run -s build:tsc -- --removeComments false && dts-bundle --name @eslint-community/regexpp --main .temp/index.d.ts --out ../index.d.ts && prettier --write index.d.ts",
         "clean": "rimraf .temp index.*",
         "lint": "eslint . --ext .ts",
         "test": "nyc _mocha \"test/*.ts\" --reporter dot --timeout 10000",
    @@ -79,7 +79,7 @@
         "rollup": "^2.79.1",
         "rollup-plugin-sourcemaps": "^0.6.3",
         "ts-node": "^10.9.1",
    -    "typescript": "~4.9.4"
    +    "typescript": "~5.0.2"
       },
       "engines": {
         "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
    diff --git a/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json
    index 48662497539555..dc8f30b9cf95d0 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json
    +++ b/tools/node_modules/eslint/node_modules/@eslint/eslintrc/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@eslint/eslintrc",
    -  "version": "2.0.1",
    +  "version": "2.0.2",
       "description": "The legacy ESLintRC config file format for ESLint",
       "type": "module",
       "main": "./dist/eslintrc.cjs",
    @@ -68,7 +68,7 @@
       "dependencies": {
         "ajv": "^6.12.4",
         "debug": "^4.3.2",
    -    "espree": "^9.5.0",
    +    "espree": "^9.5.1",
         "globals": "^13.19.0",
         "ignore": "^5.2.0",
         "import-fresh": "^3.2.1",
    diff --git a/tools/node_modules/eslint/node_modules/@eslint/js/package.json b/tools/node_modules/eslint/node_modules/@eslint/js/package.json
    index 7dfa6130e8d801..27e4f0056a179d 100644
    --- a/tools/node_modules/eslint/node_modules/@eslint/js/package.json
    +++ b/tools/node_modules/eslint/node_modules/@eslint/js/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "@eslint/js",
    -  "version": "8.36.0",
    +  "version": "8.37.0",
       "description": "ESLint JavaScript language implementation",
       "main": "./src/index.js",
       "scripts": {},
    diff --git a/tools/node_modules/eslint/node_modules/@types/mdast/package.json b/tools/node_modules/eslint/node_modules/@types/mdast/package.json
    index a61222d2afe4fb..294aa76db12c1c 100755
    --- a/tools/node_modules/eslint/node_modules/@types/mdast/package.json
    +++ b/tools/node_modules/eslint/node_modules/@types/mdast/package.json
    @@ -1,6 +1,6 @@
     {
         "name": "@types/mdast",
    -    "version": "3.0.10",
    +    "version": "3.0.11",
         "description": "TypeScript definitions for Mdast",
         "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdast",
         "license": "MIT",
    @@ -37,6 +37,6 @@
         "dependencies": {
             "@types/unist": "*"
         },
    -    "typesPublisherContentHash": "87d2054120bead1983528802563a50cbb2f2efd6677d446e5ec34071f50bddcc",
    -    "typeScriptVersion": "3.7"
    +    "typesPublisherContentHash": "3cbb57b89f230aa1b6dd7967bcdac99de4dcfb625ffbb6cbb03dd8185965d216",
    +    "typeScriptVersion": "4.3"
     }
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js
    index 7deaa18005dede..08e53ad059af50 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/agents.js
    @@ -1 +1 @@
    -module.exports={A:{A:{J:0.0131217,D:0.00621152,E:0.0478029,F:0.0573634,A:0.00956057,B:0.487589,CC:0.009298},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","CC","J","D","E","F","A","B","","",""],E:"IE",F:{CC:962323200,J:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{C:0.003861,K:0.004267,L:0.004268,G:0.003861,M:0.003702,N:0.003861,O:0.015444,P:0,Q:0.004298,R:0.00944,S:0.004043,T:0.007722,U:0.003861,V:0.003861,W:0.003861,X:0.003943,Y:0.007722,Z:0.003943,a:0.003943,b:0.007722,c:0.004118,d:0.003939,e:0.003943,i:0.003943,j:0.003943,k:0.003929,l:0.003901,m:0.011829,n:0.007886,o:0.003943,p:0.007722,q:0.003861,r:0.007722,s:0.011583,t:0.073359,u:0.111969,f:1.66023,H:2.23552},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","L","G","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","i","j","k","l","m","n","o","p","q","r","s","t","u","f","H","","",""],E:"Edge",F:{C:1438128000,K:1447286400,L:1470096000,G:1491868800,M:1508198400,N:1525046400,O:1542067200,P:1579046400,Q:1581033600,R:1586736000,S:1590019200,T:1594857600,U:1598486400,V:1602201600,W:1605830400,X:1611360000,Y:1614816000,Z:1618358400,a:1622073600,b:1626912000,c:1630627200,d:1632441600,e:1634774400,i:1637539200,j:1641427200,k:1643932800,l:1646265600,m:1649635200,n:1651190400,o:1653955200,p:1655942400,q:1659657600,r:1661990400,s:1664755200,t:1666915200,u:1670198400,f:1673481600,H:1675900800},D:{C:"ms",K:"ms",L:"ms",G:"ms",M:"ms",N:"ms",O:"ms"}},C:{A:{"0":0.008786,"1":0.004118,"2":0.004317,"3":0.004393,"4":0.004418,"5":0.008834,"6":0.008322,"7":0.008928,"8":0.004471,"9":0.009284,DC:0.004118,tB:0.004271,I:0.011703,v:0.004879,J:0.020136,D:0.005725,E:0.004525,F:0.00533,A:0.004283,B:0.007722,C:0.004471,K:0.004486,L:0.00453,G:0.008322,M:0.004417,N:0.004425,O:0.004161,w:0.004443,g:0.004283,x:0.008322,y:0.013698,z:0.004161,AB:0.004707,BB:0.009076,CB:0.003861,DB:0.004783,EB:0.003929,FB:0.004783,GB:0.00487,HB:0.005029,IB:0.0047,JB:0.019305,KB:0.003861,LB:0.003867,MB:0.004525,NB:0.004293,OB:0.003861,PB:0.004538,QB:0.008282,RB:0.011601,SB:0.046332,TB:0.011601,UB:0.003929,VB:0.003974,WB:0.003861,XB:0.011601,YB:0.003939,uB:0.003861,ZB:0.003929,vB:0.004356,aB:0.004425,bB:0.008322,cB:0.00415,dB:0.004267,eB:0.003801,fB:0.004267,gB:0.003861,hB:0.00415,iB:0.004293,jB:0.004425,kB:0.003861,h:0.00415,lB:0.00415,mB:0.004318,nB:0.004356,oB:0.003974,pB:0.034749,P:0.003861,Q:0.003861,R:0.003861,wB:0.003861,S:0.003861,T:0.003929,U:0.004268,V:0.003801,W:0.015444,X:0.007722,Y:0.003943,Z:0.003943,a:0.011583,b:0.003801,c:0.007722,d:0.011583,e:0.003773,i:0.007886,j:0.003901,k:0.003901,l:0.003861,m:0.003861,n:0.003861,o:0.096525,p:0.042471,q:0.007722,r:0.011583,s:0.015444,t:0.019305,u:0.069498,f:1.22008,H:0.814671,xB:0.007722,yB:0,EC:0.008786,FC:0.00487},B:"moz",C:["DC","tB","EC","FC","I","v","J","D","E","F","A","B","C","K","L","G","M","N","O","w","g","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","uB","ZB","vB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","h","lB","mB","nB","oB","pB","P","Q","R","wB","S","T","U","V","W","X","Y","Z","a","b","c","d","e","i","j","k","l","m","n","o","p","q","r","s","t","u","f","H","xB","yB",""],E:"Firefox",F:{"0":1375747200,"1":1379376000,"2":1386633600,"3":1391472000,"4":1395100800,"5":1398729600,"6":1402358400,"7":1405987200,"8":1409616000,"9":1413244800,DC:1161648000,tB:1213660800,EC:1246320000,FC:1264032000,I:1300752000,v:1308614400,J:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,L:1338854400,G:1342483200,M:1346112000,N:1349740800,O:1353628800,w:1357603200,g:1361232000,x:1364860800,y:1368489600,z:1372118400,AB:1417392000,BB:1421107200,CB:1424736000,DB:1428278400,EB:1431475200,FB:1435881600,GB:1439251200,HB:1442880000,IB:1446508800,JB:1450137600,KB:1453852800,LB:1457395200,MB:1461628800,NB:1465257600,OB:1470096000,PB:1474329600,QB:1479168000,RB:1485216000,SB:1488844800,TB:1492560000,UB:1497312000,VB:1502150400,WB:1506556800,XB:1510617600,YB:1516665600,uB:1520985600,ZB:1525824000,vB:1529971200,aB:1536105600,bB:1540252800,cB:1544486400,dB:1548720000,eB:1552953600,fB:1558396800,gB:1562630400,hB:1567468800,iB:1571788800,jB:1575331200,kB:1578355200,h:1581379200,lB:1583798400,mB:1586304000,nB:1588636800,oB:1591056000,pB:1593475200,P:1595894400,Q:1598313600,R:1600732800,wB:1603152000,S:1605571200,T:1607990400,U:1611619200,V:1614038400,W:1616457600,X:1618790400,Y:1622505600,Z:1626134400,a:1628553600,b:1630972800,c:1633392000,d:1635811200,e:1638835200,i:1641859200,j:1644364800,k:1646697600,l:1649116800,m:1651536000,n:1653955200,o:1656374400,p:1658793600,q:1661212800,r:1663632000,s:1666051200,t:1668470400,u:1670889600,f:1673913600,H:1676332800,xB:null,yB:null}},D:{A:{"0":0.003939,"1":0.004461,"2":0.004141,"3":0.004326,"4":0.0047,"5":0.004538,"6":0.008322,"7":0.008596,"8":0.004566,"9":0.004118,I:0.004706,v:0.004879,J:0.004879,D:0.005591,E:0.005591,F:0.005591,A:0.004534,B:0.004464,C:0.010424,K:0.0083,L:0.004706,G:0.015087,M:0.004393,N:0.004393,O:0.008652,w:0.008322,g:0.004393,x:0.004317,y:0.003901,z:0.008786,AB:0.003861,BB:0.003861,CB:0.004335,DB:0.004464,EB:0.015444,FB:0.003867,GB:0.015444,HB:0.003773,IB:0.003974,JB:0.007722,KB:0.007948,LB:0.003974,MB:0.003867,NB:0.007722,OB:0.019305,PB:0.03861,QB:0.003867,RB:0.003929,SB:0.007722,TB:0.007722,UB:0.003867,VB:0.007722,WB:0.069498,XB:0.003861,YB:0.015772,uB:0.003773,ZB:0.015444,vB:0.007722,aB:0.003773,bB:0.007722,cB:0.003943,dB:0.007722,eB:0.027027,fB:0.007722,gB:0.011583,hB:0.054054,iB:0.019305,jB:0.015444,kB:0.023166,h:0.011583,lB:0.042471,mB:0.046332,nB:0.042471,oB:0.015444,pB:0.030888,P:0.127413,Q:0.03861,R:0.042471,S:0.073359,T:0.042471,U:0.088803,V:0.07722,W:0.081081,X:0.027027,Y:0.03861,Z:0.046332,a:0.084942,b:0.050193,c:0.065637,d:0.046332,e:0.019305,i:0.03861,j:0.050193,k:0.092664,l:0.050193,m:0.057915,n:0.061776,o:0.084942,p:0.235521,q:0.084942,r:0.131274,s:0.100386,t:0.19305,u:0.984555,f:12.4054,H:7.25482,xB:0.015444,yB:0.019305,GC:0},B:"webkit",C:["","","","","","I","v","J","D","E","F","A","B","C","K","L","G","M","N","O","w","g","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","uB","ZB","vB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","h","lB","mB","nB","oB","pB","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","i","j","k","l","m","n","o","p","q","r","s","t","u","f","H","xB","yB","GC"],E:"Chrome",F:{"0":1352246400,"1":1357862400,"2":1361404800,"3":1364428800,"4":1369094400,"5":1374105600,"6":1376956800,"7":1384214400,"8":1389657600,"9":1392940800,I:1264377600,v:1274745600,J:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,L:1316131200,G:1316131200,M:1319500800,N:1323734400,O:1328659200,w:1332892800,g:1337040000,x:1340668800,y:1343692800,z:1348531200,AB:1397001600,BB:1400544000,CB:1405468800,DB:1409011200,EB:1412640000,FB:1416268800,GB:1421798400,HB:1425513600,IB:1429401600,JB:1432080000,KB:1437523200,LB:1441152000,MB:1444780800,NB:1449014400,OB:1453248000,PB:1456963200,QB:1460592000,RB:1464134400,SB:1469059200,TB:1472601600,UB:1476230400,VB:1480550400,WB:1485302400,XB:1489017600,YB:1492560000,uB:1496707200,ZB:1500940800,vB:1504569600,aB:1508198400,bB:1512518400,cB:1516752000,dB:1520294400,eB:1523923200,fB:1527552000,gB:1532390400,hB:1536019200,iB:1539648000,jB:1543968000,kB:1548720000,h:1552348800,lB:1555977600,mB:1559606400,nB:1564444800,oB:1568073600,pB:1571702400,P:1575936000,Q:1580860800,R:1586304000,S:1589846400,T:1594684800,U:1598313600,V:1601942400,W:1605571200,X:1611014400,Y:1614556800,Z:1618272000,a:1621987200,b:1626739200,c:1630368000,d:1632268800,e:1634601600,i:1637020800,j:1641340800,k:1643673600,l:1646092800,m:1648512000,n:1650931200,o:1653350400,p:1655769600,q:1659398400,r:1661817600,s:1664236800,t:1666656000,u:1669680000,f:1673308800,H:1675728000,xB:null,yB:null,GC:null}},E:{A:{I:0,v:0.008322,J:0.004656,D:0.004465,E:0.003974,F:0.003929,A:0.004425,B:0.004318,C:0.003801,K:0.019305,L:0.096525,G:0.023166,HC:0,zB:0.008692,IC:0.007722,JC:0.00456,KC:0.004283,LC:0.057915,"0B":0.007802,qB:0.007722,rB:0.030888,"1B":0.169884,MC:0.258687,NC:0.042471,"2B":0.034749,"3B":0.088803,"4B":0.169884,"5B":0.857142,sB:0.088803,"6B":0.293436,"7B":0.922779,"8B":0.621621,"9B":0,OC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","HC","zB","I","v","IC","J","JC","D","KC","E","F","LC","A","0B","B","qB","C","rB","K","1B","L","MC","G","NC","2B","3B","4B","5B","sB","6B","7B","8B","9B","OC",""],E:"Safari",F:{HC:1205798400,zB:1226534400,I:1244419200,v:1275868800,IC:1311120000,J:1343174400,JC:1382400000,D:1382400000,KC:1410998400,E:1413417600,F:1443657600,LC:1458518400,A:1474329600,"0B":1490572800,B:1505779200,qB:1522281600,C:1537142400,rB:1553472000,K:1568851200,"1B":1585008000,L:1600214400,MC:1619395200,G:1632096000,NC:1635292800,"2B":1639353600,"3B":1647216000,"4B":1652745600,"5B":1658275200,sB:1662940800,"6B":1666569600,"7B":1670889600,"8B":1674432000,"9B":null,OC:null}},F:{A:{"0":0.006702,"1":0.006015,"2":0.005595,"3":0.004393,"4":0.003861,"5":0.004879,"6":0.004879,"7":0.003861,"8":0.005152,"9":0.005014,F:0.0082,B:0.016581,C:0.004317,G:0.00685,M:0.00685,N:0.00685,O:0.005014,w:0.006015,g:0.004879,x:0.006597,y:0.006597,z:0.013434,AB:0.009758,BB:0.004879,CB:0.007722,DB:0.004283,EB:0.004367,FB:0.004534,GB:0.003861,HB:0.004227,IB:0.004418,JB:0.004161,KB:0.004227,LB:0.004725,MB:0.011583,NB:0.008942,OB:0.004707,PB:0.004827,QB:0.004707,RB:0.004707,SB:0.004326,TB:0.008922,UB:0.014349,VB:0.004425,WB:0.00472,XB:0.004425,YB:0.004425,ZB:0.00472,aB:0.004532,bB:0.004566,cB:0.02283,dB:0.00867,eB:0.004656,fB:0.004642,gB:0.003929,hB:0.00944,iB:0.004293,jB:0.003929,kB:0.004298,h:0.096692,lB:0.004201,mB:0.004141,nB:0.004257,oB:0.003939,pB:0.008236,P:0.003855,Q:0.003939,R:0.008514,wB:0.003939,S:0.003939,T:0.003702,U:0.007722,V:0.003855,W:0.003855,X:0.003929,Y:0.003861,Z:0.011703,a:0.007546,b:0.011829,c:0.069498,d:0.648648,e:0.370656,PC:0.00685,QC:0,RC:0.008392,SC:0.004706,qB:0.006229,AC:0.004879,TC:0.008786,rB:0.00472},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","F","PC","QC","RC","SC","B","qB","AC","TC","C","rB","G","M","N","O","w","g","x","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","h","lB","mB","nB","oB","pB","P","Q","R","wB","S","T","U","V","W","X","Y","Z","a","b","c","d","e","","",""],E:"Opera",F:{"0":1409616000,"1":1413331200,"2":1417132800,"3":1422316800,"4":1425945600,"5":1430179200,"6":1433808000,"7":1438646400,"8":1442448000,"9":1445904000,F:1150761600,PC:1223424000,QC:1251763200,RC:1267488000,SC:1277942400,B:1292457600,qB:1302566400,AC:1309219200,TC:1323129600,C:1323129600,rB:1352073600,G:1372723200,M:1377561600,N:1381104000,O:1386288000,w:1390867200,g:1393891200,x:1399334400,y:1401753600,z:1405987200,AB:1449100800,BB:1454371200,CB:1457308800,DB:1462320000,EB:1465344000,FB:1470096000,GB:1474329600,HB:1477267200,IB:1481587200,JB:1486425600,KB:1490054400,LB:1494374400,MB:1498003200,NB:1502236800,OB:1506470400,PB:1510099200,QB:1515024000,RB:1517961600,SB:1521676800,TB:1525910400,UB:1530144000,VB:1534982400,WB:1537833600,XB:1543363200,YB:1548201600,ZB:1554768000,aB:1561593600,bB:1566259200,cB:1570406400,dB:1573689600,eB:1578441600,fB:1583971200,gB:1587513600,hB:1592956800,iB:1595894400,jB:1600128000,kB:1603238400,h:1613520000,lB:1612224000,mB:1616544000,nB:1619568000,oB:1623715200,pB:1627948800,P:1631577600,Q:1633392000,R:1635984000,wB:1638403200,S:1642550400,T:1644969600,U:1647993600,V:1650412800,W:1652745600,X:1654646400,Y:1657152000,Z:1660780800,a:1663113600,b:1668816000,c:1668643200,d:1671062400,e:1675209600},D:{F:"o",B:"o",C:"o",PC:"o",QC:"o",RC:"o",SC:"o",qB:"o",AC:"o",TC:"o",rB:"o"}},G:{A:{E:0,zB:0,UC:0,BC:0.00156679,VC:0.00313358,WC:0.00313358,XC:0.0125343,YC:0.00626717,ZC:0.0172347,aC:0.0564045,bC:0.00470038,cC:0.0987079,dC:0.0250687,eC:0.0235019,fC:0.0219351,gC:0.394832,hC:0.0156679,iC:0.0360362,jC:0.0344694,kC:0.108109,lC:0.282023,mC:0.532709,nC:0.153546,"2B":0.195849,"3B":0.233452,"4B":0.412066,"5B":1.40071,sB:1.43988,"6B":3.51431,"7B":3.62556,"8B":2.04623,"9B":0.00940075},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","zB","UC","BC","VC","WC","XC","E","YC","ZC","aC","bC","cC","dC","eC","fC","gC","hC","iC","jC","kC","lC","mC","nC","2B","3B","4B","5B","sB","6B","7B","8B","9B","",""],E:"Safari on iOS",F:{zB:1270252800,UC:1283904000,BC:1299628800,VC:1331078400,WC:1359331200,XC:1394409600,E:1410912000,YC:1413763200,ZC:1442361600,aC:1458518400,bC:1473724800,cC:1490572800,dC:1505779200,eC:1522281600,fC:1537142400,gC:1553472000,hC:1568851200,iC:1572220800,jC:1580169600,kC:1585008000,lC:1600214400,mC:1619395200,nC:1632096000,"2B":1639353600,"3B":1647216000,"4B":1652659200,"5B":1658275200,sB:1662940800,"6B":1666569600,"7B":1670889600,"8B":1674432000,"9B":null}},H:{A:{oC:0.993853},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","oC","","",""],E:"Opera Mini",F:{oC:1426464000}},I:{A:{tB:0,I:0.019696,f:0,pC:0,qC:0,rC:0,sC:0.0787838,BC:0.0689359,tC:0,uC:0.305287},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","pC","qC","rC","tB","I","sC","BC","tC","uC","f","","",""],E:"Android Browser",F:{pC:1256515200,qC:1274313600,rC:1291593600,tB:1298332800,I:1318896000,sC:1341792000,BC:1374624000,tC:1386547200,uC:1401667200,f:1673568000}},J:{A:{D:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,h:0.0111391,qB:0,AC:0,rB:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","qB","AC","C","rB","h","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,qB:1314835200,AC:1318291200,C:1330300800,rB:1349740800,h:1673827200},D:{h:"webkit"}},L:{A:{H:42.629},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","H","","",""],E:"Chrome for Android",F:{H:1675728000}},M:{A:{H:0.294672},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","H","","",""],E:"Firefox for Android",F:{H:1676332800}},N:{A:{A:0.0115934,B:0.022664},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{vC:0.896294},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","vC","","",""],E:"UC Browser for Android",F:{vC:1634688000},D:{vC:"webkit"}},P:{A:{I:0.166372,g:0,wC:0.0103543,xC:0.010304,yC:0.0519911,zC:0.0103584,"0C":0.0104443,"0B":0.0105043,"1C":0.0311947,"2C":0.0103982,"3C":0.0311947,"4C":0.0311947,"5C":0.0207965,sB:0.0727876,"6C":0.0727876,"7C":0.0935841,"8C":1.32057},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","wC","xC","yC","zC","0C","0B","1C","2C","3C","4C","5C","sB","6C","7C","8C","g","","",""],E:"Samsung Internet",F:{I:1461024000,wC:1481846400,xC:1509408000,yC:1528329600,zC:1546128000,"0C":1554163200,"0B":1567900800,"1C":1582588800,"2C":1593475200,"3C":1605657600,"4C":1618531200,"5C":1629072000,sB:1640736000,"6C":1651708800,"7C":1659657600,"8C":1667260800,g:1677369600}},Q:{A:{"1B":0.12278},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","1B","","",""],E:"QQ Browser",F:{"1B":1663718400}},R:{A:{"9C":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","9C","","",""],E:"Baidu Browser",F:{"9C":1663027200}},S:{A:{AD:0.079807,BD:0},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","AD","BD","","",""],E:"KaiOS Browser",F:{AD:1527811200,BD:1631664000}}};
    +module.exports={A:{A:{J:0.0131217,D:0.00621152,E:0.0478029,F:0.0573634,A:0.00956057,B:0.487589,EC:0.009298},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","EC","J","D","E","F","A","B","","",""],E:"IE",F:{EC:962323200,J:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{C:0.003861,K:0.004267,L:0.004268,G:0.003861,M:0.003702,N:0.003861,O:0.015444,P:0,Q:0.004298,R:0.00944,S:0.004043,T:0.007722,U:0.003861,V:0.003861,W:0.003861,X:0.003943,Y:0.007722,Z:0.003943,a:0.003943,b:0.007722,c:0.004118,d:0.003939,e:0.003943,i:0.003943,j:0.003943,k:0.003929,l:0.003901,m:0.011829,n:0.007886,o:0.003943,p:0.007722,q:0.003861,r:0.007722,s:0.011583,t:0.073359,u:0.111969,v:1.66023,f:2.23552,H:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","K","L","G","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","i","j","k","l","m","n","o","p","q","r","s","t","u","v","f","H","","",""],E:"Edge",F:{C:1438128000,K:1447286400,L:1470096000,G:1491868800,M:1508198400,N:1525046400,O:1542067200,P:1579046400,Q:1581033600,R:1586736000,S:1590019200,T:1594857600,U:1598486400,V:1602201600,W:1605830400,X:1611360000,Y:1614816000,Z:1618358400,a:1622073600,b:1626912000,c:1630627200,d:1632441600,e:1634774400,i:1637539200,j:1641427200,k:1643932800,l:1646265600,m:1649635200,n:1651190400,o:1653955200,p:1655942400,q:1659657600,r:1661990400,s:1664755200,t:1666915200,u:1670198400,v:1673481600,f:1675900800,H:1678665600},D:{C:"ms",K:"ms",L:"ms",G:"ms",M:"ms",N:"ms",O:"ms"}},C:{A:{"0":0.004161,"1":0.008786,"2":0.004118,"3":0.004317,"4":0.004393,"5":0.004418,"6":0.008834,"7":0.008322,"8":0.008928,"9":0.004471,FC:0.004118,uB:0.004271,I:0.011703,w:0.004879,J:0.020136,D:0.005725,E:0.004525,F:0.00533,A:0.004283,B:0.007722,C:0.004471,K:0.004486,L:0.00453,G:0.008322,M:0.004417,N:0.004425,O:0.004161,x:0.004443,g:0.004283,y:0.008322,z:0.013698,AB:0.009284,BB:0.004707,CB:0.009076,DB:0.003861,EB:0.004783,FB:0.003929,GB:0.004783,HB:0.00487,IB:0.005029,JB:0.0047,KB:0.019305,LB:0.003861,MB:0.003867,NB:0.004525,OB:0.004293,PB:0.003861,QB:0.004538,RB:0.008282,SB:0.011601,TB:0.046332,UB:0.011601,VB:0.003929,WB:0.003974,XB:0.003861,YB:0.011601,ZB:0.003939,vB:0.003861,aB:0.003929,wB:0.004356,bB:0.004425,cB:0.008322,dB:0.00415,eB:0.004267,fB:0.003801,gB:0.004267,hB:0.003861,iB:0.00415,jB:0.004293,kB:0.004425,lB:0.003861,h:0.00415,mB:0.00415,nB:0.004318,oB:0.004356,pB:0.003974,qB:0.034749,P:0.003861,Q:0.003861,R:0.003861,xB:0.003861,S:0.003861,T:0.003929,U:0.004268,V:0.003801,W:0.015444,X:0.007722,Y:0.003943,Z:0.003943,a:0.011583,b:0.003801,c:0.007722,d:0.011583,e:0.003773,i:0.007886,j:0.003901,k:0.003901,l:0.003861,m:0.003861,n:0.003861,o:0.096525,p:0.042471,q:0.007722,r:0.011583,s:0.015444,t:0.019305,u:0.069498,v:1.22008,f:0.814671,H:0.007722,yB:0,zB:0,GC:0.008786,HC:0.00487},B:"moz",C:["FC","uB","GC","HC","I","w","J","D","E","F","A","B","C","K","L","G","M","N","O","x","g","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","vB","aB","wB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","h","mB","nB","oB","pB","qB","P","Q","R","xB","S","T","U","V","W","X","Y","Z","a","b","c","d","e","i","j","k","l","m","n","o","p","q","r","s","t","u","v","f","H","yB","zB",""],E:"Firefox",F:{"0":1372118400,"1":1375747200,"2":1379376000,"3":1386633600,"4":1391472000,"5":1395100800,"6":1398729600,"7":1402358400,"8":1405987200,"9":1409616000,FC:1161648000,uB:1213660800,GC:1246320000,HC:1264032000,I:1300752000,w:1308614400,J:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,K:1335225600,L:1338854400,G:1342483200,M:1346112000,N:1349740800,O:1353628800,x:1357603200,g:1361232000,y:1364860800,z:1368489600,AB:1413244800,BB:1417392000,CB:1421107200,DB:1424736000,EB:1428278400,FB:1431475200,GB:1435881600,HB:1439251200,IB:1442880000,JB:1446508800,KB:1450137600,LB:1453852800,MB:1457395200,NB:1461628800,OB:1465257600,PB:1470096000,QB:1474329600,RB:1479168000,SB:1485216000,TB:1488844800,UB:1492560000,VB:1497312000,WB:1502150400,XB:1506556800,YB:1510617600,ZB:1516665600,vB:1520985600,aB:1525824000,wB:1529971200,bB:1536105600,cB:1540252800,dB:1544486400,eB:1548720000,fB:1552953600,gB:1558396800,hB:1562630400,iB:1567468800,jB:1571788800,kB:1575331200,lB:1578355200,h:1581379200,mB:1583798400,nB:1586304000,oB:1588636800,pB:1591056000,qB:1593475200,P:1595894400,Q:1598313600,R:1600732800,xB:1603152000,S:1605571200,T:1607990400,U:1611619200,V:1614038400,W:1616457600,X:1618790400,Y:1622505600,Z:1626134400,a:1628553600,b:1630972800,c:1633392000,d:1635811200,e:1638835200,i:1641859200,j:1644364800,k:1646697600,l:1649116800,m:1651536000,n:1653955200,o:1656374400,p:1658793600,q:1661212800,r:1663632000,s:1666051200,t:1668470400,u:1670889600,v:1673913600,f:1676332800,H:1678752000,yB:null,zB:null}},D:{A:{"0":0.008786,"1":0.003939,"2":0.004461,"3":0.004141,"4":0.004326,"5":0.0047,"6":0.004538,"7":0.008322,"8":0.008596,"9":0.004566,I:0.004706,w:0.004879,J:0.004879,D:0.005591,E:0.005591,F:0.005591,A:0.004534,B:0.004464,C:0.010424,K:0.0083,L:0.004706,G:0.015087,M:0.004393,N:0.004393,O:0.008652,x:0.008322,g:0.004393,y:0.004317,z:0.003901,AB:0.004118,BB:0.003861,CB:0.003861,DB:0.004335,EB:0.004464,FB:0.015444,GB:0.003867,HB:0.015444,IB:0.003773,JB:0.003974,KB:0.007722,LB:0.007948,MB:0.003974,NB:0.003867,OB:0.007722,PB:0.019305,QB:0.03861,RB:0.003867,SB:0.003929,TB:0.007722,UB:0.007722,VB:0.003867,WB:0.007722,XB:0.069498,YB:0.003861,ZB:0.015772,vB:0.003773,aB:0.015444,wB:0.007722,bB:0.003773,cB:0.007722,dB:0.003943,eB:0.007722,fB:0.027027,gB:0.007722,hB:0.011583,iB:0.054054,jB:0.019305,kB:0.015444,lB:0.023166,h:0.011583,mB:0.042471,nB:0.046332,oB:0.042471,pB:0.015444,qB:0.030888,P:0.127413,Q:0.03861,R:0.042471,S:0.073359,T:0.042471,U:0.088803,V:0.07722,W:0.081081,X:0.027027,Y:0.03861,Z:0.046332,a:0.084942,b:0.050193,c:0.065637,d:0.046332,e:0.019305,i:0.03861,j:0.050193,k:0.092664,l:0.050193,m:0.057915,n:0.061776,o:0.084942,p:0.235521,q:0.084942,r:0.131274,s:0.100386,t:0.19305,u:0.984555,v:12.4054,f:7.25482,H:0.015444,yB:0.019305,zB:0,IC:0},B:"webkit",C:["","","","","","I","w","J","D","E","F","A","B","C","K","L","G","M","N","O","x","g","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","vB","aB","wB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","h","mB","nB","oB","pB","qB","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","i","j","k","l","m","n","o","p","q","r","s","t","u","v","f","H","yB","zB","IC"],E:"Chrome",F:{"0":1348531200,"1":1352246400,"2":1357862400,"3":1361404800,"4":1364428800,"5":1369094400,"6":1374105600,"7":1376956800,"8":1384214400,"9":1389657600,I:1264377600,w:1274745600,J:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,K:1312243200,L:1316131200,G:1316131200,M:1319500800,N:1323734400,O:1328659200,x:1332892800,g:1337040000,y:1340668800,z:1343692800,AB:1392940800,BB:1397001600,CB:1400544000,DB:1405468800,EB:1409011200,FB:1412640000,GB:1416268800,HB:1421798400,IB:1425513600,JB:1429401600,KB:1432080000,LB:1437523200,MB:1441152000,NB:1444780800,OB:1449014400,PB:1453248000,QB:1456963200,RB:1460592000,SB:1464134400,TB:1469059200,UB:1472601600,VB:1476230400,WB:1480550400,XB:1485302400,YB:1489017600,ZB:1492560000,vB:1496707200,aB:1500940800,wB:1504569600,bB:1508198400,cB:1512518400,dB:1516752000,eB:1520294400,fB:1523923200,gB:1527552000,hB:1532390400,iB:1536019200,jB:1539648000,kB:1543968000,lB:1548720000,h:1552348800,mB:1555977600,nB:1559606400,oB:1564444800,pB:1568073600,qB:1571702400,P:1575936000,Q:1580860800,R:1586304000,S:1589846400,T:1594684800,U:1598313600,V:1601942400,W:1605571200,X:1611014400,Y:1614556800,Z:1618272000,a:1621987200,b:1626739200,c:1630368000,d:1632268800,e:1634601600,i:1637020800,j:1641340800,k:1643673600,l:1646092800,m:1648512000,n:1650931200,o:1653350400,p:1655769600,q:1659398400,r:1661817600,s:1664236800,t:1666656000,u:1669680000,v:1673308800,f:1675728000,H:1678147200,yB:null,zB:null,IC:null}},E:{A:{I:0,w:0.008322,J:0.004656,D:0.004465,E:0.003974,F:0.003929,A:0.004425,B:0.004318,C:0.003801,K:0.019305,L:0.096525,G:0.023166,JC:0,"0B":0.008692,KC:0.007722,LC:0.00456,MC:0.004283,NC:0.057915,"1B":0.007802,rB:0.007722,sB:0.030888,"2B":0.169884,OC:0.258687,PC:0.042471,"3B":0.034749,"4B":0.088803,"5B":0.169884,"6B":0.857142,tB:0.088803,"7B":0.293436,"8B":0.922779,"9B":0.621621,AC:0,BC:0,QC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","JC","0B","I","w","KC","J","LC","D","MC","E","F","NC","A","1B","B","rB","C","sB","K","2B","L","OC","G","PC","3B","4B","5B","6B","tB","7B","8B","9B","AC","BC","QC",""],E:"Safari",F:{JC:1205798400,"0B":1226534400,I:1244419200,w:1275868800,KC:1311120000,J:1343174400,LC:1382400000,D:1382400000,MC:1410998400,E:1413417600,F:1443657600,NC:1458518400,A:1474329600,"1B":1490572800,B:1505779200,rB:1522281600,C:1537142400,sB:1553472000,K:1568851200,"2B":1585008000,L:1600214400,OC:1619395200,G:1632096000,PC:1635292800,"3B":1639353600,"4B":1647216000,"5B":1652745600,"6B":1658275200,tB:1662940800,"7B":1666569600,"8B":1670889600,"9B":1674432000,AC:1679875200,BC:null,QC:null}},F:{A:{"0":0.013434,"1":0.006702,"2":0.006015,"3":0.005595,"4":0.004393,"5":0.003861,"6":0.004879,"7":0.004879,"8":0.003861,"9":0.005152,F:0.0082,B:0.016581,C:0.004317,G:0.00685,M:0.00685,N:0.00685,O:0.005014,x:0.006015,g:0.004879,y:0.006597,z:0.006597,AB:0.005014,BB:0.009758,CB:0.004879,DB:0.007722,EB:0.004283,FB:0.004367,GB:0.004534,HB:0.003861,IB:0.004227,JB:0.004418,KB:0.004161,LB:0.004227,MB:0.004725,NB:0.011583,OB:0.008942,PB:0.004707,QB:0.004827,RB:0.004707,SB:0.004707,TB:0.004326,UB:0.008922,VB:0.014349,WB:0.004425,XB:0.00472,YB:0.004425,ZB:0.004425,aB:0.00472,bB:0.004532,cB:0.004566,dB:0.02283,eB:0.00867,fB:0.004656,gB:0.004642,hB:0.003929,iB:0.00944,jB:0.004293,kB:0.003929,lB:0.004298,h:0.096692,mB:0.004201,nB:0.004141,oB:0.004257,pB:0.003939,qB:0.008236,P:0.003855,Q:0.003939,R:0.008514,xB:0.003939,S:0.003939,T:0.003702,U:0.007722,V:0.003855,W:0.003855,X:0.003929,Y:0.003861,Z:0.011703,a:0.007546,b:0.011829,c:0.069498,d:0.648648,e:0.370656,RC:0.00685,SC:0,TC:0.008392,UC:0.004706,rB:0.006229,CC:0.004879,VC:0.008786,sB:0.00472},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","F","RC","SC","TC","UC","B","rB","CC","VC","C","sB","G","M","N","O","x","g","y","z","0","1","2","3","4","5","6","7","8","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","QB","RB","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","h","mB","nB","oB","pB","qB","P","Q","R","xB","S","T","U","V","W","X","Y","Z","a","b","c","d","e","","",""],E:"Opera",F:{"0":1405987200,"1":1409616000,"2":1413331200,"3":1417132800,"4":1422316800,"5":1425945600,"6":1430179200,"7":1433808000,"8":1438646400,"9":1442448000,F:1150761600,RC:1223424000,SC:1251763200,TC:1267488000,UC:1277942400,B:1292457600,rB:1302566400,CC:1309219200,VC:1323129600,C:1323129600,sB:1352073600,G:1372723200,M:1377561600,N:1381104000,O:1386288000,x:1390867200,g:1393891200,y:1399334400,z:1401753600,AB:1445904000,BB:1449100800,CB:1454371200,DB:1457308800,EB:1462320000,FB:1465344000,GB:1470096000,HB:1474329600,IB:1477267200,JB:1481587200,KB:1486425600,LB:1490054400,MB:1494374400,NB:1498003200,OB:1502236800,PB:1506470400,QB:1510099200,RB:1515024000,SB:1517961600,TB:1521676800,UB:1525910400,VB:1530144000,WB:1534982400,XB:1537833600,YB:1543363200,ZB:1548201600,aB:1554768000,bB:1561593600,cB:1566259200,dB:1570406400,eB:1573689600,fB:1578441600,gB:1583971200,hB:1587513600,iB:1592956800,jB:1595894400,kB:1600128000,lB:1603238400,h:1613520000,mB:1612224000,nB:1616544000,oB:1619568000,pB:1623715200,qB:1627948800,P:1631577600,Q:1633392000,R:1635984000,xB:1638403200,S:1642550400,T:1644969600,U:1647993600,V:1650412800,W:1652745600,X:1654646400,Y:1657152000,Z:1660780800,a:1663113600,b:1668816000,c:1668643200,d:1671062400,e:1675209600},D:{F:"o",B:"o",C:"o",RC:"o",SC:"o",TC:"o",UC:"o",rB:"o",CC:"o",VC:"o",sB:"o"}},G:{A:{E:0,"0B":0,WC:0,DC:0.00156679,XC:0.00313358,YC:0.00313358,ZC:0.0125343,aC:0.00626717,bC:0.0172347,cC:0.0564045,dC:0.00470038,eC:0.0987079,fC:0.0250687,gC:0.0235019,hC:0.0219351,iC:0.394832,jC:0.0156679,kC:0.0360362,lC:0.0344694,mC:0.108109,nC:0.282023,oC:0.532709,pC:0.153546,"3B":0.195849,"4B":0.233452,"5B":0.412066,"6B":1.40071,tB:1.43988,"7B":3.51431,"8B":3.62556,"9B":2.04623,AC:0.00940075,BC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","0B","WC","DC","XC","YC","ZC","E","aC","bC","cC","dC","eC","fC","gC","hC","iC","jC","kC","lC","mC","nC","oC","pC","3B","4B","5B","6B","tB","7B","8B","9B","AC","BC","",""],E:"Safari on iOS",F:{"0B":1270252800,WC:1283904000,DC:1299628800,XC:1331078400,YC:1359331200,ZC:1394409600,E:1410912000,aC:1413763200,bC:1442361600,cC:1458518400,dC:1473724800,eC:1490572800,fC:1505779200,gC:1522281600,hC:1537142400,iC:1553472000,jC:1568851200,kC:1572220800,lC:1580169600,mC:1585008000,nC:1600214400,oC:1619395200,pC:1632096000,"3B":1639353600,"4B":1647216000,"5B":1652659200,"6B":1658275200,tB:1662940800,"7B":1666569600,"8B":1670889600,"9B":1674432000,AC:1679875200,BC:null}},H:{A:{qC:0.993853},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","qC","","",""],E:"Opera Mini",F:{qC:1426464000}},I:{A:{uB:0,I:0.019696,H:0,rC:0,sC:0,tC:0,uC:0.0787838,DC:0.0689359,vC:0,wC:0.305287},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","rC","sC","tC","uB","I","uC","DC","vC","wC","H","","",""],E:"Android Browser",F:{rC:1256515200,sC:1274313600,tC:1291593600,uB:1298332800,I:1318896000,uC:1341792000,DC:1374624000,vC:1386547200,wC:1401667200,H:1678147200}},J:{A:{D:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,h:0.0111391,rB:0,CC:0,sB:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","rB","CC","C","sB","h","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,rB:1314835200,CC:1318291200,C:1330300800,sB:1349740800,h:1673827200},D:{h:"webkit"}},L:{A:{H:42.629},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","H","","",""],E:"Chrome for Android",F:{H:1678147200}},M:{A:{f:0.294672},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","f","","",""],E:"Firefox for Android",F:{f:1676332800}},N:{A:{A:0.0115934,B:0.022664},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{xC:0.896294},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","xC","","",""],E:"UC Browser for Android",F:{xC:1634688000},D:{xC:"webkit"}},P:{A:{I:0.166372,g:0,yC:0.0103543,zC:0.010304,"0C":0.0519911,"1C":0.0103584,"2C":0.0104443,"1B":0.0105043,"3C":0.0311947,"4C":0.0103982,"5C":0.0311947,"6C":0.0311947,"7C":0.0207965,tB:0.0727876,"8C":0.0727876,"9C":0.0935841,AD:1.32057},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","yC","zC","0C","1C","2C","1B","3C","4C","5C","6C","7C","tB","8C","9C","AD","g","","",""],E:"Samsung Internet",F:{I:1461024000,yC:1481846400,zC:1509408000,"0C":1528329600,"1C":1546128000,"2C":1554163200,"1B":1567900800,"3C":1582588800,"4C":1593475200,"5C":1605657600,"6C":1618531200,"7C":1629072000,tB:1640736000,"8C":1651708800,"9C":1659657600,AD:1667260800,g:1677369600}},Q:{A:{"2B":0.12278},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","2B","","",""],E:"QQ Browser",F:{"2B":1663718400}},R:{A:{BD:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","BD","","",""],E:"Baidu Browser",F:{BD:1663027200}},S:{A:{CD:0.079807,DD:0},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","CD","DD","","",""],E:"KaiOS Browser",F:{CD:1527811200,DD:1631664000}}};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js
    index 8d687497165821..f32cace815c021 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/browserVersions.js
    @@ -1 +1 @@
    -module.exports={"0":"24","1":"25","2":"26","3":"27","4":"28","5":"29","6":"30","7":"31","8":"32","9":"33",A:"10",B:"11",C:"12",D:"7",E:"8",F:"9",G:"15",H:"110",I:"4",J:"6",K:"13",L:"14",M:"16",N:"17",O:"18",P:"79",Q:"80",R:"81",S:"83",T:"84",U:"85",V:"86",W:"87",X:"88",Y:"89",Z:"90",a:"91",b:"92",c:"93",d:"94",e:"95",f:"109",g:"20",h:"73",i:"96",j:"97",k:"98",l:"99",m:"100",n:"101",o:"102",p:"103",q:"104",r:"105",s:"106",t:"107",u:"108",v:"5",w:"19",x:"21",y:"22",z:"23",AB:"34",BB:"35",CB:"36",DB:"37",EB:"38",FB:"39",GB:"40",HB:"41",IB:"42",JB:"43",KB:"44",LB:"45",MB:"46",NB:"47",OB:"48",PB:"49",QB:"50",RB:"51",SB:"52",TB:"53",UB:"54",VB:"55",WB:"56",XB:"57",YB:"58",ZB:"60",aB:"62",bB:"63",cB:"64",dB:"65",eB:"66",fB:"67",gB:"68",hB:"69",iB:"70",jB:"71",kB:"72",lB:"74",mB:"75",nB:"76",oB:"77",pB:"78",qB:"11.1",rB:"12.1",sB:"16.0",tB:"3",uB:"59",vB:"61",wB:"82",xB:"111",yB:"112",zB:"3.2","0B":"10.1","1B":"13.1","2B":"15.2-15.3","3B":"15.4","4B":"15.5","5B":"15.6","6B":"16.1","7B":"16.2","8B":"16.3","9B":"16.4",AC:"11.5",BC:"4.2-4.3",CC:"5.5",DC:"2",EC:"3.5",FC:"3.6",GC:"113",HC:"3.1",IC:"5.1",JC:"6.1",KC:"7.1",LC:"9.1",MC:"14.1",NC:"15.1",OC:"TP",PC:"9.5-9.6",QC:"10.0-10.1",RC:"10.5",SC:"10.6",TC:"11.6",UC:"4.0-4.1",VC:"5.0-5.1",WC:"6.0-6.1",XC:"7.0-7.1",YC:"8.1-8.4",ZC:"9.0-9.2",aC:"9.3",bC:"10.0-10.2",cC:"10.3",dC:"11.0-11.2",eC:"11.3-11.4",fC:"12.0-12.1",gC:"12.2-12.5",hC:"13.0-13.1",iC:"13.2",jC:"13.3",kC:"13.4-13.7",lC:"14.0-14.4",mC:"14.5-14.8",nC:"15.0-15.1",oC:"all",pC:"2.1",qC:"2.2",rC:"2.3",sC:"4.1",tC:"4.4",uC:"4.4.3-4.4.4",vC:"13.4",wC:"5.0-5.4",xC:"6.2-6.4",yC:"7.2-7.4",zC:"8.2","0C":"9.2","1C":"11.1-11.2","2C":"12.0","3C":"13.0","4C":"14.0","5C":"15.0","6C":"17.0","7C":"18.0","8C":"19.0","9C":"13.18",AD:"2.5",BD:"3.0-3.1"};
    +module.exports={"0":"23","1":"24","2":"25","3":"26","4":"27","5":"28","6":"29","7":"30","8":"31","9":"32",A:"10",B:"11",C:"12",D:"7",E:"8",F:"9",G:"15",H:"111",I:"4",J:"6",K:"13",L:"14",M:"16",N:"17",O:"18",P:"79",Q:"80",R:"81",S:"83",T:"84",U:"85",V:"86",W:"87",X:"88",Y:"89",Z:"90",a:"91",b:"92",c:"93",d:"94",e:"95",f:"110",g:"20",h:"73",i:"96",j:"97",k:"98",l:"99",m:"100",n:"101",o:"102",p:"103",q:"104",r:"105",s:"106",t:"107",u:"108",v:"109",w:"5",x:"19",y:"21",z:"22",AB:"33",BB:"34",CB:"35",DB:"36",EB:"37",FB:"38",GB:"39",HB:"40",IB:"41",JB:"42",KB:"43",LB:"44",MB:"45",NB:"46",OB:"47",PB:"48",QB:"49",RB:"50",SB:"51",TB:"52",UB:"53",VB:"54",WB:"55",XB:"56",YB:"57",ZB:"58",aB:"60",bB:"62",cB:"63",dB:"64",eB:"65",fB:"66",gB:"67",hB:"68",iB:"69",jB:"70",kB:"71",lB:"72",mB:"74",nB:"75",oB:"76",pB:"77",qB:"78",rB:"11.1",sB:"12.1",tB:"16.0",uB:"3",vB:"59",wB:"61",xB:"82",yB:"112",zB:"113","0B":"3.2","1B":"10.1","2B":"13.1","3B":"15.2-15.3","4B":"15.4","5B":"15.5","6B":"15.6","7B":"16.1","8B":"16.2","9B":"16.3",AC:"16.4",BC:"16.5",CC:"11.5",DC:"4.2-4.3",EC:"5.5",FC:"2",GC:"3.5",HC:"3.6",IC:"114",JC:"3.1",KC:"5.1",LC:"6.1",MC:"7.1",NC:"9.1",OC:"14.1",PC:"15.1",QC:"TP",RC:"9.5-9.6",SC:"10.0-10.1",TC:"10.5",UC:"10.6",VC:"11.6",WC:"4.0-4.1",XC:"5.0-5.1",YC:"6.0-6.1",ZC:"7.0-7.1",aC:"8.1-8.4",bC:"9.0-9.2",cC:"9.3",dC:"10.0-10.2",eC:"10.3",fC:"11.0-11.2",gC:"11.3-11.4",hC:"12.0-12.1",iC:"12.2-12.5",jC:"13.0-13.1",kC:"13.2",lC:"13.3",mC:"13.4-13.7",nC:"14.0-14.4",oC:"14.5-14.8",pC:"15.0-15.1",qC:"all",rC:"2.1",sC:"2.2",tC:"2.3",uC:"4.1",vC:"4.4",wC:"4.4.3-4.4.4",xC:"13.4",yC:"5.0-5.4",zC:"6.2-6.4","0C":"7.2-7.4","1C":"8.2","2C":"9.2","3C":"11.1-11.2","4C":"12.0","5C":"13.0","6C":"14.0","7C":"15.0","8C":"17.0","9C":"18.0",AD:"19.0",BD:"13.18",CD:"2.5",DD:"3.0-3.1"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js
    index d3a2ac9ba2e68e..0eaa2d2dbbd502 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/aac.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB I v J D E F A B C K L G M N O w g x EC FC","132":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F","16":"A B"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"132":"H"},N:{"1":"A","2":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"132":"AD BD"}},B:6,C:"AAC audio file format"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB I w J D E F A B C K L G M N O x g y GC HC","132":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F","16":"A B"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"132":"f"},N:{"1":"A","2":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"132":"CD DD"}},B:6,C:"AAC audio file format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js
    index a141f9d3ef9950..357a161b8c2830 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/abortcontroller.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G"},C:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB EC FC"},D:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B","130":"C qB"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"AbortController & AbortSignal"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G"},C:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB GC HC"},D:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B","130":"C rB"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"AbortController & AbortSignal"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js
    index f18acaaa615d69..e6da608b0ea1ee 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ac3-ec3.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC","132":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D","132":"A"},K:{"2":"A B C h qB AC","132":"rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC","132":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D","132":"A"},K:{"2":"A B C h rB CC","132":"sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"AC-3 (Dolby Digital) and EC-3 (Dolby Digital Plus) codecs"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js
    index 4978885c5d96e0..8b1ee96d207ec9 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/accelerometer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","194":"YB uB ZB vB aB bB cB dB eB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:4,C:"Accelerometer"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","194":"ZB vB aB wB bB cB dB eB fB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:4,C:"Accelerometer"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js
    index f4faa16aef91e3..15b5a8bd37bd30 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/addeventlistener.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","130":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","257":"DC tB I v J EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"EventTarget.addEventListener()"};
    +module.exports={A:{A:{"1":"F A B","130":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","257":"FC uB I w J GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"EventTarget.addEventListener()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
    index d814a20fd6fc69..7b017478995169 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/alternate-stylesheet.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","2":"J D CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"F B C PC QC RC SC qB AC TC rB","16":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"16":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"2":"h","16":"A B C qB AC rB"},L:{"16":"H"},M:{"16":"H"},N:{"16":"A B"},O:{"16":"vC"},P:{"16":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"16":"9C"},S:{"1":"AD BD"}},B:1,C:"Alternate stylesheet"};
    +module.exports={A:{A:{"1":"E F A B","2":"J D EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"F B C RC SC TC UC rB CC VC sB","16":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"16":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"2":"h","16":"A B C rB CC sB"},L:{"16":"H"},M:{"16":"f"},N:{"16":"A B"},O:{"16":"xC"},P:{"16":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"16":"BD"},S:{"1":"CD DD"}},B:1,C:"Alternate stylesheet"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js
    index dd23c6165e997d..c70d4594f1bf64 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ambient-light.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K","132":"L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB I v J D E F A B C K L G M N O w g x EC FC","132":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB","194":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","322":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB PC QC RC SC qB AC TC rB","322":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"132":"AD BD"}},B:4,C:"Ambient Light Sensor"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K","132":"L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB I w J D E F A B C K L G M N O x g y GC HC","132":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB","194":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","322":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB RC SC TC UC rB CC VC sB","322":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"132":"CD DD"}},B:4,C:"Ambient Light Sensor"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js
    index 5bcd4286e1dbaf..9a68648cb8252e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/apng.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC"},D:{"1":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},E:{"1":"E F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC KC"},F:{"1":"B C MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"0 1 2 3 4 5 6 7 8 9 F G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Animated PNG (APNG)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC"},D:{"1":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},E:{"1":"E F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC MC"},F:{"1":"B C NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"0 1 2 3 4 5 6 7 8 9 F G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Animated PNG (APNG)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js
    index c7751817758b21..890bd433c14c58 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find-index.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Array.prototype.findIndex"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Array.prototype.findIndex"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js
    index bcd4fd798b1e98..6e6c4128282077 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-find.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"C K L"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Array.prototype.find"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"C K L"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Array.prototype.find"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js
    index a4eb34f3d0564b..acaab01404ddc3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-flat.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB EC FC"},D:{"1":"hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB"},E:{"1":"C K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B qB"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB PC QC RC SC qB AC TC rB"},G:{"1":"fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"flat & flatMap array methods"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB GC HC"},D:{"1":"iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB"},E:{"1":"C K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B rB"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC TC UC rB CC VC sB"},G:{"1":"hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"flat & flatMap array methods"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js
    index 4fa4f553ba96a7..1ca3b059dd5641 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/array-includes.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB EC FC"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Array.prototype.includes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB GC HC"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Array.prototype.includes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js
    index 17969ecd675fa0..488bd14ecf8919 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/arrow-functions.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x EC FC"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Arrow functions"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y GC HC"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Arrow functions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js
    index 5876df0865f384..df5d8a7102013c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/asmjs.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","322":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x EC FC"},D:{"2":"0 1 2 3 I v J D E F A B C K L G M N O w g x y z","132":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","132":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","132":"h"},L:{"132":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"132":"vC"},P:{"2":"I","132":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"132":"1B"},R:{"132":"9C"},S:{"1":"AD BD"}},B:6,C:"asm.js"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","322":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y GC HC"},D:{"2":"0 1 2 3 4 I w J D E F A B C K L G M N O x g y z","132":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","132":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","132":"h"},L:{"132":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"132":"xC"},P:{"2":"I","132":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"132":"2B"},R:{"132":"BD"},S:{"1":"CD DD"}},B:6,C:"asm.js"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js
    index 69d2ee4e1689ab..db911896ac7673 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-clipboard.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB EC FC","132":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","66":"YB uB ZB vB"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC","260":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","260":"f"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"132":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I wC xC yC zC","260":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD","132":"BD"}},B:5,C:"Asynchronous Clipboard API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB GC HC","132":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","66":"ZB vB aB wB"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC","260":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","260":"H"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"132":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I yC zC 0C 1C","260":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD","132":"DD"}},B:5,C:"Asynchronous Clipboard API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js
    index 0065b80c3f7e5f..a96ad1b6d6b386 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/async-functions.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K","194":"L"},C:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC"},D:{"1":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC","514":"0B"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC","514":"cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"Async functions"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K","194":"L"},C:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB GC HC"},D:{"1":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC","514":"1B"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC","514":"eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"Async functions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js
    index 3c150bbdc9069c..575e8a62e1d759 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/atob-btoa.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","2":"F PC QC","16":"RC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","16":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Base64 encoding and decoding"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","2":"F RC SC","16":"TC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","16":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Base64 encoding and decoding"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js
    index f32cfdfdbce25c..6d8de42402e730 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O w g x y z"},E:{"1":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","33":"J D E F A B C K L JC KC LC 0B qB rB 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"G M N O w g x"},G:{"1":"mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Web Audio API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O x g y z AB"},E:{"1":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","33":"J D E F A B C K L LC MC NC 1B rB sB 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"G M N O x g y"},G:{"1":"oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Web Audio API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js
    index 5ce0ec24641f7e..61996d6ae2fdbd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audio.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","132":"I v J D E F A B C K L G M N O w EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F","4":"PC QC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","2":"pC qC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Audio element"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","132":"I w J D E F A B C K L G M N O x GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F","4":"RC SC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","2":"rC sC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Audio element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js
    index c93eb6247e60a4..115d105ff1476b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/audiotracks.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB","322":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC"},F:{"2":"0 1 2 3 4 5 6 7 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","322":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","322":"h"},L:{"322":"H"},M:{"2":"H"},N:{"1":"A B"},O:{"322":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"322":"1B"},R:{"322":"9C"},S:{"194":"AD BD"}},B:1,C:"Audio Tracks"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB","322":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G M N O x g y z RC SC TC UC rB CC VC sB","322":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","322":"h"},L:{"322":"H"},M:{"2":"f"},N:{"1":"A B"},O:{"322":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"322":"2B"},R:{"322":"BD"},S:{"194":"CD DD"}},B:1,C:"Audio Tracks"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js
    index 9d1583af9e6013..01ab037ba32e47 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/autofocus.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"Autofocus attribute"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"Autofocus attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js
    index b8ca7e4baa2235..69f0ef3f5320ca 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/auxclick.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC","129":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"Auxclick"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC","129":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"Auxclick"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js
    index 0e950abc1f8218..f4ed7efcb68468 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/av1.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N","194":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB EC FC","66":"VB WB XB YB uB ZB vB aB bB cB","260":"dB","516":"eB"},D:{"1":"iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB","66":"fB gB hB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1090":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:6,C:"AV1 video format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N","194":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB GC HC","66":"WB XB YB ZB vB aB wB bB cB dB","260":"eB","516":"fB"},D:{"1":"jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB","66":"gB hB iB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1090":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:6,C:"AV1 video format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js
    index 66b692893eeded..a21e8bebde73b7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/avif.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB EC FC","194":"oB pB P Q R wB S T U V W X Y Z a b","257":"c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB","1281":"9B OC","1796":"6B 7B 8B"},F:{"1":"jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B","1281":"sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"257":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:6,C:"AVIF image format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB GC HC","194":"pB qB P Q R xB S T U V W X Y Z a b","257":"c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB","1796":"7B 8B 9B"},F:{"1":"kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB RC SC TC UC rB CC VC sB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B","1281":"tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"257":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:6,C:"AVIF image format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js
    index b03b5b03bac485..c0041eda1443c2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-attachment.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","132":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","132":"0 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C IC JC KC LC 0B qB rB 3B 4B 5B sB 6B 7B 8B 9B OC","132":"I K HC zB 1B","2050":"L G MC NC 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","132":"F PC QC"},G:{"2":"zB UC BC","772":"E VC WC XC YC ZC aC bC cC dC eC fC gC","2050":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC tC uC","132":"sC BC"},J:{"260":"D A"},K:{"1":"B C h qB AC rB","132":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"2":"I","1028":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS background-attachment"};
    +module.exports={A:{A:{"1":"F A B","132":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","132":"0 1 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C KC LC MC NC 1B rB sB 4B 5B 6B tB 7B 8B 9B AC BC QC","132":"I K JC 0B 2B","2050":"L G OC PC 3B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","132":"F RC SC"},G:{"2":"0B WC DC","772":"E XC YC ZC aC bC cC dC eC fC gC hC iC","2050":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC vC wC","132":"uC DC"},J:{"260":"D A"},K:{"1":"B C h rB CC sB","132":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"2":"I","1028":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS background-attachment"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js
    index ea59cb22b74fe9..ac8245b6348edc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-clip-text.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O","33":"C K L P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB","33":"I v J D E F A B C K IC JC KC LC 0B qB rB 1B"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC","33":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"oC"},I:{"16":"tB pC qC rC","33":"I f sC BC tC uC"},J:{"33":"D A"},K:{"16":"A B C qB AC rB","33":"h"},L:{"33":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"33":"vC"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"33":"1B"},R:{"33":"9C"},S:{"1":"AD BD"}},B:7,C:"Background-clip: text"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O","33":"C K L P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB GC HC"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B","33":"I w J D E F A B C K KC LC MC NC 1B rB sB 2B"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC","33":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"qC"},I:{"16":"uB rC sC tC","33":"I H uC DC vC wC"},J:{"33":"D A"},K:{"16":"A B C rB CC sB","33":"h"},L:{"33":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"33":"xC"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"33":"2B"},R:{"33":"BD"},S:{"1":"CD DD"}},B:7,C:"Background-clip: text"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js
    index ac39e19d1cc33a..263d997c61f59d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-img-opts.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC","36":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","516":"I v J D E F A B C K L"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","772":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC","36":"QC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","4":"zB UC BC WC","516":"VC"},H:{"132":"oC"},I:{"1":"f tC uC","36":"pC","516":"tB I sC BC","548":"qC rC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 Background-image options"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC","36":"HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","516":"I w J D E F A B C K L"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","772":"I w J JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC","36":"SC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","4":"0B WC DC YC","516":"XC"},H:{"132":"qC"},I:{"1":"H vC wC","36":"rC","516":"uB I uC DC","548":"sC tC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 Background-image options"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js
    index 9ce520ac967e55..078b2bb2f8e528 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-position-x-y.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:7,C:"background-position-x & background-position-y"};
    +module.exports={A:{A:{"1":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:7,C:"background-position-x & background-position-y"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
    index 16a9ffa196d493..d3f166159ab187 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-repeat-round-space.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E CC","132":"F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F G M N O PC QC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"CSS background-repeat round and space"};
    +module.exports={A:{A:{"1":"A B","2":"J D E EC","132":"F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB GC HC"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F G M N O RC SC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"CSS background-repeat round and space"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js
    index 66e0584d0eea2c..25881c6b4b9600 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/background-sync.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H EC FC","16":"xB yB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Background Sync API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H GC HC","16":"yB zB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Background Sync API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js
    index aec4b6ea4439c2..b81176cb223a61 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/battery-status.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"JB KB LB MB NB OB PB QB RB","2":"DC tB I v J D E F SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","132":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB","164":"A B C K L G"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB","66":"DB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD","2":"BD"}},B:4,C:"Battery Status API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB SB","2":"FC uB I w J D E F TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","132":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB","164":"A B C K L G"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB","66":"EB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD","2":"DD"}},B:4,C:"Battery Status API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js
    index 6b01159ff29315..bb37fee22819d0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beacon.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Beacon API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Beacon API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js
    index 4c713f282ac4e8..d20029a9e4721a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/beforeafterprint.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","16":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC"},D:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB PC QC RC SC qB AC TC rB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"16":"A B"},O:{"1":"vC"},P:{"2":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","16":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Printing Events"};
    +module.exports={A:{A:{"1":"J D E F A B","16":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC"},D:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB sB"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RC SC TC UC rB CC VC sB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"16":"A B"},O:{"1":"xC"},P:{"2":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","16":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Printing Events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js
    index a1c2ffe5c92811..b914464eb2bb75 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bigint.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB EC FC","194":"dB eB fB"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB 1B"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"BigInt"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB GC HC","194":"eB fB gB"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB 2B"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"BigInt"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js
    index 85decf9e1d1bd8..2e92b702c31ad7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/blobbuilder.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC","36":"J D E F A B C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D","36":"E F A B C K L G M N O w"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B C PC QC RC SC qB AC TC"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC"},H:{"2":"oC"},I:{"1":"f","2":"pC qC rC","36":"tB I sC BC tC uC"},J:{"1":"A","2":"D"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Blob constructing"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC","36":"J D E F A B C"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D","36":"E F A B C K L G M N O x"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B C RC SC TC UC rB CC VC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC"},H:{"2":"qC"},I:{"1":"H","2":"rC sC tC","36":"uB I uC DC vC wC"},J:{"1":"A","2":"D"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Blob constructing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js
    index 44796d92bcf440..617ac486fdc206 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/bloburls.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","129":"A B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D","33":"E F A B C K L G M N O w g x y"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB pC qC rC","33":"I sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Blob URLs"};
    +module.exports={A:{A:{"2":"J D E F EC","129":"A B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D","33":"E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB rC sC tC","33":"I uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Blob URLs"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js
    index 981425cd74943d..69affb797f677a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-image.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","260":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","804":"I v J D E F A B C K L EC FC"},D:{"1":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","260":"RB SB TB UB VB","388":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","1412":"0 1 2 3 4 5 G M N O w g x y z","1956":"I v J D E F A B C K L"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","129":"A B C K L G LC 0B qB rB 1B MC NC 2B","1412":"J D E F JC KC","1956":"I v HC zB IC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F PC QC","260":"EB FB GB HB IB","388":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB","1796":"RC SC","1828":"B C qB AC TC rB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","129":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B","1412":"E WC XC YC ZC","1956":"zB UC BC VC"},H:{"1828":"oC"},I:{"1":"f","388":"tC uC","1956":"tB I pC qC rC sC BC"},J:{"1412":"A","1924":"D"},K:{"1":"h","2":"A","1828":"B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","260":"wC xC","388":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","260":"AD"}},B:4,C:"CSS3 Border images"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","260":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","804":"I w J D E F A B C K L GC HC"},D:{"1":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","260":"SB TB UB VB WB","388":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","1412":"0 1 2 3 4 5 6 G M N O x g y z","1956":"I w J D E F A B C K L"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","129":"A B C K L G NC 1B rB sB 2B OC PC 3B","1412":"J D E F LC MC","1956":"I w JC 0B KC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F RC SC","260":"FB GB HB IB JB","388":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB","1796":"TC UC","1828":"B C rB CC VC sB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","129":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B","1412":"E YC ZC aC bC","1956":"0B WC DC XC"},H:{"1828":"qC"},I:{"1":"H","388":"vC wC","1956":"uB I rC sC tC uC DC"},J:{"1412":"A","1924":"D"},K:{"1":"h","2":"A","1828":"B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","260":"yC zC","388":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","260":"CD"}},B:4,C:"CSS3 Border images"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js
    index 1470e40ee86c20..b5b1d36dac7a7a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/border-radius.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","257":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","289":"tB EC FC","292":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"I"},E:{"1":"v D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"I HC zB","129":"J IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"zB"},H:{"2":"oC"},I:{"1":"tB I f qC rC sC BC tC uC","33":"pC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","257":"AD"}},B:4,C:"CSS3 Border-radius (rounded corners)"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","257":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","289":"uB GC HC","292":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"I"},E:{"1":"w D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"I JC 0B","129":"J KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"0B"},H:{"2":"qC"},I:{"1":"uB I H sC tC uC DC vC wC","33":"rC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","257":"CD"}},B:4,C:"CSS3 Border-radius (rounded corners)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js
    index b16f912e720e4a..bcc74c5ccc41ef 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/broadcastchannel.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EC FC"},D:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB PC QC RC SC qB AC TC rB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"BroadcastChannel"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB GC HC"},D:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB RC SC TC UC rB CC VC sB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"BroadcastChannel"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js
    index 4dcf45aca03850..0a41ec2403940a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/brotli.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB EC FC"},D:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","194":"PB","257":"QB"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","513":"B C qB rB"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB","194":"CB DB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB GC HC"},D:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","194":"QB","257":"RB"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","513":"B C rB sB"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB","194":"DB EB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Brotli Accept-Encoding/Content-Encoding"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js
    index 179384e775019a..084e57d0940cf1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/calc.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","260":"F","516":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","33":"I v J D E F A B C K L G"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O","33":"0 1 w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"WC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","132":"tC uC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"calc() as CSS unit value"};
    +module.exports={A:{A:{"2":"J D E EC","260":"F","516":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","33":"I w J D E F A B C K L G"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O","33":"0 1 2 x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"YC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","132":"vC wC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"calc() as CSS unit value"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js
    index 667ca1b568cb01..9bde14258fe8db 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-blending.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w EC FC"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Canvas blend modes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x GC HC"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Canvas blend modes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js
    index 95d56f85a1ac26..cce201edd8940a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas-text.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"CC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","8":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","8":"F PC QC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","8":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Text API for Canvas"};
    +module.exports={A:{A:{"1":"F A B","2":"EC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","8":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","8":"F RC SC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","8":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Text API for Canvas"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js
    index f37e091df0699f..1b760510db52c1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/canvas.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"CC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","132":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","132":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"260":"oC"},I:{"1":"tB I f sC BC tC uC","132":"pC qC rC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Canvas (basic support)"};
    +module.exports={A:{A:{"1":"F A B","2":"EC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","132":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","132":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"260":"qC"},I:{"1":"uB I H uC DC vC wC","132":"rC sC tC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Canvas (basic support)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js
    index 0c4b98148937c5..8b191e238066c8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ch-unit.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"ch (character) unit"};
    +module.exports={A:{A:{"2":"J D E EC","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"ch (character) unit"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
    index bd44fa021df615..cf64635a8d01d0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/chacha20-poly1305.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 I v J D E F A B C K L G M N O w g x y z","129":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC","16":"uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z","129":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC","16":"wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"ChaCha20-Poly1305 cipher suites for TLS"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js
    index 8dc200afc4265f..fe036a372f7953 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/channel-messaging.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","2":"F PC QC","16":"RC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Channel messaging"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","2":"F RC SC","16":"TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Channel messaging"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js
    index 21efd83e4bb58c..a78da21ff18a44 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/childnode-remove.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x y EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"ChildNode.remove()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"ChildNode.remove()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js
    index 3ce65116dc8162..f54651b72179ff 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/classlist.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"8":"J D E F CC","1924":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"DC tB EC","516":"0 1","772":"I v J D E F A B C K L G M N O w g x y z FC"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"I v J D","516":"0 1 2 3","772":"z","900":"E F A B C K L G M N O w g x y"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v HC zB","900":"J IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","8":"F B PC QC RC SC qB","900":"C AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC","900":"VC WC"},H:{"900":"oC"},I:{"1":"f tC uC","8":"pC qC rC","900":"tB I sC BC"},J:{"1":"A","900":"D"},K:{"1":"h","8":"A B","900":"C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"900":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"classList (DOMTokenList)"};
    +module.exports={A:{A:{"8":"J D E F EC","1924":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"FC uB GC","516":"1 2","772":"0 I w J D E F A B C K L G M N O x g y z HC"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"I w J D","516":"1 2 3 4","772":"0","900":"E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w JC 0B","900":"J KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","8":"F B RC SC TC UC rB","900":"C CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC","900":"XC YC"},H:{"900":"qC"},I:{"1":"H vC wC","8":"rC sC tC","900":"uB I uC DC"},J:{"1":"A","900":"D"},K:{"1":"h","8":"A B","900":"C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"900":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"classList (DOMTokenList)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
    index e2726a30a061ee..cae7314a7c27cd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/client-hints-dpr-width-viewport.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:6,C:"Client Hints: DPR, Width, Viewport-Width"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js
    index 2db50713900657..621ae303e35ae4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/clipboard.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2436":"J D E F A B CC"},B:{"260":"N O","2436":"C K L G M","8196":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB I v J D E F A B C K L G M N O w g x EC FC","772":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB","4100":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"I v J D E F A B C","2564":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB","8196":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","10244":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"C K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB","2308":"A B 0B qB","2820":"I v J D E F IC JC KC LC"},F:{"2":"F B PC QC RC SC qB AC TC","16":"C","516":"rB","2564":"0 1 2 3 4 5 G M N O w g x y z","8196":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","10244":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB"},G:{"1":"fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","2820":"E VC WC XC YC ZC aC bC cC dC eC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","260":"f","2308":"tC uC"},J:{"2":"D","2308":"A"},K:{"2":"A B C qB AC","16":"rB","8196":"h"},L:{"8196":"H"},M:{"1028":"H"},N:{"2":"A B"},O:{"8196":"vC"},P:{"2052":"wC xC","2308":"I","8196":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"8196":"1B"},R:{"8196":"9C"},S:{"4100":"AD BD"}},B:5,C:"Synchronous Clipboard API"};
    +module.exports={A:{A:{"2436":"J D E F A B EC"},B:{"260":"N O","2436":"C K L G M","8196":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB I w J D E F A B C K L G M N O x g y GC HC","772":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB","4100":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"I w J D E F A B C","2564":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB","8196":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","10244":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},E:{"1":"C K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B","2308":"A B 1B rB","2820":"I w J D E F KC LC MC NC"},F:{"2":"F B RC SC TC UC rB CC VC","16":"C","516":"sB","2564":"0 1 2 3 4 5 6 G M N O x g y z","8196":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","10244":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB"},G:{"1":"hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","2820":"E XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","260":"H","2308":"vC wC"},J:{"2":"D","2308":"A"},K:{"2":"A B C rB CC","16":"sB","8196":"h"},L:{"8196":"H"},M:{"1028":"f"},N:{"2":"A B"},O:{"8196":"xC"},P:{"2052":"yC zC","2308":"I","8196":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"8196":"2B"},R:{"8196":"BD"},S:{"4100":"CD DD"}},B:5,C:"Synchronous Clipboard API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js
    index 150604486fc755..f659f7ee037ac6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr-v1.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"k l m n o p q r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j"},C:{"1":"t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j EC FC","258":"k l m n o p q","578":"r s"},D:{"1":"k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y","194":"Z a b c d e i j"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"16":"A B"},O:{"2":"vC"},P:{"1":"g 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"COLR/CPAL(v1) Font Formats"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j"},C:{"1":"t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j GC HC","258":"k l m n o p q","578":"r s"},D:{"1":"k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y","194":"Z a b c d e i j"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"16":"A B"},O:{"2":"xC"},P:{"1":"g 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"COLR/CPAL(v1) Font Formats"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js
    index cfa470eae3c69b..3e019aa577e1d0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/colr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","257":"F A B"},B:{"1":"C K L G M N O","513":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB","513":"jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","129":"B C K qB rB 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB PC QC RC SC qB AC TC rB","513":"YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"16":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"COLR/CPAL(v0) Font Formats"};
    +module.exports={A:{A:{"2":"J D E EC","257":"F A B"},B:{"1":"C K L G M N O","513":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB","513":"kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","129":"B C K rB sB 2B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB RC SC TC UC rB CC VC sB","513":"ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"16":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"COLR/CPAL(v0) Font Formats"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js
    index 5fc754ad377d29..89adf53bd86bdd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/comparedocumentposition.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC tB EC FC"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","132":"0 1 2 3 4 5 G M N O w g x y z"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v J HC zB","132":"D E F JC KC LC","260":"IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","16":"F B PC QC RC SC qB AC","132":"G M"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB","132":"E UC BC VC WC XC YC ZC aC"},H:{"1":"oC"},I:{"1":"f tC uC","16":"pC qC","132":"tB I rC sC BC"},J:{"132":"D A"},K:{"1":"C h rB","16":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Node.compareDocumentPosition()"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC uB GC HC"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","132":"0 1 2 3 4 5 6 G M N O x g y z"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w J JC 0B","132":"D E F LC MC NC","260":"KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","16":"F B RC SC TC UC rB CC","132":"G M"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B","132":"E WC DC XC YC ZC aC bC cC"},H:{"1":"qC"},I:{"1":"H vC wC","16":"rC sC","132":"uB I tC uC DC"},J:{"132":"D A"},K:{"1":"C h sB","16":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Node.compareDocumentPosition()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js
    index e7449f2ff4b920..14ba72a7d98f15 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-basic.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D CC","132":"E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F PC QC RC SC"},G:{"1":"zB UC BC VC","513":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"4097":"oC"},I:{"1025":"tB I f pC qC rC sC BC tC uC"},J:{"258":"D A"},K:{"2":"A","258":"B C qB AC rB","1025":"h"},L:{"1025":"H"},M:{"2049":"H"},N:{"258":"A B"},O:{"258":"vC"},P:{"1025":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1025":"9C"},S:{"1":"AD BD"}},B:1,C:"Basic console logging functions"};
    +module.exports={A:{A:{"1":"A B","2":"J D EC","132":"E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F RC SC TC UC"},G:{"1":"0B WC DC XC","513":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"4097":"qC"},I:{"1025":"uB I H rC sC tC uC DC vC wC"},J:{"258":"D A"},K:{"2":"A","258":"B C rB CC sB","1025":"h"},L:{"1025":"H"},M:{"2049":"f"},N:{"258":"A B"},O:{"258":"xC"},P:{"1025":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1025":"BD"},S:{"1":"CD DD"}},B:1,C:"Basic console logging functions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js
    index 1165db38922c67..c31e17f529c694 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/console-time.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F PC QC RC SC","16":"B"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"h","16":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"console.time and console.timeEnd"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F RC SC TC UC","16":"B"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"h","16":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"console.time and console.timeEnd"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js
    index bbfd0982362bd7..c1293cfc0fd10a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/const.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","2052":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","132":"DC tB I v J D E F A B C EC FC","260":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","260":"I v J D E F A B C K L G M N O w g","772":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB","1028":"HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","260":"I v A HC zB 0B","772":"J D E F IC JC KC LC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F PC","132":"B QC RC SC qB AC","644":"C TC rB","772":"0 1 2 3 G M N O w g x y z","1028":"4 5 6 7 8 9 AB BB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","260":"zB UC BC bC cC","772":"E VC WC XC YC ZC aC"},H:{"644":"oC"},I:{"1":"f","16":"pC qC","260":"rC","772":"tB I sC BC tC uC"},J:{"772":"D A"},K:{"1":"h","132":"A B qB AC","644":"C rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","1028":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"const"};
    +module.exports={A:{A:{"2":"J D E F A EC","2052":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","132":"FC uB I w J D E F A B C GC HC","260":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","260":"I w J D E F A B C K L G M N O x g","772":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB","1028":"IB JB KB LB MB NB OB PB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","260":"I w A JC 0B 1B","772":"J D E F KC LC MC NC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F RC","132":"B SC TC UC rB CC","644":"C VC sB","772":"0 1 2 3 4 G M N O x g y z","1028":"5 6 7 8 9 AB BB CB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","260":"0B WC DC dC eC","772":"E XC YC ZC aC bC cC"},H:{"644":"qC"},I:{"1":"H","16":"rC sC","260":"tC","772":"uB I uC DC vC wC"},J:{"772":"D A"},K:{"1":"h","132":"A B rB CC","644":"C sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","1028":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"const"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js
    index a5d1dea8cfc3d1..351c3a318ed598 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/constraint-validation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","900":"A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","388":"L G M","900":"C K"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","260":"PB QB","388":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","900":"0 1 2 3 4 I v J D E F A B C K L G M N O w g x y z"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","388":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB","900":"0 G M N O w g x y z"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB","388":"E F KC LC","900":"J D IC JC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F B PC QC RC SC qB AC","388":"0 1 2 G M N O w g x y z","900":"C TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC","388":"E XC YC ZC aC","900":"VC WC"},H:{"2":"oC"},I:{"1":"f","16":"tB pC qC rC","388":"tC uC","900":"I sC BC"},J:{"16":"D","388":"A"},K:{"1":"h","16":"A B qB AC","900":"C rB"},L:{"1":"H"},M:{"1":"H"},N:{"900":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","388":"AD"}},B:1,C:"Constraint Validation API"};
    +module.exports={A:{A:{"2":"J D E F EC","900":"A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","388":"L G M","900":"C K"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","260":"QB RB","388":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","900":"0 1 2 3 4 5 I w J D E F A B C K L G M N O x g y z"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","388":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB","900":"0 1 G M N O x g y z"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B","388":"E F MC NC","900":"J D KC LC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F B RC SC TC UC rB CC","388":"0 1 2 3 G M N O x g y z","900":"C VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC","388":"E ZC aC bC cC","900":"XC YC"},H:{"2":"qC"},I:{"1":"H","16":"uB rC sC tC","388":"vC wC","900":"I uC DC"},J:{"16":"D","388":"A"},K:{"1":"h","16":"A B rB CC","900":"C sB"},L:{"1":"H"},M:{"1":"f"},N:{"900":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","388":"CD"}},B:1,C:"Constraint Validation API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js
    index f268b199d5d1a1..41ab295ffbe9ee 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contenteditable.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC","4":"tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"contenteditable attribute (basic support)"};
    +module.exports={A:{A:{"1":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC","4":"uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"contenteditable attribute (basic support)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
    index 79d39a4b68bc7b..b37cd35f040666 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","129":"I v J D E F A B C K L G M N O w g x y"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K","257":"0 L G M N O w g x y z"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB","257":"J JC","260":"IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","257":"WC","260":"VC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D","257":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Content Security Policy 1.0"};
    +module.exports={A:{A:{"2":"J D E F EC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","129":"I w J D E F A B C K L G M N O x g y z"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K","257":"0 1 L G M N O x g y z"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B","257":"J LC","260":"KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","257":"YC","260":"XC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D","257":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Content Security Policy 1.0"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
    index 9b94eb1ef4a85a..f45f5e9efc2b91 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/contentsecuritypolicy2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L","4100":"G M N O"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","132":"7 8 9 AB","260":"BB","516":"CB DB EB FB GB HB IB JB KB"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB","1028":"CB DB EB","2052":"FB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y PC QC RC SC qB AC TC rB","1028":"0 1 z","2052":"2"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Content Security Policy Level 2"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L","4100":"G M N O"},C:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 FC uB I w J D E F A B C K L G M N O x g y z GC HC","132":"8 9 AB BB","260":"CB","516":"DB EB FB GB HB IB JB KB LB"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB","1028":"DB EB FB","2052":"GB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y z RC SC TC UC rB CC VC sB","1028":"0 1 2","2052":"3"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Content Security Policy Level 2"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js
    index 9735b19200dea7..b792387756b16f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cookie-store-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","194":"P Q R S T U V"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB","194":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB PC QC RC SC qB AC TC rB","194":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Cookie Store API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","194":"P Q R S T U V"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB","194":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB RC SC TC UC rB CC VC sB","194":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Cookie Store API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js
    index b1c019b63298dd..b150388e766c63 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cors.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D CC","132":"A","260":"E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB","1025":"vB aB bB cB dB eB fB gB hB iB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"I v J D E F A B C"},E:{"2":"HC zB","513":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","644":"I v IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC"},G:{"513":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","644":"zB UC BC VC"},H:{"2":"oC"},I:{"1":"f tC uC","132":"tB I pC qC rC sC BC"},J:{"1":"A","132":"D"},K:{"1":"C h rB","2":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","132":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Cross-Origin Resource Sharing"};
    +module.exports={A:{A:{"1":"B","2":"J D EC","132":"A","260":"E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB","1025":"wB bB cB dB eB fB gB hB iB jB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"I w J D E F A B C"},E:{"2":"JC 0B","513":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","644":"I w KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC"},G:{"513":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","644":"0B WC DC XC"},H:{"2":"qC"},I:{"1":"H vC wC","132":"uB I rC sC tC uC DC"},J:{"1":"A","132":"D"},K:{"1":"C h sB","2":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","132":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Cross-Origin Resource Sharing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js
    index b30abc3a293d87..537facc93881bc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/createimagebitmap.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB EC FC","1028":"c d e i j","3076":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b","8196":"k l m n o p q r s t u f H xB yB"},D:{"1":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","132":"QB RB","260":"SB TB","516":"UB VB WB XB YB"},E:{"2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B MC","4100":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB PC QC RC SC qB AC TC rB","132":"DB EB","260":"FB GB","516":"HB IB JB KB LB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC","4100":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"8196":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","16":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"3076":"AD BD"}},B:1,C:"createImageBitmap"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB GC HC","1028":"c d e i j","3076":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b","8196":"k l m n o p q r s t u v f H yB zB"},D:{"1":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","132":"RB SB","260":"TB UB","516":"VB WB XB YB ZB"},E:{"2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B OC","4100":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB RC SC TC UC rB CC VC sB","132":"EB FB","260":"GB HB","516":"IB JB KB LB MB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC","4100":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"8196":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","16":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"3076":"CD DD"}},B:1,C:"createImageBitmap"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js
    index fd3a28833685d8..5e2b95d6841c6b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/credential-management.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","66":"OB PB QB","129":"RB SB TB UB VB WB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB PC QC RC SC qB AC TC rB"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"Credential Management API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","66":"PB QB RB","129":"SB TB UB VB WB XB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB RC SC TC UC rB CC VC sB"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"Credential Management API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js
    index 1a3deda2061bfe..d445337c14c49f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/cryptography.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E F A","164":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","513":"C K L G M N O"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"0 1 2 3 4 5 6 7 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","66":"8 9"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v J D HC zB IC JC","289":"E F A KC LC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","8":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC VC WC XC","289":"E YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","8":"tB I pC qC rC sC BC tC uC"},J:{"8":"D A"},K:{"1":"h","8":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A","164":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Web Cryptography"};
    +module.exports={A:{A:{"2":"EC","8":"J D E F A","164":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","513":"C K L G M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"0 1 2 3 4 5 6 7 8 FC uB I w J D E F A B C K L G M N O x g y z GC HC","66":"9 AB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w J D JC 0B KC LC","289":"E F A MC NC 1B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","8":"0 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC XC YC ZC","289":"E aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","8":"uB I rC sC tC uC DC vC wC"},J:{"8":"D A"},K:{"1":"h","8":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A","164":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Web Cryptography"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js
    index bc5d47b3436581..4a09f28c47987a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-all.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC"},H:{"2":"oC"},I:{"1":"f uC","2":"tB I pC qC rC sC BC tC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS all property"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC"},H:{"2":"qC"},I:{"1":"H wC","2":"uB I rC sC tC uC DC vC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS all property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js
    index 9ed08633269be8..a2c0da33318ece 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-animation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I EC FC","33":"v J D E F A B C K L G"},D:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB","33":"J D E IC JC KC","292":"I v"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC","33":"0 1 2 3 4 5 C G M N O w g x y z"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"E WC XC YC","164":"zB UC BC VC"},H:{"2":"oC"},I:{"1":"f","33":"I sC BC tC uC","164":"tB pC qC rC"},J:{"33":"D A"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"CSS Animation"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I GC HC","33":"w J D E F A B C K L G"},D:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B","33":"J D E KC LC MC","292":"I w"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC","33":"0 1 2 3 4 5 6 C G M N O x g y z"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"E YC ZC aC","164":"0B WC DC XC"},H:{"2":"qC"},I:{"1":"H","33":"I uC DC vC wC","164":"uB rC sC tC"},J:{"33":"D A"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"CSS Animation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js
    index 7aa8f3b7d88dd7..1699a724e59a9f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-any-link.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC","33":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB EC FC"},D:{"1":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v J HC zB IC","33":"D E JC KC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC","33":"E WC XC YC"},H:{"2":"oC"},I:{"1":"f","16":"tB I pC qC rC sC BC","33":"tC uC"},J:{"16":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","16":"I","33":"wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","33":"AD"}},B:5,C:"CSS :any-link selector"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC","33":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB GC HC"},D:{"1":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w J JC 0B KC","33":"D E LC MC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC","33":"E YC ZC aC"},H:{"2":"qC"},I:{"1":"H","16":"uB I rC sC tC uC DC","33":"vC wC"},J:{"16":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","16":"I","33":"yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","33":"CD"}},B:5,C:"CSS :any-link selector"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js
    index cc1f4b0a4e8c5c..75ed7c55b5e520 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-appearance.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","33":"S","164":"P Q R","388":"C K L G M N O"},C:{"1":"Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","164":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","676":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB EC FC"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"S","164":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","164":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"iB jB kB","164":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","164":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","164":"tB I pC qC rC sC BC tC uC"},J:{"164":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A","388":"B"},O:{"164":"vC"},P:{"164":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"164":"1B"},R:{"1":"9C"},S:{"1":"BD","164":"AD"}},B:5,C:"CSS Appearance"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","33":"S","164":"P Q R","388":"C K L G M N O"},C:{"1":"Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","164":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","676":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB GC HC"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"S","164":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","164":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"jB kB lB","164":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","164":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","164":"uB I rC sC tC uC DC vC wC"},J:{"164":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A","388":"B"},O:{"164":"xC"},P:{"164":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"164":"2B"},R:{"1":"BD"},S:{"1":"DD","164":"CD"}},B:5,C:"CSS Appearance"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js
    index 4f05dfae59eed1..1d96272cbae7ac 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-at-counter-style.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z","132":"a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","132":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z","132":"a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB PC QC RC SC qB AC TC rB","132":"oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","132":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","132":"h"},L:{"132":"H"},M:{"132":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C","132":"g sB 6C 7C 8C"},Q:{"2":"1B"},R:{"132":"9C"},S:{"132":"AD BD"}},B:4,C:"CSS Counter Styles"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z","132":"a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC","132":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z","132":"a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","4":"QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB RC SC TC UC rB CC VC sB","132":"pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","132":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","132":"h"},L:{"132":"H"},M:{"132":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C","132":"g tB 8C 9C AD"},Q:{"2":"2B"},R:{"132":"BD"},S:{"132":"CD DD"}},B:4,C:"CSS Counter Styles"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js
    index 9629d8af9b7cc7..18a161fbc2381d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-autofill.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U EC FC"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},K:{"2":"A B C qB AC rB","33":"h"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"OC","33":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B MC"},G:{"1":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},I:{"2":"tB I pC qC rC sC BC","33":"f tC uC"}},B:6,C:":autofill CSS pseudo-class"};
    +module.exports={A:{D:{"33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U GC HC"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},K:{"2":"A B C rB CC sB","33":"h"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"QC","33":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B OC"},G:{"1":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},I:{"2":"uB I rC sC tC uC DC","33":"H vC wC"}},B:6,C:":autofill CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
    index 6a445cff08ee1f..e0fb2110f41349 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backdrop-filter.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M","257":"N O"},C:{"1":"p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB EC FC","578":"iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o"},D:{"1":"nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB"},E:{"2":"I v J D E HC zB IC JC KC","33":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","194":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E zB UC BC VC WC XC YC","33":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 2C 3C 4C 5C sB 6C 7C 8C","2":"I","194":"wC xC yC zC 0C 0B 1C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS Backdrop Filter"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M","257":"N O"},C:{"1":"p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB GC HC","578":"jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o"},D:{"1":"oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","194":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB"},E:{"2":"I w J D E JC 0B KC LC MC","33":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB RC SC TC UC rB CC VC sB","194":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},G:{"2":"E 0B WC DC XC YC ZC aC","33":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 4C 5C 6C 7C tB 8C 9C AD","2":"I","194":"yC zC 0C 1C 2C 1B 3C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS Backdrop Filter"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js
    index 7839e0862fdbb3..9c1a6a42005f65 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-background-offsets.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C EC FC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS background-position edge offsets"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C GC HC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS background-position edge offsets"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
    index ac4e93fb5770c1..91527ca4af73b2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-backgroundblendmode.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB","260":"MB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC","132":"E F A KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x PC QC RC SC qB AC TC rB","260":"9"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","132":"E YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS background-blend-mode"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB","260":"NB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC","132":"E F A MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y RC SC TC UC rB CC VC sB","260":"AB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","132":"E aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS background-blend-mode"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
    index 079ec61ef5b666..2b32e75cc03ec7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxdecorationbreak.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","164":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"2":"I v J D E F A B C K L G M N O w g x","164":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J HC zB IC","164":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F PC QC RC SC","129":"B C qB AC TC rB","164":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"zB UC BC VC WC","164":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"132":"oC"},I:{"2":"tB I pC qC rC sC BC","164":"f tC uC"},J:{"2":"D","164":"A"},K:{"2":"A","129":"B C qB AC rB","164":"h"},L:{"164":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"164":"vC"},P:{"164":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"164":"1B"},R:{"164":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS box-decoration-break"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","164":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"2":"I w J D E F A B C K L G M N O x g y","164":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J JC 0B KC","164":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F RC SC TC UC","129":"B C rB CC VC sB","164":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"0B WC DC XC YC","164":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"132":"qC"},I:{"2":"uB I rC sC tC uC DC","164":"H vC wC"},J:{"2":"D","164":"A"},K:{"2":"A","129":"B C rB CC sB","164":"h"},L:{"164":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"164":"xC"},P:{"164":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"164":"2B"},R:{"164":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS box-decoration-break"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js
    index b556f5061bd073..79a54e03ebb490 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-boxshadow.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","33":"EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"I v J D E F"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"v","164":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"UC BC","164":"zB"},H:{"2":"oC"},I:{"1":"I f sC BC tC uC","164":"tB pC qC rC"},J:{"1":"A","33":"D"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 Box-shadow"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","33":"GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"I w J D E F"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"w","164":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"WC DC","164":"0B"},H:{"2":"qC"},I:{"1":"I H uC DC vC wC","164":"uB rC sC tC"},J:{"1":"A","33":"D"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 Box-shadow"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js
    index 4ebbff40234075..e987c223316811 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-canvas.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"2":"HC zB","33":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB"},G:{"33":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"f","33":"tB I pC qC rC sC BC tC uC"},J:{"33":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","33":"I"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS Canvas Drawings"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"2":"JC 0B","33":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB"},G:{"33":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"H","33":"uB I rC sC tC uC DC vC wC"},J:{"33":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","33":"I"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS Canvas Drawings"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js
    index 616634d898a330..25909f1526d327 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-caret-color.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC"},D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:2,C:"CSS caret-color"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC"},D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:2,C:"CSS caret-color"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js
    index edf16b9fcd9493..c405df1dc8de71 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cascade-layers.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"l m n o p q r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e","322":"i j k"},C:{"1":"j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c EC FC","194":"d e i"},D:{"1":"l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e","322":"i j k"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U PC QC RC SC qB AC TC rB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:4,C:"CSS Cascade Layers"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"l m n o p q r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e","322":"i j k"},C:{"1":"j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c GC HC","194":"d e i"},D:{"1":"l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e","322":"i j k"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U RC SC TC UC rB CC VC sB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:4,C:"CSS Cascade Layers"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js
    index 4035c021f6b11e..fabc1490146b53 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-case-insensitive.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Case-insensitive CSS attribute selectors"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Case-insensitive CSS attribute selectors"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js
    index 8695dafef6c50e..00627f9ad61b14 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-clip-path.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N","260":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","3138":"O"},C:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","132":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC","644":"NB OB PB QB RB SB TB"},D:{"2":"I v J D E F A B C K L G M N O w g x y z","260":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","292":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"2":"I v J HC zB IC JC","260":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","292":"D E F A B C K KC LC 0B qB rB"},F:{"2":"F B C PC QC RC SC qB AC TC rB","260":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","292":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB"},G:{"2":"zB UC BC VC WC","260":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","292":"E XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","260":"f","292":"tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","260":"h"},L:{"260":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"260":"vC"},P:{"292":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"260":"1B"},R:{"260":"9C"},S:{"1":"BD","644":"AD"}},B:4,C:"CSS clip-path property (for HTML)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N","260":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","3138":"O"},C:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","132":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC","644":"OB PB QB RB SB TB UB"},D:{"2":"0 I w J D E F A B C K L G M N O x g y z","260":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","292":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"2":"I w J JC 0B KC LC","260":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","292":"D E F A B C K MC NC 1B rB sB"},F:{"2":"F B C RC SC TC UC rB CC VC sB","260":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","292":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB"},G:{"2":"0B WC DC XC YC","260":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","292":"E ZC aC bC cC dC eC fC gC hC iC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","260":"H","292":"vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","260":"h"},L:{"260":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"260":"xC"},P:{"292":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"260":"2B"},R:{"260":"BD"},S:{"1":"DD","644":"CD"}},B:4,C:"CSS clip-path property (for HTML)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js
    index 5172b859b7568d..1a59933e59c2be 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-adjust.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC"},D:{"16":"I v J D E F A B C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","33":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","16":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"16":"tB I pC qC rC sC BC tC uC","33":"f"},J:{"16":"D A"},K:{"2":"A B C qB AC rB","33":"h"},L:{"16":"H"},M:{"1":"H"},N:{"16":"A B"},O:{"16":"vC"},P:{"16":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"33":"1B"},R:{"16":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS print-color-adjust"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB GC HC"},D:{"16":"I w J D E F A B C K L G M N O","33":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","33":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","16":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"16":"uB I rC sC tC uC DC vC wC","33":"H"},J:{"16":"D A"},K:{"2":"A B C rB CC sB","33":"h"},L:{"16":"H"},M:{"1":"f"},N:{"16":"A B"},O:{"16":"xC"},P:{"16":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"33":"2B"},R:{"16":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS print-color-adjust"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js
    index 3d0cd2cffa0e4f..d8156442a76a2b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-color-function.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t","322":"u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H EC FC","578":"xB yB"},D:{"1":"xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t","322":"u f H"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC","132":"B C K L 0B qB rB 1B MC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d PC QC RC SC qB AC TC rB","322":"e"},G:{"1":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC","132":"cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:4,C:"CSS color() function"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t","322":"u v f"},C:{"1":"zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f GC HC","578":"H yB"},D:{"1":"H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t","322":"u v f"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC","132":"B C K L 1B rB sB 2B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d RC SC TC UC rB CC VC sB","322":"e"},G:{"1":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC","132":"eC fC gC hC iC jC kC lC mC nC oC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:4,C:"CSS color() function"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js
    index af67ecac32cf8b..c78a45839b7374 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-conic-gradients.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB EC FC","578":"mB nB oB pB P Q R wB"},D:{"1":"hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","194":"uB ZB vB aB bB cB dB eB fB gB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB PC QC RC SC qB AC TC rB","194":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"CSS Conical Gradients"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB GC HC","578":"nB oB pB qB P Q R xB"},D:{"1":"iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","194":"vB aB wB bB cB dB eB fB gB hB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC TC UC rB CC VC sB","194":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"CSS Conical Gradients"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries-style.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries-style.js
    index 7379eb0c1c956f..19e971aa074749 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries-style.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries-style.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s","194":"t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s","194":"t u f H","260":"xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b PC QC RC SC qB AC TC rB","194":"c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","194":"h"},L:{"194":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Container Style Queries"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s","194":"t u v f","260":"H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s","194":"t u v f","260":"H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b RC SC TC UC rB CC VC sB","194":"c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","260":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","194":"h"},L:{"260":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Container Style Queries"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js
    index ec96a605287c33..15a4b9e5d62cd5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-queries.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q","516":"r"},C:{"1":"H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f EC FC"},D:{"1":"s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a","194":"c d e i j k l m n o p q","450":"b","516":"r"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB PC QC RC SC qB AC TC rB","194":"P Q R wB S T U V W X Y Z","516":"a b c"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Container Queries (Size)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q","516":"r"},C:{"1":"f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v GC HC"},D:{"1":"s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a","194":"c d e i j k l m n o p q","450":"b","516":"r"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB RC SC TC UC rB CC VC sB","194":"P Q R xB S T U V W X Y Z","516":"a b c"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Container Queries (Size)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-query-units.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-query-units.js
    index c2923ccf204cd0..22496821b863db 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-query-units.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-container-query-units.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q"},C:{"1":"H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f EC FC"},D:{"1":"r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b","194":"n o p q","450":"c d e i j k l m"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB PC QC RC SC qB AC TC rB","194":"P Q R wB S T U V W X Y Z"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Container Query Units"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q"},C:{"1":"f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v GC HC"},D:{"1":"r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b","194":"n o p q","450":"c d e i j k l m"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB RC SC TC UC rB CC VC sB","194":"P Q R xB S T U V W X Y Z"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Container Query Units"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js
    index 88d23b12f0c8a1..40274c717d02bb 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-containment.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB EC FC","194":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB"},D:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","66":"RB"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB PC QC RC SC qB AC TC rB","66":"EB FB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","194":"AD"}},B:2,C:"CSS Containment"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB GC HC","194":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB"},D:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","66":"SB"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB RC SC TC UC rB CC VC sB","66":"FB GB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","194":"CD"}},B:2,C:"CSS Containment"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js
    index 9a75ba7c963d05..364943cd3c8354 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-content-visibility.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q R S T"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS content-visibility"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S T"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u GC HC","194":"v f H yB zB"},D:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS content-visibility"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js
    index ef32136632143c..154111623a9e2a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-counters.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","2":"J D CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS Counters"};
    +module.exports={A:{A:{"1":"E F A B","2":"J D EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS Counters"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js
    index 66fdc84c7243ee..b93e55b2440c29 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-crisp-edges.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J CC","2340":"D E F A B"},B:{"2":"C K L G M N O","1025":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC","513":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b","545":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB","1025":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","164":"J","4644":"D E F JC KC LC"},F:{"2":"0 1 2 3 F B G M N O w g x y z PC QC RC SC qB AC","545":"C TC rB","1025":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","4260":"VC WC","4644":"E XC YC ZC aC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","1025":"f"},J:{"2":"D","4260":"A"},K:{"2":"A B qB AC","545":"C rB","1025":"h"},L:{"1025":"H"},M:{"1":"H"},N:{"2340":"A B"},O:{"1025":"vC"},P:{"1025":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1025":"1B"},R:{"1025":"9C"},S:{"1":"BD","4097":"AD"}},B:4,C:"Crisp edges/pixelated images"};
    +module.exports={A:{A:{"2":"J EC","2340":"D E F A B"},B:{"2":"C K L G M N O","1025":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC","513":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b","545":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB","1025":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","164":"J","4644":"D E F LC MC NC"},F:{"2":"0 1 2 3 4 F B G M N O x g y z RC SC TC UC rB CC","545":"C VC sB","1025":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","4260":"XC YC","4644":"E ZC aC bC cC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","1025":"H"},J:{"2":"D","4260":"A"},K:{"2":"A B rB CC","545":"C sB","1025":"h"},L:{"1025":"H"},M:{"1":"f"},N:{"2340":"A B"},O:{"1025":"xC"},P:{"1025":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1025":"2B"},R:{"1025":"BD"},S:{"1":"DD","4097":"CD"}},B:4,C:"Crisp edges/pixelated images"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js
    index 58ec413a666c89..951e9e3a3f87f9 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-cross-fade.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"I v J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB","33":"J D E F IC JC KC LC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","33":"E VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","33":"f tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","33":"h"},L:{"33":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"33":"vC"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"33":"1B"},R:{"33":"9C"},S:{"2":"AD BD"}},B:4,C:"CSS Cross-Fade Function"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"I w J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B","33":"J D E F KC LC MC NC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","33":"E XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","33":"H vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","33":"h"},L:{"33":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"33":"xC"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"33":"2B"},R:{"33":"BD"},S:{"2":"CD DD"}},B:4,C:"CSS Cross-Fade Function"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js
    index 9b129d7a916834..6668213a6a1854 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-default-pseudo.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC tB EC FC"},D:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB","132":"J D E F A IC JC KC LC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F B PC QC RC SC qB AC","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB","260":"C TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC WC","132":"E XC YC ZC aC bC"},H:{"260":"oC"},I:{"1":"f","16":"tB pC qC rC","132":"I sC BC tC uC"},J:{"16":"D","132":"A"},K:{"1":"h","16":"A B C qB AC","260":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","132":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:":default CSS pseudo-class"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC uB GC HC"},D:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B","132":"J D E F A KC LC MC NC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F B RC SC TC UC rB CC","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB","260":"C VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC YC","132":"E ZC aC bC cC dC"},H:{"260":"qC"},I:{"1":"H","16":"uB rC sC tC","132":"I uC DC vC wC"},J:{"16":"D","132":"A"},K:{"1":"h","16":"A B C rB CC","260":"sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","132":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:":default CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
    index 8e12ff6664cc8f..b7af3e1aec79cd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-descendant-gtgt.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"B","2":"I v J D E F A C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Explicit descendant combinator >>"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"B","2":"I w J D E F A C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Explicit descendant combinator >>"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
    index bb16d1edb9d1df..679b0f7a4be798 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-deviceadaptation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","164":"A B"},B:{"66":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","164":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 I v J D E F A B C K L G M N O w g x y z","66":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB PC QC RC SC qB AC TC rB","66":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"292":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A h","292":"B C qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"164":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"66":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Device Adaptation"};
    +module.exports={A:{A:{"2":"J D E F EC","164":"A B"},B:{"66":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","164":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 I w J D E F A B C K L G M N O x g y z","66":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB RC SC TC UC rB CC VC sB","66":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"292":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A h","292":"B C rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"164":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"66":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Device Adaptation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
    index f60c8f35e1daee..5ff1778f30a2b1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-dir-pseudo.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q","194":"r s t u f H"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M EC FC","33":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z","194":"a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z PC QC RC SC qB AC TC rB","194":"a b c d e"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"BD","33":"AD"}},B:5,C:":dir() CSS pseudo-class"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q","194":"r s t u v f H"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M GC HC","33":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z","194":"a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z RC SC TC UC rB CC VC sB","194":"a b c d e"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"DD","33":"CD"}},B:5,C:":dir() CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js
    index 812d2a4c829aa0..16eacdb40ca58f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-display-contents.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X","260":"Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB EC FC","132":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB","260":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","132":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X","194":"YB uB ZB vB aB bB cB","260":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B HC zB IC JC KC LC 0B","132":"C K L G qB rB 1B MC NC 2B 3B 4B 5B","516":"6B 7B 8B 9B OC","772":"sB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB PC QC RC SC qB AC TC rB","132":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB","260":"nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC","132":"eC fC gC hC iC jC","260":"kC lC mC nC 2B 3B 4B 5B","772":"sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","260":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","260":"h"},L:{"260":"H"},M:{"260":"H"},N:{"2":"A B"},O:{"132":"vC"},P:{"2":"I wC xC yC zC","132":"0C 0B 1C 2C 3C 4C","260":"g 5C sB 6C 7C 8C"},Q:{"132":"1B"},R:{"260":"9C"},S:{"132":"AD","260":"BD"}},B:4,C:"CSS display: contents"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X","260":"Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB GC HC","132":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB","260":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","132":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X","194":"ZB vB aB wB bB cB dB","260":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B JC 0B KC LC MC NC 1B","132":"C K L G rB sB 2B OC PC 3B 4B 5B 6B","516":"7B 8B 9B AC BC QC","772":"tB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC TC UC rB CC VC sB","132":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB","260":"oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC","132":"gC hC iC jC kC lC","260":"mC nC oC pC 3B 4B 5B 6B","772":"tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","260":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","260":"h"},L:{"260":"H"},M:{"260":"f"},N:{"2":"A B"},O:{"132":"xC"},P:{"2":"I yC zC 0C 1C","132":"2C 1B 3C 4C 5C 6C","260":"g 7C tB 8C 9C AD"},Q:{"132":"2B"},R:{"260":"BD"},S:{"132":"CD","260":"DD"}},B:4,C:"CSS display: contents"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js
    index 50cb338bcbafd7..4a9c8b88f821a6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-element-function.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","164":"DC tB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"33":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"33":"AD BD"}},B:5,C:"CSS element() function"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","164":"FC uB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"33":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"33":"CD DD"}},B:5,C:"CSS element() function"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js
    index e921cb835a31fd..775d46efbbaf59 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-env-function.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB EC FC"},D:{"1":"hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","132":"B"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC","132":"dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:7,C:"CSS Environment Variables env()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB GC HC"},D:{"1":"iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","132":"B"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC","132":"fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:7,C:"CSS Environment Variables env()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js
    index 591ccaa35402d8..8776a6c663b428 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-exclusions.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","33":"A B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"33":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Exclusions Level 1"};
    +module.exports={A:{A:{"2":"J D E F EC","33":"A B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"33":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Exclusions Level 1"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js
    index b1b96932497c0a..7cbd16384f982a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-featurequeries.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x EC FC"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B C PC QC RC SC qB AC TC"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS Feature Queries"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y GC HC"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 I w J D E F A B C K L G M N O x g y z"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B C RC SC TC UC rB CC VC"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS Feature Queries"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js
    index ca1d2639fbd8cf..cef773a8122d1a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-file-selector-button.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X"},L:{"1":"H"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H","33":"C K L G M N O P Q R S T U V W X"},C:{"1":"wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R EC FC"},M:{"1":"H"},A:{"2":"J D E F CC","33":"A B"},F:{"1":"mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"1":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"OC","33":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B"},G:{"1":"mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC"},P:{"1":"g 5C sB 6C 7C 8C","33":"I wC xC yC zC 0C 0B 1C 2C 3C 4C"},I:{"1":"f","2":"tB I pC qC rC sC BC","33":"tC uC"}},B:6,C:"::file-selector-button CSS pseudo-element"};
    +module.exports={A:{D:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X"},L:{"1":"H"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H","33":"C K L G M N O P Q R S T U V W X"},C:{"1":"xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R GC HC"},M:{"1":"f"},A:{"2":"J D E F EC","33":"A B"},F:{"1":"nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"1":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"QC","33":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B"},G:{"1":"oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC"},P:{"1":"g 7C tB 8C 9C AD","33":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C"},I:{"1":"H","2":"uB I rC sC tC uC DC","33":"vC wC"}},B:6,C:"::file-selector-button CSS pseudo-element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js
    index b80d30b3a8dc50..8006744792095e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filter-function.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC","33":"F"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC","33":"ZC aC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS filter() function"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC","33":"F"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC","33":"bC cC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS filter() function"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js
    index c53ff1e1e60807..0e49588a3abc6a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-filters.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","1028":"K L G M N O","1346":"C"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC","196":"AB","516":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z FC"},D:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N","33":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","33":"J D E F JC KC"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"E WC XC YC ZC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","33":"tC uC"},J:{"2":"D","33":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","33":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"CSS Filter Effects"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","1028":"K L G M N O","1346":"C"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC","196":"BB","516":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB HC"},D:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N","33":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","33":"J D E F LC MC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"E YC ZC aC bC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","33":"vC wC"},J:{"2":"D","33":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","33":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"CSS Filter Effects"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js
    index 4a7c4432476f26..de17ceafad76a7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-letter.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","16":"CC","516":"E","1540":"J D"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","132":"tB","260":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"v J D E","132":"I"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"v HC","132":"I zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","16":"F PC","260":"B QC RC SC qB AC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"1":"oC"},I:{"1":"tB I f sC BC tC uC","16":"pC qC","132":"rC"},J:{"1":"D A"},K:{"1":"C h rB","260":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"::first-letter CSS pseudo-element selector"};
    +module.exports={A:{A:{"1":"F A B","16":"EC","516":"E","1540":"J D"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","132":"uB","260":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"w J D E","132":"I"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"w JC","132":"I 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","16":"F RC","260":"B SC TC UC rB CC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"1":"qC"},I:{"1":"uB I H uC DC vC wC","16":"rC sC","132":"tC"},J:{"1":"D A"},K:{"1":"C h sB","260":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"::first-letter CSS pseudo-element selector"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js
    index cb3e3ab7fc5239..a8313f1302caec 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-first-line.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","132":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS first-line pseudo-element"};
    +module.exports={A:{A:{"1":"F A B","132":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS first-line pseudo-element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js
    index 5a3a0122e01e92..ae82335c6446f2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-fixed.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"D E F A B","2":"CC","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","1025":"LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","132":"VC WC XC"},H:{"2":"oC"},I:{"1":"tB f tC uC","260":"pC qC rC","513":"I sC BC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS position:fixed"};
    +module.exports={A:{A:{"1":"D E F A B","2":"EC","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","1025":"NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","132":"XC YC ZC"},H:{"2":"qC"},I:{"1":"uB H vC wC","260":"rC sC tC","513":"I uC DC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS position:fixed"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js
    index 1cda48f2d08142..90bcaf1ed2db08 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-visible.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","328":"P Q R S T U"},C:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","161":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T"},D:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB","328":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B MC","578":"G NC 2B"},F:{"1":"kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB PC QC RC SC qB AC TC rB","328":"eB fB gB hB iB jB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC","578":"nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"161":"AD BD"}},B:5,C:":focus-visible CSS pseudo-class"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","328":"P Q R S T U"},C:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","161":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T"},D:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB","328":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B OC","578":"G PC 3B"},F:{"1":"lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB RC SC TC UC rB CC VC sB","328":"fB gB hB iB jB kB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC","578":"pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"161":"CD DD"}},B:5,C:":focus-visible CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js
    index ae144128773003..cf5646e14cc0f6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-focus-within.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC"},D:{"1":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","194":"uB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB PC QC RC SC qB AC TC rB","194":"MB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:7,C:":focus-within CSS pseudo-class"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB GC HC"},D:{"1":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","194":"vB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB RC SC TC UC rB CC VC sB","194":"NB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:7,C:":focus-within CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-palette.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-palette.js
    index 223be22be97b96..00d47bab027ce8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-palette.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-palette.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q"},C:{"1":"t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s EC FC"},D:{"1":"n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V PC QC RC SC qB AC TC rB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS font-palette"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q"},C:{"1":"t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s GC HC"},D:{"1":"n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V RC SC TC UC rB CC VC sB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS font-palette"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
    index 0df5397bdea43a..f1a44a4d6e059e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-rendering-controls.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB EC FC","194":"MB NB OB PB QB RB SB TB UB VB WB XB"},D:{"1":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","66":"PB QB RB SB TB UB VB WB XB YB uB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB","66":"CB DB EB FB GB HB IB JB KB LB MB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","66":"wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","194":"AD"}},B:5,C:"CSS font-display"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB GC HC","194":"NB OB PB QB RB SB TB UB VB WB XB YB"},D:{"1":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","66":"QB RB SB TB UB VB WB XB YB ZB vB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB","66":"DB EB FB GB HB IB JB KB LB MB NB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","66":"yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","194":"CD"}},B:5,C:"CSS font-display"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js
    index 305fd0af593de3..03a659376be67b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-font-stretch.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E EC FC"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS font-stretch"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E GC HC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS font-stretch"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js
    index 9e062ad5e7fc85..57f603e340df63 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gencontent.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D CC","132":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS Generated content for pseudo-elements"};
    +module.exports={A:{A:{"1":"F A B","2":"J D EC","132":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS Generated content for pseudo-elements"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js
    index 21bbca9aac1611..528529a39827a0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-gradients.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC","260":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB","292":"I v J D E F A B C K L G FC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 A B C K L G M N O w g x y z","548":"I v J D E F"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB","260":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B","292":"J IC","804":"I v"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC","33":"C TC","164":"qB AC"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","260":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B","292":"VC WC","804":"zB UC BC"},H:{"2":"oC"},I:{"1":"f tC uC","33":"I sC BC","548":"tB pC qC rC"},J:{"1":"A","548":"D"},K:{"1":"h rB","2":"A B","33":"C","164":"qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS Gradients"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC","260":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB","292":"I w J D E F A B C K L G HC"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 A B C K L G M N O x g y z","548":"I w J D E F"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B","260":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B","292":"J KC","804":"I w"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC","33":"C VC","164":"rB CC"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","260":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B","292":"XC YC","804":"0B WC DC"},H:{"2":"qC"},I:{"1":"H vC wC","33":"I uC DC","548":"uB rC sC tC"},J:{"1":"A","548":"D"},K:{"1":"h sB","2":"A B","33":"C","164":"rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS Gradients"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid-animation.js
    index 5f108b8eea1aa3..8d5739bdac4196 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid-animation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid-animation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"CSS Grid animation"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"CSS Grid animation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js
    index 34c2929c024e46..45e448071f610e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-grid.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","8":"F","292":"A B"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","292":"C K L G"},C:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O EC FC","8":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB","584":"GB HB IB JB KB LB MB NB OB PB QB RB","1025":"SB TB"},D:{"1":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 I v J D E F A B C K L G M N O w g x y z","8":"1 2 3 4","200":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","1025":"XB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","8":"J D E F A JC KC LC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","200":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","8":"E WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC","8":"BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"292":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"wC","8":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS Grid Layout (level 1)"};
    +module.exports={A:{A:{"2":"J D E EC","8":"F","292":"A B"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","292":"C K L G"},C:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O GC HC","8":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB","584":"HB IB JB KB LB MB NB OB PB QB RB SB","1025":"TB UB"},D:{"1":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 I w J D E F A B C K L G M N O x g y z","8":"2 3 4 5","200":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","1025":"YB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","8":"J D E F A LC MC NC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O x g y z RC SC TC UC rB CC VC sB","200":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","8":"E YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC","8":"DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"292":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"yC","8":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS Grid Layout (level 1)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
    index 4ca0d26362f4cb..3fa19ccf6d81e5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hanging-punctuation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:4,C:"CSS hanging-punctuation"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:4,C:"CSS hanging-punctuation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js
    index 1394cdaa61b864..aefb8c722a5d34 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-has.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o EC FC","322":"p q r s t u f H xB yB"},D:{"1":"r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m","194":"n o p q"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z PC QC RC SC qB AC TC rB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:":has() CSS relational pseudo-class"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o GC HC","322":"p q r s t u v f H yB zB"},D:{"1":"r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m","194":"n o p q"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z RC SC TC UC rB CC VC sB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:":has() CSS relational pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js
    index 8b8f1e4097402b..e2d338b19124b1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-hyphens.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","33":"A B"},B:{"1":"r s t u f H","33":"C K L G M N O","132":"P Q R S T U V W","260":"X Y Z a b c d e i j k l m n o p q"},C:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB"},D:{"1":"X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","132":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W"},E:{"2":"I v HC zB","33":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB PC QC RC SC qB AC TC rB","132":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z"},G:{"2":"zB UC","33":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"4":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","132":"wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS Hyphenation"};
    +module.exports={A:{A:{"2":"J D E F EC","33":"A B"},B:{"1":"r s t u v f H","33":"C K L G M N O","132":"P Q R S T U V W","260":"X Y Z a b c d e i j k l m n o p q"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB"},D:{"1":"X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","132":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W"},E:{"2":"I w JC 0B","33":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB RC SC TC UC rB CC VC sB","132":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z"},G:{"2":"0B WC","33":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"4":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","132":"yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS Hyphenation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js
    index 590a0d6eecb427..e338421d819bcd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-orientation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q","257":"R S T U V W X"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q","257":"R S T U V W X"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB"},F:{"1":"oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB PC QC RC SC qB AC TC rB","257":"gB hB iB jB kB h lB mB nB"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C","257":"3C 4C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 image-orientation"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q","257":"R S T U V W X"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q","257":"R S T U V W X"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB"},F:{"1":"pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB RC SC TC UC rB CC VC sB","257":"hB iB jB kB lB h mB nB oB"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C","257":"5C 6C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 image-orientation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js
    index 5c53baad30f264..63bc3ba7b9de29 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-image-set.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","164":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U EC FC","66":"V W","2305":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2820":"X"},D:{"1":"GC","2":"I v J D E F A B C K L G M N O w g","164":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},E:{"1":"OC","2":"I v HC zB IC","132":"A B C K 0B qB rB 1B","164":"J D E F JC KC LC","1540":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B"},F:{"2":"F B C PC QC RC SC qB AC TC rB","164":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"zB UC BC VC","132":"bC cC dC eC fC gC hC iC jC kC","164":"E WC XC YC ZC aC","1540":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","164":"f tC uC"},J:{"2":"D","164":"A"},K:{"2":"A B C qB AC rB","164":"h"},L:{"164":"H"},M:{"2305":"H"},N:{"2":"A B"},O:{"164":"vC"},P:{"164":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"164":"1B"},R:{"164":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS image-set"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","164":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U GC HC","66":"V W","2305":"Y Z a b c d e i j k l m n o p q r s t u v f H yB","2820":"X"},D:{"2":"I w J D E F A B C K L G M N O x g","164":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB","2049":"zB IC"},E:{"1":"QC","2":"I w JC 0B KC","132":"A B C K 1B rB sB 2B","164":"J D E F LC MC NC","1540":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","164":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"0B WC DC XC","132":"dC eC fC gC hC iC jC kC lC mC","164":"E YC ZC aC bC cC","1540":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","164":"H vC wC"},J:{"2":"D","164":"A"},K:{"2":"A B C rB CC sB","164":"h"},L:{"164":"H"},M:{"2305":"f"},N:{"2":"A B"},O:{"164":"xC"},P:{"164":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"164":"2B"},R:{"164":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS image-set"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
    index 01f92b2b46a874..8a8a59385bc9ca 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-in-out-of-range.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C","260":"K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","516":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},D:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I","16":"v J D E F A B C K L","260":"SB","772":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v","772":"J D E F A IC JC KC LC"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F PC","260":"B C FB QC RC SC qB AC TC rB","772":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","772":"E VC WC XC YC ZC aC bC"},H:{"132":"oC"},I:{"1":"f","2":"tB pC qC rC","260":"I sC BC tC uC"},J:{"2":"D","260":"A"},K:{"1":"h","260":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","260":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","516":"AD"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C","260":"K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC","516":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},D:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I","16":"w J D E F A B C K L","260":"TB","772":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w","772":"J D E F A KC LC MC NC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F RC","260":"B C GB SC TC UC rB CC VC sB","772":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","772":"E XC YC ZC aC bC cC dC"},H:{"132":"qC"},I:{"1":"H","2":"uB rC sC tC","260":"I uC DC vC wC"},J:{"2":"D","260":"A"},K:{"1":"h","260":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","260":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","516":"CD"}},B:5,C:":in-range and :out-of-range CSS pseudo-classes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
    index 54699aa7c57ac6..645b51eb0a6ae2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-indeterminate-pseudo.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","132":"A B","388":"F"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC tB EC FC","132":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","388":"I v"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v J HC zB","132":"D E F A JC KC LC","388":"IC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F B PC QC RC SC qB AC","132":"0 1 G M N O w g x y z","516":"C TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC WC","132":"E XC YC ZC aC bC"},H:{"516":"oC"},I:{"1":"f","16":"tB pC qC rC uC","132":"tC","388":"I sC BC"},J:{"16":"D","132":"A"},K:{"1":"h","16":"A B C qB AC","516":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","132":"AD"}},B:5,C:":indeterminate CSS pseudo-class"};
    +module.exports={A:{A:{"2":"J D E EC","132":"A B","388":"F"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC uB GC HC","132":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","388":"I w"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w J JC 0B","132":"D E F A LC MC NC","388":"KC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F B RC SC TC UC rB CC","132":"0 1 2 G M N O x g y z","516":"C VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC YC","132":"E ZC aC bC cC dC"},H:{"516":"qC"},I:{"1":"H","16":"uB rC sC tC wC","132":"vC","388":"I uC DC"},J:{"16":"D","132":"A"},K:{"1":"h","16":"A B C rB CC","516":"sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","132":"CD"}},B:5,C:":indeterminate CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js
    index 4375eb540192f5..c7e680f1438b1f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-letter.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f","260":"H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f","260":"H xB yB GC"},E:{"2":"I v J D E HC zB IC JC KC","4":"F","164":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC","164":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"260":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Initial Letter"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v","260":"f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v","260":"f H yB zB IC"},E:{"2":"I w J D E JC 0B KC LC MC","4":"F","164":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC","164":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"260":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Initial Letter"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js
    index d39d472d6715ef..6c689855578b08 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-initial-value.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","33":"I v J D E F A B C K L G M N O EC FC","164":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS initial value"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","33":"I w J D E F A B C K L G M N O GC HC","164":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS initial value"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js
    index 2e342cd8ac0fae..0901d2770a9711 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-lch-lab.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f","322":"H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H EC FC","194":"xB yB"},D:{"1":"xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f","322":"H"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B MC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:4,C:"LCH and Lab color values"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v","322":"f"},C:{"1":"zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f GC HC","194":"H yB"},D:{"1":"H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v","322":"f"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:4,C:"LCH and Lab color values"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js
    index c308f6218d62ef..00b9236b32dabe 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-letter-spacing.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","16":"CC","132":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"0 1 2 3 4 5 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC","132":"I v J zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F PC","132":"B C G M QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"2":"oC"},I:{"1":"f tC uC","16":"pC qC","132":"tB I rC sC BC"},J:{"132":"D A"},K:{"1":"h","132":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"letter-spacing CSS property"};
    +module.exports={A:{A:{"1":"F A B","16":"EC","132":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"0 1 2 3 4 5 6 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC","132":"I w J 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F RC","132":"B C G M SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"2":"qC"},I:{"1":"H vC wC","16":"rC sC","132":"uB I tC uC DC"},J:{"132":"D A"},K:{"1":"h","132":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"letter-spacing CSS property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js
    index 4a7a9d0b07e515..6b3ac647413fb1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-line-clamp.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB EC FC","33":"gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"16":"I v J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I HC zB","33":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"zB UC BC","33":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"16":"pC qC","33":"tB I f rC sC BC tC uC"},J:{"33":"D A"},K:{"2":"A B C qB AC rB","33":"h"},L:{"33":"H"},M:{"33":"H"},N:{"2":"A B"},O:{"33":"vC"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"33":"1B"},R:{"33":"9C"},S:{"2":"AD","33":"BD"}},B:5,C:"CSS line-clamp"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB GC HC","33":"hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"16":"I w J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I JC 0B","33":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"0B WC DC","33":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"16":"rC sC","33":"uB I H tC uC DC vC wC"},J:{"33":"D A"},K:{"2":"A B C rB CC sB","33":"h"},L:{"33":"H"},M:{"33":"f"},N:{"2":"A B"},O:{"33":"xC"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"33":"2B"},R:{"33":"BD"},S:{"2":"CD","33":"DD"}},B:5,C:"CSS line-clamp"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js
    index 373879fb3fec14..0ede825ae68cdd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-logical-props.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","1028":"W X","1540":"P Q R S T U V"},C:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC","164":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB EC FC","1540":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","292":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB","1028":"W X","1540":"hB iB jB kB h lB mB nB oB pB P Q R S T U V"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","292":"I v J D E F A B C HC zB IC JC KC LC 0B qB","1540":"K L rB 1B","5124":"MC"},F:{"1":"nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","292":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","1028":"lB mB","1540":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h"},G:{"1":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B","292":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC","1540":"gC hC iC jC kC lC","5124":"mC"},H:{"2":"oC"},I:{"1":"f","292":"tB I pC qC rC sC BC tC uC"},J:{"292":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"292":"vC"},P:{"1":"g 5C sB 6C 7C 8C","292":"I wC xC yC zC 0C","1540":"0B 1C 2C 3C 4C"},Q:{"1540":"1B"},R:{"1":"9C"},S:{"1":"BD","1540":"AD"}},B:5,C:"CSS Logical Properties"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","1028":"W X","1540":"P Q R S T U V"},C:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC","164":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB GC HC","1540":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","292":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB","1028":"W X","1540":"iB jB kB lB h mB nB oB pB qB P Q R S T U V"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","292":"I w J D E F A B C JC 0B KC LC MC NC 1B rB","1540":"K L sB 2B","5124":"OC"},F:{"1":"oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","292":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","1028":"mB nB","1540":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h"},G:{"1":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","292":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC","1540":"iC jC kC lC mC nC","5124":"oC"},H:{"2":"qC"},I:{"1":"H","292":"uB I rC sC tC uC DC vC wC"},J:{"292":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"292":"xC"},P:{"1":"g 7C tB 8C 9C AD","292":"I yC zC 0C 1C 2C","1540":"1B 3C 4C 5C 6C"},Q:{"1540":"2B"},R:{"1":"BD"},S:{"1":"DD","1540":"CD"}},B:5,C:"CSS Logical Properties"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
    index 516c0a4507b5ad..c0ba0fa10b725c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-marker-pseudo.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q R S T U"},C:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB EC FC"},D:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U"},E:{"1":"OC","2":"I v J D E F A B HC zB IC JC KC LC 0B","129":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B"},F:{"1":"kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"CSS ::marker pseudo-element"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S T U"},C:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB GC HC"},D:{"1":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U"},E:{"1":"QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B","129":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},F:{"1":"lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"CSS ::marker pseudo-element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js
    index 6da492f5cf48cd..e453c7737a07c4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-masks.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M","164":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","3138":"N","12292":"O"},C:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","260":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC"},D:{"164":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB","164":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"2":"F B C PC QC RC SC qB AC TC rB","164":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","164":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"164":"f tC uC","676":"tB I pC qC rC sC BC"},J:{"164":"D A"},K:{"2":"A B C qB AC rB","164":"h"},L:{"164":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"164":"vC"},P:{"164":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"164":"1B"},R:{"164":"9C"},S:{"1":"BD","260":"AD"}},B:4,C:"CSS Masks"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M","164":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","3138":"N","12292":"O"},C:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","260":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC"},D:{"164":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B","164":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"2":"F B C RC SC TC UC rB CC VC sB","164":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","164":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"164":"H vC wC","676":"uB I rC sC tC uC DC"},J:{"164":"D A"},K:{"2":"A B C rB CC sB","164":"h"},L:{"164":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"164":"xC"},P:{"164":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"164":"2B"},R:{"164":"BD"},S:{"1":"DD","260":"CD"}},B:4,C:"CSS Masks"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
    index 0fcc428df8d228..8cd10526489fc2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-matches-pseudo.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","1220":"P Q R S T U V W"},C:{"1":"pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC tB EC FC","548":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB"},D:{"1":"X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","164":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB","196":"dB eB fB","1220":"gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v","164":"J D E IC JC KC","260":"F A B C K LC 0B qB rB 1B"},F:{"1":"mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","164":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","196":"SB TB UB","1220":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC WC","164":"E XC YC","260":"ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"oC"},I:{"1":"f","16":"tB pC qC rC","164":"I sC BC tC uC"},J:{"16":"D","164":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"164":"vC"},P:{"1":"g 5C sB 6C 7C 8C","164":"I wC xC yC zC 0C 0B 1C 2C 3C 4C"},Q:{"1220":"1B"},R:{"1":"9C"},S:{"1":"BD","548":"AD"}},B:5,C:":is() CSS pseudo-class"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","1220":"P Q R S T U V W"},C:{"1":"qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC uB GC HC","548":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB"},D:{"1":"X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","164":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB","196":"eB fB gB","1220":"hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w","164":"J D E KC LC MC","260":"F A B C K NC 1B rB sB 2B"},F:{"1":"nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","164":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","196":"TB UB VB","1220":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC YC","164":"E ZC aC","260":"bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"qC"},I:{"1":"H","16":"uB rC sC tC","164":"I uC DC vC wC"},J:{"16":"D","164":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"164":"xC"},P:{"1":"g 7C tB 8C 9C AD","164":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C"},Q:{"1220":"2B"},R:{"1":"BD"},S:{"1":"DD","548":"CD"}},B:5,C:":is() CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js
    index b54608d0882678..16908d391ed359 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-math-functions.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB EC FC"},D:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B","132":"C K qB rB"},F:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB PC QC RC SC qB AC TC rB"},G:{"1":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC","132":"eC fC gC hC iC jC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"CSS math functions min(), max() and clamp()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB GC HC"},D:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B","132":"C K rB sB"},F:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB RC SC TC UC rB CC VC sB"},G:{"1":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC","132":"gC hC iC jC kC lC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"CSS math functions min(), max() and clamp()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js
    index 29f99fea490f88..68f0babea113ba 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-interaction.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB EC FC"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"Media Queries: interaction media features"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB GC HC"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"Media Queries: interaction media features"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-range-syntax.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-range-syntax.js
    index ad89e16e5d20f0..6e9660545cca8f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-range-syntax.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-range-syntax.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"q r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p"},C:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB EC FC"},D:{"1":"q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z PC QC RC SC qB AC TC rB"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"Media Queries: Range Syntax"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"q r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p"},C:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB GC HC"},D:{"1":"q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"1":"a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z RC SC TC UC rB CC VC sB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"Media Queries: Range Syntax"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js
    index 831da04704feb0..92ee9b0ffa8d16 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-resolution.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","132":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","1028":"C K L G M N O"},C:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","260":"I v J D E F A B C K L G EC FC","1028":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB"},D:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","548":"0 1 2 3 4 I v J D E F A B C K L G M N O w g x y z","1028":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB"},E:{"1":"sB 6B 7B 8B 9B OC","2":"HC zB","548":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F","548":"B C PC QC RC SC qB AC TC","1028":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"1":"sB 6B 7B 8B 9B","16":"zB","548":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"132":"oC"},I:{"1":"f","16":"pC qC","548":"tB I rC sC BC","1028":"tC uC"},J:{"548":"D A"},K:{"1":"h rB","548":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","1028":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Media Queries: resolution feature"};
    +module.exports={A:{A:{"2":"J D E EC","132":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","1028":"C K L G M N O"},C:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","260":"I w J D E F A B C K L G GC HC","1028":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB"},D:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","548":"0 1 2 3 4 5 I w J D E F A B C K L G M N O x g y z","1028":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"JC 0B","548":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F","548":"B C RC SC TC UC rB CC VC","1028":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},G:{"1":"tB 7B 8B 9B AC BC","16":"0B","548":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"132":"qC"},I:{"1":"H","16":"rC sC","548":"uB I tC uC DC","1028":"vC wC"},J:{"548":"D A"},K:{"1":"h sB","548":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","1028":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Media Queries: resolution feature"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js
    index e5dfcbcc25cc5a..98359fa1a95a94 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-media-scripting.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"Media Queries: scripting media feature"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"Media Queries: scripting media feature"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js
    index 6efc7d045e8b02..011abd18918933 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mediaqueries.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"8":"J D E CC","129":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","129":"0 1 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","129":"I v J IC","388":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","129":"zB UC BC VC WC"},H:{"1":"oC"},I:{"1":"f tC uC","129":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"129":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS3 Media Queries"};
    +module.exports={A:{A:{"8":"J D E EC","129":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","129":"0 1 2 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","129":"I w J KC","388":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","129":"0B WC DC XC YC"},H:{"1":"qC"},I:{"1":"H vC wC","129":"uB I rC sC tC uC DC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"129":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS3 Media Queries"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js
    index e7d2a7c05d8c22..66b424be90b5ed 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-mixblendmode.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 I v J D E F A B C K L G M N O w g x y z","194":"5 6 7 8 9 AB BB CB DB EB FB GB"},E:{"2":"I v J D HC zB IC JC","260":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"2":"zB UC BC VC WC XC","260":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Blending of HTML/SVG elements"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 I w J D E F A B C K L G M N O x g y z","194":"6 7 8 9 AB BB CB DB EB FB GB HB"},E:{"2":"I w J D JC 0B KC LC","260":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"2":"0B WC DC XC YC ZC","260":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Blending of HTML/SVG elements"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js
    index b982664ada7ec2..9bd8f8390a5f70 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-motion-paths.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB EC FC"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB","194":"JB KB LB"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","194":"6 7 8"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"CSS Motion Path"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB GC HC"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB","194":"KB LB MB"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 F B C G M N O x g y z RC SC TC UC rB CC VC sB","194":"7 8 9"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"CSS Motion Path"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js
    index 66cf861a27f602..46cee0470c5db7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-namespaces.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS namespaces"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS namespaces"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js
    index ae5c3f315fb1ac..1fdb2d5abac93e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nesting.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u","194":"f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u","194":"f H xB"},E:{"1":"OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d PC QC RC SC qB AC TC rB","194":"e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Nesting"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u","194":"v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u","194":"v f H"},E:{"1":"BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d RC SC TC UC rB CC VC sB","194":"e"},G:{"1":"BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Nesting"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js
    index a9ebad4ff54b3c..81a065f4692f8c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-not-sel-list.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O Q R S T U V W","16":"P"},C:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S EC FC"},D:{"1":"X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"selector list argument of :not()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O Q R S T U V W","16":"P"},C:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S GC HC"},D:{"1":"X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"selector list argument of :not()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js
    index e0ae2774e16043..81f07ab76a648d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-nth-child-of.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f"},C:{"1":"zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB GC HC"},D:{"1":"H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"selector list argument of :nth-child and :nth-last-child CSS pseudo-classes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js
    index 9ea863f55d9465..affb0fbb4a90f8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-opacity.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","4":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS3 Opacity"};
    +module.exports={A:{A:{"1":"F A B","4":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS3 Opacity"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
    index 6672a211253e78..6d1d0ee7399aaa 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-optional-pseudo.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F PC","132":"B C QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"132":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"h","132":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:":optional CSS pseudo-class"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F RC","132":"B C SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"132":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"h","132":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:":optional CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
    index 306de102a2b1bc..427282a11bb6b2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-anchor.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB EC FC"},D:{"1":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB GC HC"},D:{"1":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"CSS overflow-anchor (Scroll Anchoring)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js
    index 80609cc5d2aeb9..8571180b08e686 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow-overlay.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"I v J D E F A B IC JC KC LC 0B qB","16":"HC zB","130":"C K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC","16":"zB","130":"fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS overflow: overlay"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"I w J D E F A B KC LC MC NC 1B rB","16":"JC 0B","130":"C K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC","16":"0B","130":"hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS overflow: overlay"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js
    index ce4fb995abfeba..207daf535ca1c4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overflow.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"388":"J D E F A B CC"},B:{"1":"Z a b c d e i j k l m n o p q r s t u f H","260":"P Q R S T U V W X Y","388":"C K L G M N O"},C:{"1":"R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","260":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q","388":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB EC FC"},D:{"1":"Z a b c d e i j k l m n o p q r s t u f H xB yB GC","260":"gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y","388":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB"},E:{"1":"sB 6B 7B 8B 9B OC","260":"L G 1B MC NC 2B 3B 4B 5B","388":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB"},F:{"1":"nB oB pB P Q R wB S T U V W X Y Z a b c d e","260":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB","388":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB PC QC RC SC qB AC TC rB"},G:{"1":"sB 6B 7B 8B 9B","260":"kC lC mC nC 2B 3B 4B 5B","388":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC"},H:{"388":"oC"},I:{"1":"f","388":"tB I pC qC rC sC BC tC uC"},J:{"388":"D A"},K:{"1":"h","388":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"388":"A B"},O:{"388":"vC"},P:{"1":"g 5C sB 6C 7C 8C","388":"I wC xC yC zC 0C 0B 1C 2C 3C 4C"},Q:{"388":"1B"},R:{"1":"9C"},S:{"1":"BD","388":"AD"}},B:5,C:"CSS overflow property"};
    +module.exports={A:{A:{"388":"J D E F A B EC"},B:{"1":"Z a b c d e i j k l m n o p q r s t u v f H","260":"P Q R S T U V W X Y","388":"C K L G M N O"},C:{"1":"R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","260":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q","388":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB GC HC"},D:{"1":"Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","260":"hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y","388":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB"},E:{"1":"tB 7B 8B 9B AC BC QC","260":"L G 2B OC PC 3B 4B 5B 6B","388":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB"},F:{"1":"oB pB qB P Q R xB S T U V W X Y Z a b c d e","260":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB","388":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB RC SC TC UC rB CC VC sB"},G:{"1":"tB 7B 8B 9B AC BC","260":"mC nC oC pC 3B 4B 5B 6B","388":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC"},H:{"388":"qC"},I:{"1":"H","388":"uB I rC sC tC uC DC vC wC"},J:{"388":"D A"},K:{"1":"h","388":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"388":"A B"},O:{"388":"xC"},P:{"1":"g 7C tB 8C 9C AD","388":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C"},Q:{"388":"2B"},R:{"1":"BD"},S:{"1":"DD","388":"CD"}},B:5,C:"CSS overflow property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
    index 232bd1c7448792..907b0922239540 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-overscroll-behavior.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","132":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C K L G M N","516":"O"},C:{"1":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB EC FC"},D:{"1":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB","260":"bB cB"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B","1090":"G MC NC 2B 3B 4B 5B"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB PC QC RC SC qB AC TC rB","260":"QB RB"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC","1090":"mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"CSS overscroll-behavior"};
    +module.exports={A:{A:{"2":"J D E F EC","132":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C K L G M N","516":"O"},C:{"1":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB GC HC"},D:{"1":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB","260":"cB dB"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B","1090":"G OC PC 3B 4B 5B 6B"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RC SC TC UC rB CC VC sB","260":"RB SB"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC","1090":"oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"CSS overscroll-behavior"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js
    index ec6f8ce7a015a5..666befb7a05af0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-page-break.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"388":"A B","900":"J D E F CC"},B:{"388":"C K L G M N O","900":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"772":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","900":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB EC FC"},D:{"900":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"772":"A","900":"I v J D E F B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"16":"F PC","129":"B C QC RC SC qB AC TC rB","900":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"900":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"129":"oC"},I:{"900":"tB I f pC qC rC sC BC tC uC"},J:{"900":"D A"},K:{"129":"A B C qB AC rB","900":"h"},L:{"900":"H"},M:{"772":"H"},N:{"388":"A B"},O:{"900":"vC"},P:{"900":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"900":"1B"},R:{"900":"9C"},S:{"772":"BD","900":"AD"}},B:2,C:"CSS page-break properties"};
    +module.exports={A:{A:{"388":"A B","900":"J D E F EC"},B:{"388":"C K L G M N O","900":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"772":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","900":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB GC HC"},D:{"900":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"772":"A","900":"I w J D E F B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"16":"F RC","129":"B C SC TC UC rB CC VC sB","900":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"900":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"129":"qC"},I:{"900":"uB I H rC sC tC uC DC vC wC"},J:{"900":"D A"},K:{"129":"A B C rB CC sB","900":"h"},L:{"900":"H"},M:{"772":"f"},N:{"388":"A B"},O:{"900":"xC"},P:{"900":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"900":"2B"},R:{"900":"BD"},S:{"772":"DD","900":"CD"}},B:2,C:"CSS page-break properties"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js
    index b099988892a7bd..2f4e80b1910f2b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paged-media.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D CC","132":"E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C K L G M N O"},C:{"2":"DC tB I v J D E F A B C K L G M N O EC FC","132":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","132":"F B C PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"16":"oC"},I:{"16":"tB I f pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","16":"A B C qB AC rB"},L:{"1":"H"},M:{"132":"H"},N:{"258":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"132":"AD BD"}},B:5,C:"CSS Paged Media (@page)"};
    +module.exports={A:{A:{"2":"J D EC","132":"E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C K L G M N O"},C:{"2":"FC uB I w J D E F A B C K L G M N O GC HC","132":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","132":"F B C RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"16":"qC"},I:{"16":"uB I H rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","16":"A B C rB CC sB"},L:{"1":"H"},M:{"132":"f"},N:{"258":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"132":"CD DD"}},B:5,C:"CSS Paged Media (@page)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js
    index 28abde2443c646..2cfd1502493862 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-paint-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB"},E:{"2":"I v J D E F A B C HC zB IC JC KC LC 0B qB","194":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:4,C:"CSS Painting API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB"},E:{"2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB","194":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:4,C:"CSS Painting API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
    index 3c6c206f238d65..d6883fea5b44a8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder-shown.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","292":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","164":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","164":"AD"}},B:5,C:":placeholder-shown CSS pseudo-class"};
    +module.exports={A:{A:{"2":"J D E F EC","292":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","164":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","164":"CD"}},B:5,C:":placeholder-shown CSS pseudo-class"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js
    index e420edba5d6b08..73d088346202b8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-placeholder.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","36":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O EC FC","33":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","36":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","36":"v J D E F A IC JC KC LC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","36":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC","36":"E BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","36":"tB I pC qC rC sC BC tC uC"},J:{"36":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"36":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","36":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","33":"AD"}},B:5,C:"::placeholder CSS pseudo-element"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","36":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O GC HC","33":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","36":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","36":"w J D E F A KC LC MC NC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","36":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC","36":"E DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","36":"uB I rC sC tC uC DC vC wC"},J:{"36":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"36":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","36":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","33":"CD"}},B:5,C:"::placeholder CSS pseudo-element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-print-color-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-print-color-adjust.js
    index 937e9e580071eb..1d18ed03f294c1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-print-color-adjust.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-print-color-adjust.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"2":"I v J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC","33":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},K:{"2":"A B C qB AC rB","33":"h"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"I v HC zB IC OC","33":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},I:{"2":"tB I pC qC rC sC BC","33":"f tC uC"}},B:6,C:"print-color-adjust property"};
    +module.exports={A:{D:{"2":"I w J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB GC HC","33":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},K:{"2":"A B C rB CC sB","33":"h"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"I w JC 0B KC QC","33":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},I:{"2":"uB I rC sC tC uC DC","33":"H vC wC"}},B:6,C:"print-color-adjust property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js
    index 8524638bdf74b4..b2bb5281286922 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-read-only-write.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC","33":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB EC FC"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB","132":"I v J D E IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F B PC QC RC SC qB","132":"C G M N O w g x y AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC","132":"E BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","16":"pC qC","132":"tB I rC sC BC tC uC"},J:{"1":"A","132":"D"},K:{"1":"h","2":"A B qB","132":"C AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","33":"AD"}},B:1,C:"CSS :read-only and :read-write selectors"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC","33":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB GC HC"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B","132":"I w J D E KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F B RC SC TC UC rB","132":"C G M N O x g y z CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC","132":"E DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","16":"rC sC","132":"uB I tC uC DC vC wC"},J:{"1":"A","132":"D"},K:{"1":"h","2":"A B rB","132":"C CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","33":"CD"}},B:1,C:"CSS :read-only and :read-write selectors"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
    index 7fc632b245b564..0efb2b8182de44 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rebeccapurple.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC","16":"JC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Rebeccapurple color"};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC","16":"LC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Rebeccapurple color"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js
    index cb64fd7a70d37c..de92cac0dc9038 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-reflections.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"HC zB","33":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"33":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"33":"tB I f pC qC rC sC BC tC uC"},J:{"33":"D A"},K:{"2":"A B C qB AC rB","33":"h"},L:{"33":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"33":"vC"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"33":"1B"},R:{"33":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS Reflections"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"JC 0B","33":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"33":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"33":"uB I H rC sC tC uC DC vC wC"},J:{"33":"D A"},K:{"2":"A B C rB CC sB","33":"h"},L:{"33":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"33":"xC"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"33":"2B"},R:{"33":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS Reflections"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js
    index 3df7f57012ae49..849595343622ce 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-regions.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","420":"A B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","420":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"I v J D E F A B C K L BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","36":"G M N O","66":"0 1 2 3 4 5 6 7 8 9 w g x y z AB"},E:{"2":"I v J C K L G HC zB IC qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"D E F A B JC KC LC 0B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"zB UC BC VC WC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"E XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"420":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Regions"};
    +module.exports={A:{A:{"2":"J D E F EC","420":"A B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","420":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"I w J D E F A B C K L CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","36":"G M N O","66":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB"},E:{"2":"I w J C K L G JC 0B KC rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"D E F A B LC MC NC 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"0B WC DC XC YC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"E ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"420":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Regions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
    index 159a526899d6dc..fb111920d680f5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-repeating-gradients.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC","33":"I v J D E F A B C K L G FC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F","33":"0 1 A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB","33":"J IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC","33":"C TC","36":"qB AC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","33":"VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB pC qC rC","33":"I sC BC"},J:{"1":"A","2":"D"},K:{"1":"h rB","2":"A B","33":"C","36":"qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS Repeating Gradients"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC","33":"I w J D E F A B C K L G HC"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F","33":"0 1 2 A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B","33":"J KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC","33":"C VC","36":"rB CC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","33":"XC YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB rC sC tC","33":"I uC DC"},J:{"1":"A","2":"D"},K:{"1":"h sB","2":"A B","33":"C","36":"rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS Repeating Gradients"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js
    index 46b7fb7ee58596..87dc2a5099afd3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-resize.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","33":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC","132":"rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:2,C:"CSS resize property"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","33":"I"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC","132":"sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:2,C:"CSS resize property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js
    index 331db2fd5bc209..1f4af190783e50 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-revert-value.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q R S"},C:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB EC FC"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC"},F:{"1":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB PC QC RC SC qB AC TC rB"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"CSS revert value"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S"},C:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB GC HC"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC"},F:{"1":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB RC SC TC UC rB CC VC sB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"CSS revert value"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
    index f8e2c8ac601e3d..029c70b03c202e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-rrggbbaa.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC"},D:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","194":"SB TB UB VB WB XB YB uB ZB vB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB PC QC RC SC qB AC TC rB","194":"FB GB HB IB JB KB LB MB NB OB PB QB RB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","194":"wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"#rrggbbaa hex color notation"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB GC HC"},D:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","194":"TB UB VB WB XB YB ZB vB aB wB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB RC SC TC UC rB CC VC sB","194":"GB HB IB JB KB LB MB NB OB PB QB RB SB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","194":"yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"#rrggbbaa hex color notation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
    index 083cf1137af61e..1706d8e8424063 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-behavior.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","129":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB","129":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","450":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB 1B","578":"L G MC NC 2B"},F:{"2":"0 1 2 3 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","129":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","450":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC","578":"mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"129":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"129":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"CSS Scroll-behavior"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","129":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB","129":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","450":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB 2B","578":"L G OC PC 3B"},F:{"2":"0 1 2 3 4 F B C G M N O x g y z RC SC TC UC rB CC VC sB","129":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","450":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC","578":"oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"129":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"129":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"CSS Scroll-behavior"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js
    index 8232724062e5a1..296d18dc138f20 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scroll-timeline.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y","194":"Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T","194":"X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","322":"U V W"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB PC QC RC SC qB AC TC rB","194":"mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","322":"h lB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS @scroll-timeline"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y","194":"Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T","194":"X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","322":"U V W"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB RC SC TC UC rB CC VC sB","194":"nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","322":"h mB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS @scroll-timeline"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js
    index 4bf6826ad2790e..b5b7a142083246 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-scrollbar.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"132":"J D E F A B CC"},B:{"2":"C K L G M N O","292":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB EC FC","3074":"bB","4100":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"292":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"16":"I v HC zB","292":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","292":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC WC","292":"XC","804":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"oC"},I:{"16":"pC qC","292":"tB I f rC sC BC tC uC"},J:{"292":"D A"},K:{"2":"A B C qB AC rB","292":"h"},L:{"292":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"292":"vC"},P:{"292":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"292":"1B"},R:{"292":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS scrollbar styling"};
    +module.exports={A:{A:{"132":"J D E F A B EC"},B:{"2":"C K L G M N O","292":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB GC HC","3074":"cB","4100":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"292":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"16":"I w JC 0B","292":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","292":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC YC","292":"ZC","804":"E aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"qC"},I:{"16":"rC sC","292":"uB I H tC uC DC vC wC"},J:{"292":"D A"},K:{"2":"A B C rB CC sB","292":"h"},L:{"292":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"292":"xC"},P:{"292":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"292":"2B"},R:{"292":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS scrollbar styling"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js
    index 476247b348ad6b..1c6f3e30f1ff61 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"D E F A B","2":"CC","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS 2.1 selectors"};
    +module.exports={A:{A:{"1":"D E F A B","2":"EC","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS 2.1 selectors"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js
    index ccba105d7d65f9..892fdefa031cd8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sel3.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"CC","8":"J","132":"D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS3 selectors"};
    +module.exports={A:{A:{"1":"F A B","2":"EC","8":"J","132":"D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS3 selectors"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js
    index cc6480430d2f80..c339c4e9233cd5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-selection.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","33":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"C h AC rB","16":"A B qB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","33":"AD"}},B:5,C:"::selection CSS pseudo-element"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","33":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"C h CC sB","16":"A B rB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","33":"CD"}},B:5,C:"::selection CSS pseudo-element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js
    index 8b946ec9508f38..1ec60100426eca 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-shapes.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB EC FC","322":"RB SB TB UB VB WB XB YB uB ZB vB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z","194":"AB BB CB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC","33":"E F A KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","33":"E YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"CSS Shapes Level 1"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB GC HC","322":"SB TB UB VB WB XB YB ZB vB aB wB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB","194":"BB CB DB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC","33":"E F A MC NC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","33":"E aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"CSS Shapes Level 1"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js
    index 69fe8646bfe731..113a24d5150a03 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-snappoints.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","6308":"A","6436":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","6436":"C K L G M N O"},C:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB EC FC","2052":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB"},D:{"1":"hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB","8258":"eB fB gB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC","3108":"F A LC 0B"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB","8258":"UB VB WB XB YB ZB aB bB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC","3108":"ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2052":"AD"}},B:4,C:"CSS Scroll Snap"};
    +module.exports={A:{A:{"2":"J D E F EC","6308":"A","6436":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","6436":"C K L G M N O"},C:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GC HC","2052":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB"},D:{"1":"iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB","8258":"fB gB hB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC","3108":"F A NC 1B"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB","8258":"VB WB XB YB ZB aB bB cB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC","3108":"bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2052":"CD"}},B:4,C:"CSS Scroll Snap"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js
    index 496cd361be37a5..eb48caa2402a12 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-sticky.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"a b c d e i j k l m n o p q r s t u f H","2":"C K L G","1028":"P Q R S T U V W X Y Z","4100":"M N O"},C:{"1":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"2 3 4 5 6 7","516":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},D:{"1":"a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x y DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","322":"0 1 2 3 4 5 6 7 8 9 z AB BB CB SB TB UB VB","1028":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC","33":"E F A B C KC LC 0B qB rB","2084":"D JC"},F:{"1":"pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB PC QC RC SC qB AC TC rB","322":"FB GB HB","1028":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"E YC ZC aC bC cC dC eC fC gC","2084":"WC XC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1028":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1028":"1B"},R:{"1":"9C"},S:{"1":"BD","516":"AD"}},B:5,C:"CSS position:sticky"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"a b c d e i j k l m n o p q r s t u v f H","2":"C K L G","1028":"P Q R S T U V W X Y Z","4100":"M N O"},C:{"1":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"3 4 5 6 7 8","516":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},D:{"1":"a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g y z EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","322":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB TB UB VB WB","1028":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC","33":"E F A B C MC NC 1B rB sB","2084":"D LC"},F:{"1":"qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB RC SC TC UC rB CC VC sB","322":"GB HB IB","1028":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"E aC bC cC dC eC fC gC hC iC","2084":"YC ZC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1028":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1028":"2B"},R:{"1":"BD"},S:{"1":"DD","516":"CD"}},B:5,C:"CSS position:sticky"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js
    index 51baca0cd68a61..564abe9e53ce66 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-subgrid.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"CSS Subgrid"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"CSS Subgrid"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js
    index f81cc931272fb1..803794dac29b91 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-supports-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G M N O"},C:{"1":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w EC FC","66":"g x","260":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 I v J D E F A B C K L G M N O w g x y z","260":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC","132":"rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"132":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC","132":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS.supports() API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G M N O"},C:{"1":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x GC HC","66":"g y","260":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},D:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 I w J D E F A B C K L G M N O x g y z","260":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC","132":"sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"132":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC","132":"sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS.supports() API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js
    index 3389bf6c9f3a06..4bc297422bcec2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-table.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","2":"J D CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","132":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS Table display"};
    +module.exports={A:{A:{"1":"E F A B","2":"J D EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","132":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS Table display"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js
    index 9b210382874735..f7a0fdd093e1ab 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-align-last.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"132":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","4":"C K L G M N O"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B EC FC","33":"0 1 2 3 4 5 6 7 8 9 C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB","322":"BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x PC QC RC SC qB AC TC rB","578":"0 1 2 3 4 5 6 7 8 9 y z"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","33":"AD"}},B:4,C:"CSS3 text-align-last"};
    +module.exports={A:{A:{"132":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","4":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B GC HC","33":"0 1 2 3 4 5 6 7 8 9 C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB","322":"CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y RC SC TC UC rB CC VC sB","578":"0 1 2 3 4 5 6 7 8 9 z AB"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","33":"CD"}},B:4,C:"CSS3 text-align-last"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-box-trim.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-box-trim.js
    index 498b0ac4c7c742..88ec8c1974e7f0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-box-trim.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-box-trim.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B","16":"9B","129":"OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B","16":"9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS text-box-trim & text-box-edge"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","129":"QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC","16":"BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS text-box-trim & text-box-edge"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js
    index 6fb18e497ff177..abd5e8c0e58603 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-indent.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"132":"J D E F A B CC"},B:{"132":"C K L G M N O","388":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"132":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB","388":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"sB 6B 7B 8B 9B OC","132":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"132":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","388":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"sB 6B 7B 8B 9B","132":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"132":"oC"},I:{"132":"tB I pC qC rC sC BC tC uC","388":"f"},J:{"132":"D A"},K:{"132":"A B C qB AC rB","388":"h"},L:{"388":"H"},M:{"132":"H"},N:{"132":"A B"},O:{"388":"vC"},P:{"132":"I","388":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"388":"1B"},R:{"388":"9C"},S:{"132":"AD BD"}},B:4,C:"CSS text-indent"};
    +module.exports={A:{A:{"132":"J D E F A B EC"},B:{"132":"C K L G M N O","388":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"132":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB","388":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"tB 7B 8B 9B AC BC QC","132":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"132":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB","388":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"tB 7B 8B 9B AC BC","132":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"132":"qC"},I:{"132":"uB I rC sC tC uC DC vC wC","388":"H"},J:{"132":"D A"},K:{"132":"A B C rB CC sB","388":"h"},L:{"388":"H"},M:{"132":"f"},N:{"132":"A B"},O:{"388":"xC"},P:{"132":"I","388":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"388":"2B"},R:{"388":"BD"},S:{"132":"CD DD"}},B:4,C:"CSS text-indent"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js
    index 64ae35d6cbcf4d..34475e2ff13e61 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-justify.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"16":"J D CC","132":"E F A B"},B:{"132":"C K L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB EC FC","1025":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","1602":"UB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB","322":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","322":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","322":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","322":"h"},L:{"322":"H"},M:{"1025":"H"},N:{"132":"A B"},O:{"322":"vC"},P:{"2":"I","322":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"322":"1B"},R:{"322":"9C"},S:{"2":"AD","1025":"BD"}},B:4,C:"CSS text-justify"};
    +module.exports={A:{A:{"16":"J D EC","132":"E F A B"},B:{"132":"C K L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB GC HC","1025":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","1602":"VB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB","322":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 F B C G M N O x g y z RC SC TC UC rB CC VC sB","322":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","322":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","322":"h"},L:{"322":"H"},M:{"1025":"f"},N:{"132":"A B"},O:{"322":"xC"},P:{"2":"I","322":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"322":"2B"},R:{"322":"BD"},S:{"2":"CD","1025":"DD"}},B:4,C:"CSS text-justify"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js
    index cdc9bf68eb939b..c0c070c2dd2f03 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-orientation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EC FC","194":"EB FB GB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC","16":"A","33":"B C K 0B qB rB 1B"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS text-orientation"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB GC HC","194":"FB GB HB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC","16":"A","33":"B C K 1B rB sB 2B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS text-orientation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js
    index 07923263d029a0..6dcfb728e04dbc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-text-spacing.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D CC","161":"E F A B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"16":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS Text 4 text-spacing"};
    +module.exports={A:{A:{"2":"J D EC","161":"E F A B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"16":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS Text 4 text-spacing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js
    index c32f6462bbf7dc..46559cffaeb5f4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-textshadow.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","129":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","260":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"4":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"A","4":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"129":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 Text-shadow"};
    +module.exports={A:{A:{"2":"J D E F EC","129":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","260":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"4":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"A","4":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"129":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 Text-shadow"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js
    index c45073caecb328..481a9ea38f5840 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-touch-action.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F CC","289":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","1025":"SB TB UB VB WB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y PC QC RC SC qB AC TC rB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC","516":"aC bC cC dC eC fC gC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","289":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","194":"AD"}},B:2,C:"CSS touch-action property"};
    +module.exports={A:{A:{"1":"B","2":"J D E F EC","289":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","1025":"TB UB VB WB XB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC","516":"cC dC eC fC gC hC iC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","289":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","194":"CD"}},B:2,C:"CSS touch-action property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js
    index cde24a6322282e..76292504174258 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-transitions.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","33":"v J D E F A B C K L G","164":"I"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"J IC","164":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F PC QC","33":"C","164":"B RC SC qB AC TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"WC","164":"zB UC BC VC"},H:{"2":"oC"},I:{"1":"f tC uC","33":"tB I pC qC rC sC BC"},J:{"1":"A","33":"D"},K:{"1":"h rB","33":"C","164":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"CSS3 Transitions"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","33":"w J D E F A B C K L G","164":"I"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"J KC","164":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F RC SC","33":"C","164":"B TC UC rB CC VC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"YC","164":"0B WC DC XC"},H:{"2":"qC"},I:{"1":"H vC wC","33":"uB I rC sC tC uC DC"},J:{"1":"A","33":"D"},K:{"1":"h sB","33":"C","164":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"CSS3 Transitions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
    index 3495e5848b9bf3..f9dda4c6eaff0c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unicode-bidi.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"132":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","33":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","132":"DC tB I v J D E F EC FC","292":"A B C K L G M"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"I v J D E F A B C K L G M","548":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"132":"I v J D E HC zB IC JC KC","548":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"132":"E zB UC BC VC WC XC YC","548":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"16":"oC"},I:{"1":"f","16":"tB I pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","16":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","16":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","33":"AD"}},B:4,C:"CSS unicode-bidi property"};
    +module.exports={A:{A:{"132":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","33":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","132":"FC uB I w J D E F GC HC","292":"A B C K L G M"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"I w J D E F A B C K L G M","548":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"132":"I w J D E JC 0B KC LC MC","548":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"132":"E 0B WC DC XC YC ZC aC","548":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"16":"qC"},I:{"1":"H","16":"uB I rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","16":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","16":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","33":"CD"}},B:4,C:"CSS unicode-bidi property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js
    index 71535b7479850d..f3b46c948aa980 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-unset-value.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS unset value"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS unset value"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js
    index f66939d69e361c..e13b94c0b1149c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-variables.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L","260":"G"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","194":"OB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC","260":"LC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB PC QC RC SC qB AC TC rB","194":"BB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC","260":"aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS Variables (Custom Properties)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L","260":"G"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","194":"PB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC","260":"NC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB RC SC TC UC rB CC VC sB","194":"CB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC","260":"cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS Variables (Custom Properties)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js
    index ba65aed0ce8f32..dbcc30efabb065 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-when-else.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"CSS @when / @else conditional rules"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"CSS @when / @else conditional rules"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js
    index 2323ef89ccc5d5..ea236130c4bb32 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-widows-orphans.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D CC","129":"E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","129":"F B PC QC RC SC qB AC TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"2":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:2,C:"CSS widows & orphans"};
    +module.exports={A:{A:{"1":"A B","2":"J D EC","129":"E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","129":"F B RC SC TC UC rB CC VC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"2":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:2,C:"CSS widows & orphans"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js
    index a6d5d0ec873629..96945426b2852c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-width-stretch.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"2":"I v J D E F A B C K L G M N O w g x","33":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC","33":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},M:{"33":"H"},A:{"2":"J D E F A B CC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},K:{"2":"A B C qB AC rB","33":"h"},E:{"2":"I v J HC zB IC JC OC","33":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B"},G:{"2":"zB UC BC VC WC","33":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},P:{"2":"I","33":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},I:{"2":"tB I pC qC rC sC BC","33":"f tC uC"}},B:6,C:"width: stretch property"};
    +module.exports={A:{D:{"2":"I w J D E F A B C K L G M N O x g y","33":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},L:{"33":"H"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC","33":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},M:{"33":"f"},A:{"2":"J D E F A B EC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},K:{"2":"A B C rB CC sB","33":"h"},E:{"2":"I w J JC 0B KC LC QC","33":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},G:{"2":"0B WC DC XC YC","33":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},P:{"2":"I","33":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},I:{"2":"uB I rC sC tC uC DC","33":"H vC wC"}},B:6,C:"width: stretch property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js
    index 78b9c1f4f30775..ca46b646e293c7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-writing-mode.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"132":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC","322":"CB DB EB FB GB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J","16":"D","33":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v","33":"J D E F A IC JC KC LC 0B"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC","33":"E VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"pC qC rC","33":"tB I sC BC tC uC"},J:{"33":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"36":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","33":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS writing-mode property"};
    +module.exports={A:{A:{"132":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC","322":"DB EB FB GB HB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J","16":"D","33":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w","33":"J D E F A KC LC MC NC 1B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC","33":"E XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"rC sC tC","33":"uB I uC DC vC wC"},J:{"33":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"36":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","33":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS writing-mode property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js
    index c4bca2cc772be1..f8579deca1e49b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css-zoom.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D CC","129":"E F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"129":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS zoom"};
    +module.exports={A:{A:{"1":"J D EC","129":"E F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"129":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS zoom"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js
    index 725246d29611de..f2470921abfcd2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-attr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS3 attr() function for all properties"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS3 attr() function for all properties"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js
    index 826997e533e861..62fc9da9faee97 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-boxsizing.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","8":"J D CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","33":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"I v J D E F"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"zB UC BC"},H:{"1":"oC"},I:{"1":"I f sC BC tC uC","33":"tB pC qC rC"},J:{"1":"A","33":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"CSS3 Box-sizing"};
    +module.exports={A:{A:{"1":"E F A B","8":"J D EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","33":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"I w J D E F"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"0B WC DC"},H:{"1":"qC"},I:{"1":"I H uC DC vC wC","33":"uB rC sC tC"},J:{"1":"A","33":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"CSS3 Box-sizing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js
    index 51e8db72fe57a3..754eb92bad7403 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-colors.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","4":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","2":"F","4":"PC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS3 Colors"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","4":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","2":"F","4":"RC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS3 Colors"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
    index 14537ae5f01f08..f989b04c070fca 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-grab.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","33":"0 1 2 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"C VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"33":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:2,C:"CSS grab & grabbing cursors"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","33":"0 1 2 3 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"C WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"33":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:2,C:"CSS grab & grabbing cursors"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
    index 54b56de0fa2df6..7a0bb5c1bf3b95 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors-newer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","33":"DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"I v J D E HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC","33":"G M N O w g x y z"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"33":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:2,C:"CSS3 Cursors: zoom-in & zoom-out"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","33":"0 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"I w J D E JC 0B KC LC MC"},F:{"1":"1 2 3 4 5 6 7 8 9 C AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC","33":"0 G M N O x g y z"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"33":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:2,C:"CSS3 Cursors: zoom-in & zoom-out"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js
    index 43684e0a1c0b95..1eeae271ad635b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-cursors.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","132":"J D E CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","4":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"I"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","4":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","260":"F B C PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:2,C:"CSS3 Cursors (original values)"};
    +module.exports={A:{A:{"1":"F A B","132":"J D E EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","4":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"I"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","4":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","260":"F B C RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:2,C:"CSS3 Cursors (original values)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js
    index 4600b33d4e1297..c2f06490add240 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/css3-tabsize.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","33":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z","164":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g","132":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC","132":"D E F A B C K JC KC LC 0B qB rB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F PC QC RC","132":"0 1 2 3 4 G M N O w g x y z","164":"B C SC qB AC TC rB"},G:{"1":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC","132":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC"},H:{"164":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","132":"tC uC"},J:{"132":"D A"},K:{"1":"h","2":"A","164":"B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"164":"AD BD"}},B:4,C:"CSS3 tab-size"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","33":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z","164":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},D:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g","132":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC","132":"D E F A B C K LC MC NC 1B rB sB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F RC SC TC","132":"0 1 2 3 4 5 G M N O x g y z","164":"B C UC rB CC VC sB"},G:{"1":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC","132":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC"},H:{"164":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","132":"vC wC"},J:{"132":"D A"},K:{"1":"h","2":"A","164":"B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"164":"CD DD"}},B:4,C:"CSS3 tab-size"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js
    index 9a75ee2744e899..7169b7c9f228f1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/currentcolor.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS currentColor value"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS currentColor value"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js
    index 597c43039d2a84..eea76ca75efd87 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elements.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","8":"A B"},B:{"1":"P","2":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","8":"C K L G M N O"},C:{"2":"DC tB I v J D E F A B C K L G M N O w g x y uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","66":"0 1 2 3 4 5 z","72":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","2":"0 1 2 I v J D E F A B C K L G M N O w g x y z Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","66":"3 4 5 6 7 8"},E:{"2":"I v HC zB IC","8":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","2":"F B C fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","66":"G M N O w"},G:{"2":"zB UC BC VC WC","8":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"uC","2":"tB I f pC qC rC sC BC tC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I wC xC yC zC 0C 0B 1C 2C","2":"g 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"2":"BD","72":"AD"}},B:7,C:"Custom Elements (deprecated V0 spec)"};
    +module.exports={A:{A:{"2":"J D E F EC","8":"A B"},B:{"1":"P","2":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","8":"C K L G M N O"},C:{"2":"FC uB I w J D E F A B C K L G M N O x g y z vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","66":"0 1 2 3 4 5 6","72":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","2":"0 1 2 3 I w J D E F A B C K L G M N O x g y z Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","66":"4 5 6 7 8 9"},E:{"2":"I w JC 0B KC","8":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","2":"F B C gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","66":"G M N O x"},G:{"2":"0B WC DC XC YC","8":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"wC","2":"uB I H rC sC tC uC DC vC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I yC zC 0C 1C 2C 1B 3C 4C","2":"g 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"2":"DD","72":"CD"}},B:7,C:"Custom Elements (deprecated V0 spec)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js
    index 494ca176d7e51d..b1cfcd0479242d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/custom-elementsv1.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","8":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","8":"C K L G M N O"},C:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","8":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","456":"QB RB SB TB UB VB WB XB YB","712":"uB ZB vB aB"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","8":"SB TB","132":"UB VB WB XB YB uB ZB vB aB bB cB dB eB"},E:{"2":"I v J D HC zB IC JC KC","8":"E F A LC","132":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB PC QC RC SC qB AC TC rB","132":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC","132":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","132":"wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","8":"AD"}},B:1,C:"Custom Elements (V1)"};
    +module.exports={A:{A:{"2":"J D E F EC","8":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","8":"C K L G M N O"},C:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 FC uB I w J D E F A B C K L G M N O x g y z GC HC","8":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","456":"RB SB TB UB VB WB XB YB ZB","712":"vB aB wB bB"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","8":"TB UB","132":"VB WB XB YB ZB vB aB wB bB cB dB eB fB"},E:{"2":"I w J D JC 0B KC LC MC","8":"E F A NC","132":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB RC SC TC UC rB CC VC sB","132":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC","132":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","132":"yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","8":"CD"}},B:1,C:"Custom Elements (V1)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js
    index b872de37a2572c..5b33e7d34e56be 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/customevent.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC","132":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I","16":"v J D E K L","388":"F A B C"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v J","388":"IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F PC QC RC SC","132":"B qB AC"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"UC","16":"zB BC","388":"VC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"pC qC rC","388":"tB I sC BC"},J:{"1":"A","388":"D"},K:{"1":"C h rB","2":"A","132":"B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"CustomEvent"};
    +module.exports={A:{A:{"2":"J D E EC","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC","132":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I","16":"w J D E K L","388":"F A B C"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w J","388":"KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F RC SC TC UC","132":"B rB CC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"WC","16":"0B DC","388":"XC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"rC sC tC","388":"uB I uC DC"},J:{"1":"A","388":"D"},K:{"1":"C h sB","2":"A","132":"B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"CustomEvent"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js
    index 45f1f63e244cb7..4f27a68dbe9f1c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datalist.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E F","260":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G","1284":"M N O"},C:{"1":"H xB yB","8":"DC tB EC FC","516":"o p q r s t u f","4612":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n"},D:{"1":"hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"I v J D E F A B C K L G M N O w","132":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v J D E F A B C HC zB IC JC KC LC 0B qB"},F:{"1":"F B C cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},G:{"8":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC","2049":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f uC","8":"tB I pC qC rC sC BC tC"},J:{"1":"A","8":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:1,C:"Datalist element"};
    +module.exports={A:{A:{"2":"EC","8":"J D E F","260":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G","1284":"M N O"},C:{"1":"f H yB zB","8":"FC uB GC HC","516":"o p q r s t u v","4612":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n"},D:{"1":"iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"I w J D E F A B C K L G M N O x","132":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w J D E F A B C JC 0B KC LC MC NC 1B rB"},F:{"1":"F B C dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},G:{"8":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC","2049":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H wC","8":"uB I rC sC tC uC DC vC"},J:{"1":"A","8":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:1,C:"Datalist element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js
    index a03358e921294e..6c3ac30e477197 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dataset.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","4":"J D E F A CC"},B:{"1":"C K L G M","129":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","4":"DC tB I v EC FC","129":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"LB MB NB OB PB QB RB SB TB UB","4":"I v J","129":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"4":"I v HC zB","129":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"8 9 C AB BB CB DB EB FB GB HB qB AC TC rB","4":"F B PC QC RC SC","129":"0 1 2 3 4 5 6 7 G M N O w g x y z IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"4":"zB UC BC","129":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"4":"oC"},I:{"4":"pC qC rC","129":"tB I f sC BC tC uC"},J:{"129":"D A"},K:{"1":"C qB AC rB","4":"A B","129":"h"},L:{"129":"H"},M:{"129":"H"},N:{"1":"B","4":"A"},O:{"129":"vC"},P:{"129":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"129":"1B"},R:{"129":"9C"},S:{"1":"AD","129":"BD"}},B:1,C:"dataset & data-* attributes"};
    +module.exports={A:{A:{"1":"B","4":"J D E F A EC"},B:{"1":"C K L G M","129":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","4":"FC uB I w GC HC","129":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"MB NB OB PB QB RB SB TB UB VB","4":"I w J","129":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"4":"I w JC 0B","129":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"9 C AB BB CB DB EB FB GB HB IB rB CC VC sB","4":"F B RC SC TC UC","129":"0 1 2 3 4 5 6 7 8 G M N O x g y z JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"4":"0B WC DC","129":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"4":"qC"},I:{"4":"rC sC tC","129":"uB I H uC DC vC wC"},J:{"129":"D A"},K:{"1":"C rB CC sB","4":"A B","129":"h"},L:{"129":"H"},M:{"129":"f"},N:{"1":"B","4":"A"},O:{"129":"xC"},P:{"129":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"129":"2B"},R:{"129":"BD"},S:{"1":"CD","129":"DD"}},B:1,C:"dataset & data-* attributes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js
    index 7e72ece70aa565..7f99a87b945575 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/datauri.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D CC","132":"E","260":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K G M N O","772":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"260":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Data URIs"};
    +module.exports={A:{A:{"2":"J D EC","132":"E","260":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K G M N O","772":"L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"260":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Data URIs"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
    index 2667cda010b505..a3ff2a2eaab115 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/date-tolocaledatestring.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"16":"CC","132":"J D E F A B"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C K L G M N"},C:{"1":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","132":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","260":"SB TB UB VB","772":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"I v J D E F A B C K L G M N O w g x y z","260":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB","772":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB"},E:{"1":"C K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB","132":"J D E F A IC JC KC LC","260":"B 0B qB"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F B C PC QC RC SC qB AC TC","132":"rB","260":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","772":"0 G M N O w g x y z"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC","132":"E WC XC YC ZC aC bC"},H:{"132":"oC"},I:{"1":"f","16":"tB pC qC rC","132":"I sC BC","772":"tC uC"},J:{"132":"D A"},K:{"1":"h","16":"A B C qB AC","132":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","260":"I wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","132":"AD"}},B:6,C:"Date.prototype.toLocaleDateString"};
    +module.exports={A:{A:{"16":"EC","132":"J D E F A B"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C K L G M N"},C:{"1":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","132":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC","260":"TB UB VB WB","772":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},D:{"1":"jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"0 I w J D E F A B C K L G M N O x g y z","260":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB","772":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB"},E:{"1":"C K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B","132":"J D E F A KC LC MC NC","260":"B 1B rB"},F:{"1":"YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F B C RC SC TC UC rB CC VC","132":"sB","260":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","772":"0 1 G M N O x g y z"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC","132":"E YC ZC aC bC cC dC"},H:{"132":"qC"},I:{"1":"H","16":"uB rC sC tC","132":"I uC DC","772":"vC wC"},J:{"132":"D A"},K:{"1":"h","16":"A B C rB CC","132":"sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","260":"I yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","132":"CD"}},B:6,C:"Date.prototype.toLocaleDateString"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js
    index cc471d7d761ac4..57a504bd623b86 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/declarative-shadow-dom.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q R S T U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T","66":"U V W X Y"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"1":"oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB PC QC RC SC qB AC TC rB"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Declarative Shadow DOM"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T","66":"U V W X Y"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"1":"pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB RC SC TC UC rB CC VC sB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Declarative Shadow DOM"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js
    index 6bcf68c0e1d711..4174ca4daa654d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/decorators.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Decorators"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Decorators"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js
    index 28fcb970e68edc..a92c890971e963 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/details.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"F A B CC","8":"J D E"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC","8":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC","194":"NB OB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"I v J D E F A B","257":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB","769":"C K L G M N O"},E:{"1":"C K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v HC zB IC","257":"J D E F A JC KC LC","1025":"B 0B qB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"C qB AC TC rB","8":"F B PC QC RC SC"},G:{"1":"E WC XC YC ZC aC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC VC","1025":"bC cC dC"},H:{"8":"oC"},I:{"1":"I f sC BC tC uC","8":"tB pC qC rC"},J:{"1":"A","8":"D"},K:{"1":"h","8":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Details & Summary elements"};
    +module.exports={A:{A:{"2":"F A B EC","8":"J D E"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC","8":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC","194":"OB PB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"I w J D E F A B","257":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB","769":"C K L G M N O"},E:{"1":"C K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w JC 0B KC","257":"J D E F A LC MC NC","1025":"B 1B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"C rB CC VC sB","8":"F B RC SC TC UC"},G:{"1":"E YC ZC aC bC cC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC XC","1025":"dC eC fC"},H:{"8":"qC"},I:{"1":"I H uC DC vC wC","8":"uB rC sC tC"},J:{"1":"A","8":"D"},K:{"1":"h","8":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Details & Summary elements"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js
    index 4a2d779ab5f060..e991c83db316f7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/deviceorientation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"1":"C K L G M N O","4":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB EC","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"I v FC"},D:{"2":"I v J","4":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","4":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"zB UC","4":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"pC qC rC","4":"tB I f sC BC tC uC"},J:{"2":"D","4":"A"},K:{"1":"C rB","2":"A B qB AC","4":"h"},L:{"4":"H"},M:{"4":"H"},N:{"1":"B","2":"A"},O:{"4":"vC"},P:{"4":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"4":"1B"},R:{"4":"9C"},S:{"4":"AD BD"}},B:4,C:"DeviceOrientation & DeviceMotion events"};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"1":"C K L G M N O","4":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB GC","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"I w HC"},D:{"2":"I w J","4":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","4":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"0B WC","4":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"rC sC tC","4":"uB I H uC DC vC wC"},J:{"2":"D","4":"A"},K:{"1":"C sB","2":"A B rB CC","4":"h"},L:{"4":"H"},M:{"4":"f"},N:{"1":"B","2":"A"},O:{"4":"xC"},P:{"4":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"4":"2B"},R:{"4":"BD"},S:{"4":"CD DD"}},B:4,C:"DeviceOrientation & DeviceMotion events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js
    index 06cb12f5ebf070..7f5c7756346256 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/devicepixelratio.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"C h rB","2":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Window.devicePixelRatio"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"C h sB","2":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Window.devicePixelRatio"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js
    index 3599f8d772c6dd..df32bf23e5094d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dialog.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC","194":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","1218":"Q R wB S T U V W X Y Z a b c d e i j"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 I v J D E F A B C K L G M N O w g x y z","322":"8 9 AB BB CB"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O PC QC RC SC qB AC TC rB","578":"w g x y z"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:1,C:"Dialog element"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC","194":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","1218":"Q R xB S T U V W X Y Z a b c d e i j"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 I w J D E F A B C K L G M N O x g y z","322":"9 AB BB CB DB"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O RC SC TC UC rB CC VC sB","578":"0 x g y z"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:1,C:"Dialog element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js
    index dfb1cde1793c57..97da8565938020 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dispatchevent.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","16":"CC","129":"F A","130":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","16":"F"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","129":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"EventTarget.dispatchEvent"};
    +module.exports={A:{A:{"1":"B","16":"EC","129":"F A","130":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","16":"F"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","129":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"EventTarget.dispatchEvent"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js
    index 20b27908ffc7e7..b80ee81204a508 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dnssec.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"132":"J D E F A B CC"},B:{"132":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"132":"7 8 9 I v AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","388":"0 1 2 3 4 5 6 J D E F A B C K L G M N O w g x y z"},E:{"132":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"132":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"132":"oC"},I:{"132":"tB I f pC qC rC sC BC tC uC"},J:{"132":"D A"},K:{"132":"A B C h qB AC rB"},L:{"132":"H"},M:{"132":"H"},N:{"132":"A B"},O:{"132":"vC"},P:{"132":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"132":"1B"},R:{"132":"9C"},S:{"132":"AD BD"}},B:6,C:"DNSSEC and DANE"};
    +module.exports={A:{A:{"132":"J D E F A B EC"},B:{"132":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"132":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"132":"8 9 I w AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","388":"0 1 2 3 4 5 6 7 J D E F A B C K L G M N O x g y z"},E:{"132":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"132":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"132":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"132":"qC"},I:{"132":"uB I H rC sC tC uC DC vC wC"},J:{"132":"D A"},K:{"132":"A B C h rB CC sB"},L:{"132":"H"},M:{"132":"f"},N:{"132":"A B"},O:{"132":"xC"},P:{"132":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"132":"2B"},R:{"132":"BD"},S:{"132":"CD DD"}},B:6,C:"DNSSEC and DANE"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js
    index 1c2fe72347eaed..61eef33d2b62b1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/do-not-track.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","164":"F A","260":"B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G M"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E EC FC","516":"0 1 2 3 4 5 6 7 F A B C K L G M N O w g x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x y"},E:{"1":"J A B C IC LC 0B qB","2":"I v K L G HC zB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","1028":"D E F JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC"},G:{"1":"ZC aC bC cC dC eC fC","2":"zB UC BC VC WC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","1028":"E XC YC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"16":"D","1028":"A"},K:{"1":"h rB","16":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"164":"A","260":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:7,C:"Do Not Track API"};
    +module.exports={A:{A:{"2":"J D E EC","164":"F A","260":"B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G M"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E GC HC","516":"0 1 2 3 4 5 6 7 8 F A B C K L G M N O x g y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g y z"},E:{"1":"J A B C KC NC 1B rB","2":"I w K L G JC 0B sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","1028":"D E F LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC"},G:{"1":"bC cC dC eC fC gC hC","2":"0B WC DC XC YC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","1028":"E ZC aC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"16":"D","1028":"A"},K:{"1":"h sB","16":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"164":"A","260":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:7,C:"Do Not Track API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js
    index 641484163d5304..4e5815f5489d50 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-currentscript.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"E F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G PC QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"document.currentScript"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 I w J D E F A B C K L G M N O x g y z"},E:{"1":"E F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G RC SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"document.currentScript"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
    index bb983e9c3ca8eb..3f6c9188630a07 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-evaluate-xpath.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","16":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","16":"F"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:7,C:"document.evaluate & XPath"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","16":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","16":"F"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:7,C:"document.evaluate & XPath"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js
    index 65325d60aaaeb8..2eb06fcbece2ad 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-execcommand.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","16":"F PC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC","16":"BC VC WC"},H:{"2":"oC"},I:{"1":"f sC BC tC uC","2":"tB I pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:7,C:"Document.execCommand()"};
    +module.exports={A:{A:{"1":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","16":"F RC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC","16":"DC XC YC"},H:{"2":"qC"},I:{"1":"H uC DC vC wC","2":"uB I rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:7,C:"Document.execCommand()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js
    index 382246d30ed85f..0e6bea1cae639a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-policy.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T","132":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T","132":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB PC QC RC SC qB AC TC rB","132":"jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","132":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","132":"h"},L:{"132":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"132":"9C"},S:{"2":"AD BD"}},B:7,C:"Document Policy"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T","132":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T","132":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB RC SC TC UC rB CC VC sB","132":"kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","132":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","132":"h"},L:{"132":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"132":"BD"},S:{"2":"CD DD"}},B:7,C:"Document Policy"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js
    index c1b8cd6a83d91c..559dc60387fbce 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/document-scrollingelement.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"C K"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC"},D:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"document.scrollingElement"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"C K"},C:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB GC HC"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"document.scrollingElement"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js
    index 8f879582804034..c98f94b03a1866 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/documenthead.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F PC QC RC SC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"document.head"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F RC SC TC UC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"document.head"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
    index 9ab07f54569bf0..e8629dad658f51 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-manip-convenience.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC"},D:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","194":"SB TB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB PC QC RC SC qB AC TC rB","194":"GB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"DOM manipulation convenience methods"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB GC HC"},D:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","194":"TB UB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB RC SC TC UC rB CC VC sB","194":"HB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"DOM manipulation convenience methods"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js
    index 4669b472eaa231..ae6c5fb245f94a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dom-range.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"CC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Document Object Model Range"};
    +module.exports={A:{A:{"1":"F A B","2":"EC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Document Object Model Range"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js
    index 7aa6a0f5333f1a..5f4f11bb1bb3d8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/domcontentloaded.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"DOMContentLoaded"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"DOMContentLoaded"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js
    index fe155f9c4c1fbe..c36575bade1172 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dommatrix.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","132":"A B"},B:{"132":"C K L G M N O","1028":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","1028":"hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2564":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","3076":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB"},D:{"16":"I v J D","132":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB","388":"E","1028":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"16":"I HC zB","132":"v J D E F A IC JC KC LC 0B","1028":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","1028":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"16":"zB UC BC","132":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"132":"I sC BC tC uC","292":"tB pC qC rC","1028":"f"},J:{"16":"D","132":"A"},K:{"2":"A B C qB AC rB","1028":"h"},L:{"1028":"H"},M:{"1028":"H"},N:{"132":"A B"},O:{"1028":"vC"},P:{"132":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1028":"1B"},R:{"1028":"9C"},S:{"1028":"BD","2564":"AD"}},B:4,C:"DOMMatrix"};
    +module.exports={A:{A:{"2":"J D E F EC","132":"A B"},B:{"132":"C K L G M N O","1028":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC","1028":"iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2564":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","3076":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB"},D:{"16":"I w J D","132":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB","388":"E","1028":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"16":"I JC 0B","132":"w J D E F A KC LC MC NC 1B","1028":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","1028":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"16":"0B WC DC","132":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"132":"I uC DC vC wC","292":"uB rC sC tC","1028":"H"},J:{"16":"D","132":"A"},K:{"2":"A B C rB CC sB","1028":"h"},L:{"1028":"H"},M:{"1028":"f"},N:{"132":"A B"},O:{"1028":"xC"},P:{"132":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1028":"2B"},R:{"1028":"BD"},S:{"1028":"DD","2564":"CD"}},B:4,C:"DOMMatrix"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js
    index 5be7c4500ab610..66615e75eefa4a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/download.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Download attribute"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Download attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js
    index fe53bd6fdf82df..de4aae4afa7f4b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/dragndrop.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"644":"J D E F CC","772":"A B"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","8":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","8":"F B PC QC RC SC qB AC TC"},G:{"1":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","1025":"f"},J:{"2":"D A"},K:{"1":"rB","8":"A B C qB AC","1025":"h"},L:{"1025":"H"},M:{"2":"H"},N:{"1":"A B"},O:{"1025":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:1,C:"Drag and Drop"};
    +module.exports={A:{A:{"644":"J D E F EC","772":"A B"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","8":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","8":"F B RC SC TC UC rB CC VC"},G:{"1":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","1025":"H"},J:{"2":"D A"},K:{"1":"sB","8":"A B C rB CC","1025":"h"},L:{"1025":"H"},M:{"2":"f"},N:{"1":"A B"},O:{"1025":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:1,C:"Drag and Drop"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js
    index 2e8c9355d08de9..79e7bd9ba44f95 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-closest.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB EC FC"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Element.closest()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB GC HC"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Element.closest()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js
    index 0a0ed635cce8a5..8a4365b8bdc433 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-from-point.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","16":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","16":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","16":"F PC QC RC SC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"C h rB","16":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"document.elementFromPoint()"};
    +module.exports={A:{A:{"1":"J D E F A B","16":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","16":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","16":"F RC SC TC UC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"C h sB","16":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"document.elementFromPoint()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js
    index 3be6d3413884f5..b648ac83e4ea20 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/element-scroll-methods.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC","132":"A B C K 0B qB rB 1B"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB PC QC RC SC qB AC TC rB"},G:{"1":"mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC","132":"bC cC dC eC fC gC hC iC jC kC lC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC"},D:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC","132":"A B C K 1B rB sB 2B"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB RC SC TC UC rB CC VC sB"},G:{"1":"oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC","132":"dC eC fC gC hC iC jC kC lC mC nC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Scroll methods on elements (scroll, scrollTo, scrollBy)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js
    index cefcc8f346dbbc..27c5dfaee8a92e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eme.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","164":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EC FC"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB","132":"BB CB DB EB FB GB HB"},E:{"1":"C K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC","164":"D E F A B KC LC 0B qB"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x PC QC RC SC qB AC TC rB","132":"0 1 2 3 4 y z"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Encrypted Media Extensions"};
    +module.exports={A:{A:{"2":"J D E F A EC","164":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB GC HC"},D:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB","132":"CB DB EB FB GB HB IB"},E:{"1":"C K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC","164":"D E F A B MC NC 1B rB"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y RC SC TC UC rB CC VC sB","132":"0 1 2 3 4 5 z"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Encrypted Media Extensions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js
    index 8f52bb62d80a2b..680630869f1a8b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eot.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","2":"CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"EOT - Embedded OpenType fonts"};
    +module.exports={A:{A:{"1":"J D E F A B","2":"EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"EOT - Embedded OpenType fonts"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js
    index ad9af3d34fea68..6dc7b1a56eb301 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es5.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D CC","260":"F","1026":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","4":"DC tB EC FC","132":"I v J D E F A B C K L G M N O w g"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"I v J D E F A B C K L G M N O","132":"w g x y"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","4":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","4":"F B C PC QC RC SC qB AC TC","132":"rB"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","4":"zB UC BC VC"},H:{"132":"oC"},I:{"1":"f tC uC","4":"tB pC qC rC","132":"sC BC","900":"I"},J:{"1":"A","4":"D"},K:{"1":"h","4":"A B C qB AC","132":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"ECMAScript 5"};
    +module.exports={A:{A:{"1":"A B","2":"J D EC","260":"F","1026":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","4":"FC uB GC HC","132":"I w J D E F A B C K L G M N O x g"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"I w J D E F A B C K L G M N O","132":"x g y z"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","4":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","4":"F B C RC SC TC UC rB CC VC","132":"sB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","4":"0B WC DC XC"},H:{"132":"qC"},I:{"1":"H vC wC","4":"uB rC sC tC","132":"uC DC","900":"I"},J:{"1":"A","4":"D"},K:{"1":"h","4":"A B C rB CC","132":"sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"ECMAScript 5"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js
    index 427a475a5aab3b..6e1c4ff21aef09 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-class.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB","132":"IB JB KB LB MB NB OB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","132":"5 6 7 8 9 AB BB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"ES6 classes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB","132":"JB KB LB MB NB OB PB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O x g y z RC SC TC UC rB CC VC sB","132":"6 7 8 9 AB BB CB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"ES6 classes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js
    index 545b42a8f8f3cb..99037dbd02eb80 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-generators.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"ES6 Generators"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"ES6 Generators"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
    index 04338cf6bd2199..6dd3a234022325 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module-dynamic-import.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB EC FC","194":"eB"},D:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"JavaScript modules: dynamic import()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB GC HC","194":"fB"},D:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"JavaScript modules: dynamic import()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js
    index c685ea0b9cb37d..013bf709acc8da 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-module.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L","4097":"M N O","4290":"G"},C:{"1":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB EC FC","322":"UB VB WB XB YB uB"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB","194":"ZB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC","3076":"0B"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB PC QC RC SC qB AC TC rB","194":"NB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC","3076":"cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"JavaScript modules via script tag"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L","4097":"M N O","4290":"G"},C:{"1":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB GC HC","322":"VB WB XB YB ZB vB"},D:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB","194":"aB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC","3076":"1B"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB RC SC TC UC rB CC VC sB","194":"OB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC","3076":"eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"JavaScript modules via script tag"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js
    index b7e1f145593ddf..af3d9c80b23fe5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-number.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G EC FC","132":"0 M N O w g x y z","260":"1 2 3 4 5 6","516":"7"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O","1028":"0 1 2 3 4 5 6 7 8 9 w g x y z"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","1028":"G M N O w g"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC","1028":"sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"ES6 Number"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G GC HC","132":"0 1 M N O x g y z","260":"2 3 4 5 6 7","516":"8"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O","1028":"0 1 2 3 4 5 6 7 8 9 x g y z AB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","1028":"G M N O x g"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC","1028":"uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"ES6 Number"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js
    index efde98b2d3a3a6..6e3fc3fe1b6021 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6-string-includes.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB EC FC"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"String.prototype.includes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB GC HC"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"String.prototype.includes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js
    index 41db2170f77fa7..14491df81bc421 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/es6.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","388":"B"},B:{"257":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L","769":"G M N O"},C:{"2":"DC tB I v EC FC","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","257":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"I v J D E F A B C K L G M N O w g","4":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","257":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC","4":"E F KC LC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","4":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB","257":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC","4":"E XC YC ZC aC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","4":"tC uC","257":"f"},J:{"2":"D","4":"A"},K:{"2":"A B C qB AC rB","257":"h"},L:{"257":"H"},M:{"257":"H"},N:{"2":"A","388":"B"},O:{"257":"vC"},P:{"4":"I","257":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"257":"1B"},R:{"257":"9C"},S:{"4":"AD","257":"BD"}},B:6,C:"ECMAScript 2015 (ES6)"};
    +module.exports={A:{A:{"2":"J D E F A EC","388":"B"},B:{"257":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L","769":"G M N O"},C:{"2":"FC uB I w GC HC","4":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","257":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"I w J D E F A B C K L G M N O x g","4":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","257":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC","4":"E F MC NC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","4":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB","257":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC","4":"E ZC aC bC cC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","4":"vC wC","257":"H"},J:{"2":"D","4":"A"},K:{"2":"A B C rB CC sB","257":"h"},L:{"257":"H"},M:{"257":"f"},N:{"2":"A","388":"B"},O:{"257":"xC"},P:{"4":"I","257":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"257":"2B"},R:{"257":"BD"},S:{"4":"CD","257":"DD"}},B:6,C:"ECMAScript 2015 (ES6)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js
    index 68cee5164ff86c..c89d30b40b58cc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/eventsource.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","4":"F PC QC RC SC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"C h qB AC rB","4":"A B"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Server-sent events"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","4":"F RC SC TC UC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"D A"},K:{"1":"C h rB CC sB","4":"A B"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Server-sent events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js
    index 10613591f59501..e751f995dd22d7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/extended-system-fonts.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"ui-serif, ui-sans-serif, ui-monospace and ui-rounded values for font-family"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js
    index 70a522a7fe6997..b962e74fe898cc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/feature-policy.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W","2":"C K L G M N O","1025":"X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h EC FC","260":"lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"lB mB nB oB pB P Q R S T U V W","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB","132":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h","1025":"X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B HC zB IC JC KC LC 0B","772":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB PC QC RC SC qB AC TC rB","132":"NB OB PB QB RB SB TB UB VB WB XB YB ZB","1025":"mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC","772":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","1025":"h"},L:{"1025":"H"},M:{"260":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC","132":"zC 0C 0B"},Q:{"132":"1B"},R:{"1025":"9C"},S:{"2":"AD","260":"BD"}},B:7,C:"Feature Policy"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W","2":"C K L G M N O","1025":"X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h GC HC","260":"mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"mB nB oB pB qB P Q R S T U V W","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB","132":"aB wB bB cB dB eB fB gB hB iB jB kB lB h","1025":"X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B JC 0B KC LC MC NC 1B","772":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB RC SC TC UC rB CC VC sB","132":"OB PB QB RB SB TB UB VB WB XB YB ZB aB","1025":"nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC","772":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","1025":"h"},L:{"1025":"H"},M:{"260":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C","132":"1C 2C 1B"},Q:{"132":"2B"},R:{"1025":"BD"},S:{"2":"CD","260":"DD"}},B:7,C:"Feature Policy"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js
    index a91c80df04ad60..f63d3fd1e00513 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fetch.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","1025":"FB","1218":"AB BB CB DB EB"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB","260":"GB","772":"HB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","260":"3","772":"4"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Fetch"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB GC HC","1025":"GB","1218":"BB CB DB EB FB"},D:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB","260":"HB","772":"IB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O x g y z RC SC TC UC rB CC VC sB","260":"4","772":"5"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Fetch"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js
    index 21f6a63d352bc2..80c8da1e794c35 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fieldset-disabled.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"16":"CC","132":"E F","388":"J D A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G","16":"M N O w"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","16":"F PC"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC"},H:{"388":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A","260":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"disabled attribute of the fieldset element"};
    +module.exports={A:{A:{"16":"EC","132":"E F","388":"J D A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G","16":"M N O x"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","16":"F RC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC"},H:{"388":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A","260":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"disabled attribute of the fieldset element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js
    index 67cbc37b172f97..af49addb9e562f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fileapi.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","260":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G M N O"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC","260":"0 1 2 3 I v J D E F A B C K L G M N O w g x y z FC"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v","260":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB","388":"J D E F A B C"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB","260":"J D E F JC KC LC","388":"IC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B PC QC RC SC","260":"0 C G M N O w g x y z qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","260":"E WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f uC","2":"pC qC rC","260":"tC","388":"tB I sC BC"},J:{"260":"A","388":"D"},K:{"1":"h","2":"A B","260":"C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A","260":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"File API"};
    +module.exports={A:{A:{"2":"J D E F EC","260":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC","260":"0 1 2 3 4 I w J D E F A B C K L G M N O x g y z HC"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w","260":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB","388":"J D E F A B C"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B","260":"J D E F LC MC NC","388":"KC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B RC SC TC UC","260":"0 1 C G M N O x g y z rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","260":"E YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H wC","2":"rC sC tC","260":"vC","388":"uB I uC DC"},J:{"260":"A","388":"D"},K:{"1":"h","2":"A B","260":"C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A","260":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"File API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js
    index 1572eb004323dc..ae94fd0d0514a5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereader.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F B PC QC RC SC"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"C h qB AC rB","2":"A B"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"FileReader API"};
    +module.exports={A:{A:{"2":"J D E F EC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F B RC SC TC UC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"C h rB CC sB","2":"A B"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"FileReader API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js
    index 14e81157b848df..cfaf706c185685 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filereadersync.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F PC QC","16":"B RC SC qB AC"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"C h AC rB","2":"A","16":"B qB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"FileReaderSync"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F RC SC","16":"B TC UC rB CC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"C h CC sB","2":"A","16":"B rB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"FileReaderSync"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js
    index fdfd7b40400493..d8cf272da135c7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/filesystem.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"I v J D","33":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","36":"E F A B C"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D","33":"A"},K:{"2":"A B C qB AC rB","33":"h"},L:{"33":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"33":"vC"},P:{"2":"I","33":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"33":"9C"},S:{"2":"AD BD"}},B:7,C:"Filesystem & FileWriter API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"I w J D","33":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","36":"E F A B C"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D","33":"A"},K:{"2":"A B C rB CC sB","33":"h"},L:{"33":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"33":"xC"},P:{"2":"I","33":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"33":"BD"},S:{"2":"CD DD"}},B:7,C:"Filesystem & FileWriter API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js
    index f595c0718347b9..995a1c7c1159d4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flac.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB EC FC"},D:{"1":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB","16":"KB LB MB","388":"NB OB PB QB RB SB TB UB VB"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","516":"B C qB rB"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"pC qC rC","16":"tB I sC BC tC uC"},J:{"1":"A","2":"D"},K:{"1":"h rB","16":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","129":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"FLAC audio format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB GC HC"},D:{"1":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB","16":"LB MB NB","388":"OB PB QB RB SB TB UB VB WB"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","516":"B C rB sB"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"rC sC tC","16":"uB I uC DC vC wC"},J:{"1":"A","2":"D"},K:{"1":"h sB","16":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","129":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"FLAC audio format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js
    index 2fc66ea7887f38..0009928f4d0eaf 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox-gap.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q R S"},C:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB EC FC"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S"},E:{"1":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B"},F:{"1":"iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB PC QC RC SC qB AC TC rB"},G:{"1":"mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"gap property for Flexbox"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S"},C:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB GC HC"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S"},E:{"1":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B"},F:{"1":"jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB RC SC TC UC rB CC VC sB"},G:{"1":"oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"gap property for Flexbox"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js
    index b4b18aa133dbbf..ec1638c5175d21 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flexbox.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","1028":"B","1316":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","164":"DC tB I v J D E F A B C K L G M N O w g x EC FC","516":"0 1 2 3 y z"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 x y z","164":"I v J D E F A B C K L G M N O w g"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"D E JC KC","164":"I v J HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B C PC QC RC SC qB AC TC","33":"G M"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"E XC YC","164":"zB UC BC VC WC"},H:{"1":"oC"},I:{"1":"f tC uC","164":"tB I pC qC rC sC BC"},J:{"1":"A","164":"D"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","292":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS Flexible Box Layout Module"};
    +module.exports={A:{A:{"2":"J D E F EC","1028":"B","1316":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","164":"FC uB I w J D E F A B C K L G M N O x g y GC HC","516":"0 1 2 3 4 z"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 y z","164":"I w J D E F A B C K L G M N O x g"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"D E LC MC","164":"I w J JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B C RC SC TC UC rB CC VC","33":"G M"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"E ZC aC","164":"0B WC DC XC YC"},H:{"1":"qC"},I:{"1":"H vC wC","164":"uB I rC sC tC uC DC"},J:{"1":"A","164":"D"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","292":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS Flexible Box Layout Module"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js
    index b100645bfbf9cc..d4c05138f5738e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/flow-root.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC"},D:{"1":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB PC QC RC SC qB AC TC rB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"display: flow-root"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC"},D:{"1":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB sB"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB RC SC TC UC rB CC VC sB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"display: flow-root"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
    index 1e2d24cdf3e216..7846b94e63b3cc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/focusin-focusout-events.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","2":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F PC QC RC SC","16":"B qB AC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"I f sC BC tC uC","2":"pC qC rC","16":"tB"},J:{"1":"D A"},K:{"1":"C h rB","2":"A","16":"B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"focusin & focusout events"};
    +module.exports={A:{A:{"1":"J D E F A B","2":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F RC SC TC UC","16":"B rB CC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"I H uC DC vC wC","2":"rC sC tC","16":"uB"},J:{"1":"D A"},K:{"1":"C h sB","2":"A","16":"B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"focusin & focusout events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js
    index db647f8225b33f..efb601d470d70e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-family-system-ui.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB EC FC","132":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a"},D:{"1":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","260":"TB UB VB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC","16":"F","132":"A LC 0B"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC","132":"ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"132":"AD BD"}},B:5,C:"system-ui value for font-family"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB GC HC","132":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a"},D:{"1":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","260":"UB VB WB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC","16":"F","132":"A NC 1B"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC","132":"bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"132":"CD DD"}},B:5,C:"system-ui value for font-family"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js
    index 5b814a019e2628..677cb68151a31d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-feature.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z","164":"I v J D E F A B C K L"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","292":"M N O w g"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"D E F HC zB JC KC","4":"I v J IC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E XC YC ZC","4":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","33":"tC uC"},J:{"2":"D","33":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","33":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS font-feature-settings"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB","164":"I w J D E F A B C K L"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","292":"M N O x g"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"D E F JC 0B LC MC","4":"I w J KC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E ZC aC bC","4":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","33":"vC wC"},J:{"2":"D","33":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","33":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS font-feature-settings"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js
    index b99b82d7dcbbb7..4f963f96205f6e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-kerning.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"0 1 2 3 4 5 6 7 8 9"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 I v J D E F A B C K L G M N O w g x y z","33":"5 6 7 8"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC","33":"D E F KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G PC QC RC SC qB AC TC rB","33":"M N O w"},G:{"1":"fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","33":"E YC ZC aC bC cC dC eC"},H:{"2":"oC"},I:{"1":"f uC","2":"tB I pC qC rC sC BC","33":"tC"},J:{"2":"D","33":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 font-kerning"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"1 2 3 4 5 6 7 8 9 AB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 I w J D E F A B C K L G M N O x g y z","33":"6 7 8 9"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC","33":"D E F MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G RC SC TC UC rB CC VC sB","33":"M N O x"},G:{"1":"hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","33":"E aC bC cC dC eC fC gC"},H:{"2":"qC"},I:{"1":"H wC","2":"uB I rC sC tC uC DC","33":"vC"},J:{"2":"D","33":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 font-kerning"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js
    index c9bdf3ec9d30a8..a6af78d9fa16a1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-loading.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB EC FC","194":"BB CB DB EB FB GB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"CSS Font Loading"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB GC HC","194":"CB DB EB FB GB HB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"CSS Font Loading"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js
    index 801f9f6d155718..bead738d7738ea 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-size-adjust.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","194":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB","194":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"2":"0 1 2 3 4 5 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","194":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"194":"1B"},R:{"2":"9C"},S:{"1":"BD","2":"AD"}},B:2,C:"CSS font-size-adjust"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","194":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB","194":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"2":"0 1 2 3 4 5 6 F B C G M N O x g y z RC SC TC UC rB CC VC sB","194":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"194":"2B"},R:{"2":"BD"},S:{"1":"DD","2":"CD"}},B:2,C:"CSS font-size-adjust"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js
    index 34c897dbb9baf2..b29f44923a975d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-smooth.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","676":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","804":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"I","676":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"HC zB","676":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","676":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"804":"AD BD"}},B:7,C:"CSS font-smooth"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","676":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 FC uB I w J D E F A B C K L G M N O x g y z GC HC","804":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"I","676":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"JC 0B","676":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","676":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"804":"CD DD"}},B:7,C:"CSS font-smooth"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js
    index 1e37f375c1f9b1..458dc54d1a4f72 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-unicode-range.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","4":"F A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","4":"C K L G M"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC","194":"CB DB EB FB GB HB IB JB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","4":"I v J D E F HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","4":"G M N O w g x y"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","4":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","4":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","4":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"4":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","4":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Font unicode-range subsetting"};
    +module.exports={A:{A:{"2":"J D E EC","4":"F A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","4":"C K L G M"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC","194":"DB EB FB GB HB IB JB KB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","4":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","4":"G M N O x g y z"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","4":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","4":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","4":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"4":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","4":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Font unicode-range subsetting"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js
    index 4ab460b04b6cec..623829d1a8c483 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-alternates.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","130":"A B"},B:{"130":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","130":"I v J D E F A B C K L G M N O w g x y z","322":"0 1 2 3 4 5 6 7 8 9"},D:{"1":"xB yB GC","2":"I v J D E F A B C K L G","130":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"D E F HC zB JC KC","130":"I v J IC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","130":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB XC YC ZC","130":"UC BC VC WC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","130":"f tC uC"},J:{"2":"D","130":"A"},K:{"2":"A B C qB AC rB","130":"h"},L:{"130":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"130":"vC"},P:{"130":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"130":"1B"},R:{"130":"9C"},S:{"1":"AD BD"}},B:5,C:"CSS font-variant-alternates"};
    +module.exports={A:{A:{"2":"J D E F EC","130":"A B"},B:{"1":"H","130":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","130":"0 I w J D E F A B C K L G M N O x g y z","322":"1 2 3 4 5 6 7 8 9 AB"},D:{"1":"H yB zB IC","2":"I w J D E F A B C K L G","130":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"D E F JC 0B LC MC","130":"I w J KC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","130":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B ZC aC bC","130":"WC DC XC YC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","130":"vC wC"},J:{"2":"D","130":"A"},K:{"2":"A B C rB CC sB","130":"h"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"130":"xC"},P:{"130":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"130":"2B"},R:{"130":"BD"},S:{"1":"CD DD"}},B:5,C:"CSS font-variant-alternates"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js
    index b10c96899e3278..162b3e87c625d1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/font-variant-numeric.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB PC QC RC SC qB AC TC rB"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS font-variant-numeric"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB GC HC"},D:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB RC SC TC UC rB CC VC sB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS font-variant-numeric"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js
    index 2116d394a8a4df..e9f146f77a7fcb 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fontface.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","132":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","2":"F PC"},G:{"1":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","260":"zB UC"},H:{"2":"oC"},I:{"1":"I f sC BC tC uC","2":"pC","4":"tB qC rC"},J:{"1":"A","4":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"@font-face Web fonts"};
    +module.exports={A:{A:{"1":"F A B","132":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","2":"F RC"},G:{"1":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","260":"0B WC"},H:{"2":"qC"},I:{"1":"I H uC DC vC wC","2":"rC","4":"uB sC tC"},J:{"1":"A","4":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"@font-face Web fonts"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js
    index 9d9a2ad374a473..1ba406e20ec6ac 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-attribute.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"1":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Form attribute"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"1":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Form attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js
    index 17c1f56f3bb193..367e3c6dc5d1c0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-submit-attributes.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","2":"F PC","16":"QC RC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"1":"oC"},I:{"1":"I f sC BC tC uC","2":"pC qC rC","16":"tB"},J:{"1":"A","2":"D"},K:{"1":"B C h qB AC rB","16":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Attributes for form submission"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","2":"F RC","16":"SC TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"1":"qC"},I:{"1":"I H uC DC vC wC","2":"rC sC tC","16":"uB"},J:{"1":"A","2":"D"},K:{"1":"B C h rB CC sB","16":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Attributes for form submission"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js
    index 82955f8f8e2476..d889efad558599 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/form-validation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","132":"v J D E F A IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","2":"F PC"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB","132":"E UC BC VC WC XC YC ZC aC bC"},H:{"516":"oC"},I:{"1":"f uC","2":"tB pC qC rC","132":"I sC BC tC"},J:{"1":"A","132":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"260":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","132":"AD"}},B:1,C:"Form validation"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","132":"w J D E F A KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","2":"F RC"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B","132":"E WC DC XC YC ZC aC bC cC dC"},H:{"516":"qC"},I:{"1":"H wC","2":"uB rC sC tC","132":"I uC DC vC"},J:{"1":"A","132":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"260":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","132":"CD"}},B:1,C:"Form validation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js
    index 6886ddf7c31801..0592af2b866117 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/forms.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","4":"A B","8":"J D E F"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","4":"C K L G"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"DC tB EC FC"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},E:{"4":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"HC zB"},F:{"1":"F B C SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","4":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},G:{"2":"zB","4":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","4":"tC uC"},J:{"2":"D","4":"A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"4":"H"},N:{"4":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","4":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"4":"AD BD"}},B:1,C:"HTML5 form features"};
    +module.exports={A:{A:{"2":"EC","4":"A B","8":"J D E F"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","4":"C K L G"},C:{"4":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"FC uB GC HC"},D:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB"},E:{"4":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"JC 0B"},F:{"1":"F B C TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","4":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},G:{"2":"0B","4":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","4":"vC wC"},J:{"2":"D","4":"A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"4":"f"},N:{"4":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","4":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"4":"CD DD"}},B:1,C:"HTML5 form features"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js
    index bf24e6cbb875ba..7f1d7619960649 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/fullscreen.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","548":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","516":"C K L G M N O"},C:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F EC FC","676":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","1700":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB"},D:{"1":"jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L","676":"G M N O w","804":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB"},E:{"1":"9B OC","2":"I v HC zB","548":"3B 4B 5B sB 6B 7B 8B","676":"IC","804":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B C PC QC RC SC qB AC TC","804":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC","2052":"fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D","292":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A","548":"B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","804":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Full Screen API"};
    +module.exports={A:{A:{"2":"J D E F A EC","548":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","516":"C K L G M N O"},C:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F GC HC","676":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","1700":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB"},D:{"1":"kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L","676":"G M N O x","804":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB"},E:{"1":"AC BC QC","2":"I w JC 0B","548":"4B 5B 6B tB 7B 8B 9B","676":"KC","804":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B C RC SC TC UC rB CC VC","804":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC","2052":"hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D","292":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A","548":"B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","804":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Full Screen API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js
    index c6ff520b49b94e..674ad7bbddf023 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gamepad.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g","33":"0 x y z"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"Gamepad API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g","33":"0 1 y z"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"Gamepad API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js
    index 659f120aef3755..b7f26a9bd94dc1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/geolocation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"CC","8":"J D E"},B:{"1":"C K L G M N O","129":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB EC FC","8":"DC tB","129":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","4":"I","129":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I HC zB","129":"A"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C M N O w g x y z AB BB CB DB EB SC qB AC TC rB","2":"F G PC","8":"QC RC","129":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"E zB UC BC VC WC XC YC ZC aC","129":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I pC qC rC sC BC tC uC","129":"f"},J:{"1":"D A"},K:{"1":"B C qB AC rB","8":"A","129":"h"},L:{"129":"H"},M:{"129":"H"},N:{"1":"A B"},O:{"129":"vC"},P:{"1":"I","129":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"129":"1B"},R:{"129":"9C"},S:{"1":"AD","129":"BD"}},B:2,C:"Geolocation"};
    +module.exports={A:{A:{"1":"F A B","2":"EC","8":"J D E"},B:{"1":"C K L G M N O","129":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB GC HC","8":"FC uB","129":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","4":"I","129":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I JC 0B","129":"A"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C M N O x g y z AB BB CB DB EB FB UC rB CC VC sB","2":"F G RC","8":"SC TC","129":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC","129":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I rC sC tC uC DC vC wC","129":"H"},J:{"1":"D A"},K:{"1":"B C rB CC sB","8":"A","129":"h"},L:{"129":"H"},M:{"129":"f"},N:{"1":"A B"},O:{"129":"xC"},P:{"1":"I","129":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"129":"2B"},R:{"129":"BD"},S:{"1":"CD","129":"DD"}},B:2,C:"Geolocation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js
    index 87e2321ae6d403..88f3a4d717018c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getboundingclientrect.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"644":"J D CC","2049":"F A B","2692":"E"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2049":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC","260":"I v J D E F A B","1156":"tB","1284":"EC","1796":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","16":"F PC","132":"QC RC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","132":"A"},L:{"1":"H"},M:{"1":"H"},N:{"2049":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Element.getBoundingClientRect()"};
    +module.exports={A:{A:{"644":"J D EC","2049":"F A B","2692":"E"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2049":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC","260":"I w J D E F A B","1156":"uB","1284":"GC","1796":"HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","16":"F RC","132":"SC TC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","132":"A"},L:{"1":"H"},M:{"1":"f"},N:{"2049":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Element.getBoundingClientRect()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js
    index 39698481ab4821..907167240e4282 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getcomputedstyle.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC","132":"tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","260":"I v J D E F A"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","260":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","260":"F PC QC RC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","260":"zB UC BC"},H:{"260":"oC"},I:{"1":"I f sC BC tC uC","260":"tB pC qC rC"},J:{"1":"A","260":"D"},K:{"1":"B C h qB AC rB","260":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"getComputedStyle"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC","132":"uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","260":"I w J D E F A"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","260":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","260":"F RC SC TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","260":"0B WC DC"},H:{"260":"qC"},I:{"1":"I H uC DC vC wC","260":"uB rC sC tC"},J:{"1":"A","260":"D"},K:{"1":"B C h rB CC sB","260":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"getComputedStyle"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
    index 687c9688350525..2b4314f71ae445 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getelementsbyclassname.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"CC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","8":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"getElementsByClassName"};
    +module.exports={A:{A:{"1":"F A B","2":"EC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","8":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"getElementsByClassName"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js
    index 365cf5879396bb..5526cf07e656ea 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/getrandomvalues.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","33":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A","33":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"crypto.getRandomValues()"};
    +module.exports={A:{A:{"2":"J D E F A EC","33":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A","33":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"crypto.getRandomValues()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js
    index 091ca47a0ad8ac..23b27a2702c4a4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/gyroscope.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","194":"YB uB ZB vB aB bB cB dB eB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:4,C:"Gyroscope"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","194":"ZB vB aB wB bB cB dB eB fB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:4,C:"Gyroscope"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
    index da6cb32c9273c3..c463d93cbd6f23 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hardwareconcurrency.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB"},E:{"2":"I v J D HC zB IC JC KC","129":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","194":"E F A LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"2":"zB UC BC VC WC XC","129":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","194":"E YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"navigator.hardwareConcurrency"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L"},C:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB GC HC"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB"},E:{"2":"I w J D JC 0B KC LC MC","129":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","194":"E F A NC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"2":"0B WC DC XC YC ZC","129":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","194":"E aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"navigator.hardwareConcurrency"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js
    index 465f3a6ef746f4..cb0318a562daba 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hashchange.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","8":"J D CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","8":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"I"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","8":"F PC QC RC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"2":"oC"},I:{"1":"tB I f qC rC sC BC tC uC","2":"pC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","8":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Hashchange event"};
    +module.exports={A:{A:{"1":"E F A B","8":"J D EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","8":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"I"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","8":"F RC SC TC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"2":"qC"},I:{"1":"uB I H sC tC uC DC vC wC","2":"rC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","8":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Hashchange event"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js
    index ca372fa2c27098..b9b47db09fb8db 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/heif.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A HC zB IC JC KC LC 0B","130":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC","130":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"HEIF/ISO Base Media File Format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A JC 0B KC LC MC NC 1B","130":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC","130":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"HEIF/ISO Base Media File Format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js
    index 95506ba0e92890..7b5d8e1a921ed5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hevc.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"132":"C K L G M N O","1028":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s","2052":"t u f H xB yB GC"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","516":"B C qB rB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c PC QC RC SC qB AC TC rB","2052":"d e"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","2052":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","258":"h"},L:{"2052":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I","258":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:6,C:"HEVC/H.265 video format"};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"132":"C K L G M N O","1028":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s","2052":"t u v f H yB zB IC"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","516":"B C rB sB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c RC SC TC UC rB CC VC sB","2052":"d e"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","2052":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","258":"h"},L:{"2052":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I","258":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:6,C:"HEVC/H.265 video format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js
    index 74cbc743ec08ef..09e7b268bf5565 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/hidden.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F B PC QC RC SC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"1":"oC"},I:{"1":"I f sC BC tC uC","2":"tB pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"C h qB AC rB","2":"A B"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"hidden attribute"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F B RC SC TC UC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"1":"qC"},I:{"1":"I H uC DC vC wC","2":"uB rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"C h rB CC sB","2":"A B"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"hidden attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js
    index 51a92dbc8d75a3..15ac11e8ccdfc4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/high-resolution-time.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w","33":"g x y z"},E:{"1":"E F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"High Resolution Time API"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x","33":"0 g y z"},E:{"1":"E F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"High Resolution Time API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js
    index a8df4ac4df8df2..87ebcb74991942 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/history.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","4":"v IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e AC TC rB","2":"F B PC QC RC SC qB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC","4":"BC"},H:{"2":"oC"},I:{"1":"f qC rC BC tC uC","2":"tB I pC sC"},J:{"1":"D A"},K:{"1":"C h qB AC rB","2":"A B"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Session history management"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","4":"w KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e CC VC sB","2":"F B RC SC TC UC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC","4":"DC"},H:{"2":"qC"},I:{"1":"H sC tC DC vC wC","2":"uB I rC uC"},J:{"1":"D A"},K:{"1":"C h rB CC sB","2":"A B"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Session history management"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js
    index 6f4c3689e7d7f0..d0c0f0ca242c2f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html-media-capture.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"zB UC BC VC","129":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC","257":"qC rC"},J:{"1":"A","16":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"516":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"16":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:2,C:"HTML Media Capture"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"0B WC DC XC","129":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC","257":"sC tC"},J:{"1":"A","16":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"516":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"16":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:2,C:"HTML Media Capture"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js
    index 087d10fd874cf2..f68972da120832 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/html5semantic.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E","260":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC","132":"tB EC FC","260":"I v J D E F A B C K L G M N O w g"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"I v","260":"0 1 J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","132":"I HC zB","260":"v J IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","132":"F B PC QC RC SC","260":"C qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"zB","260":"UC BC VC WC"},H:{"132":"oC"},I:{"1":"f tC uC","132":"pC","260":"tB I qC rC sC BC"},J:{"260":"D A"},K:{"1":"h","132":"A","260":"B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"260":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"HTML5 semantic elements"};
    +module.exports={A:{A:{"2":"EC","8":"J D E","260":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC","132":"uB GC HC","260":"I w J D E F A B C K L G M N O x g"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"I w","260":"0 1 2 J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","132":"I JC 0B","260":"w J KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","132":"F B RC SC TC UC","260":"C rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"0B","260":"WC DC XC YC"},H:{"132":"qC"},I:{"1":"H vC wC","132":"rC","260":"uB I sC tC uC DC"},J:{"260":"D A"},K:{"1":"h","132":"A","260":"B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"260":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"HTML5 semantic elements"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js
    index 4491d1bbc1a736..032ef9c6bcd37a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http-live-streaming.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"HTTP Live Streaming (HLS)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"HTTP Live Streaming (HLS)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js
    index 9fad169cce4e09..9ec55fcc630b07 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"1":"C K L G M N O","513":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC","513":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"HB IB JB KB LB MB NB OB PB QB","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB","513":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC","260":"F A LC 0B"},F:{"1":"4 5 6 7 8 9 AB BB CB DB","2":"0 1 2 3 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","513":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","513":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","513":"h"},L:{"513":"H"},M:{"513":"H"},N:{"2":"A B"},O:{"513":"vC"},P:{"1":"I","513":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"513":"1B"},R:{"513":"9C"},S:{"1":"AD","513":"BD"}},B:6,C:"HTTP/2 protocol"};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"1":"C K L G M N O","513":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC","513":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"IB JB KB LB MB NB OB PB QB RB","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB","513":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC","260":"F A NC 1B"},F:{"1":"5 6 7 8 9 AB BB CB DB EB","2":"0 1 2 3 4 F B C G M N O x g y z RC SC TC UC rB CC VC sB","513":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","513":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","513":"h"},L:{"513":"H"},M:{"513":"f"},N:{"2":"A B"},O:{"513":"xC"},P:{"1":"I","513":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"513":"2B"},R:{"513":"BD"},S:{"1":"CD","513":"DD"}},B:6,C:"HTTP/2 protocol"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js
    index 49d403eed8059e..0d0d31b7eed3e1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/http3.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","322":"P Q R S T","578":"U V"},C:{"1":"X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB EC FC","194":"kB h lB mB nB oB pB P Q R wB S T U V W"},D:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB","322":"P Q R S T","578":"U V"},E:{"2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB 1B","1090":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB PC QC RC SC qB AC TC rB","578":"h"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC","66":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:6,C:"HTTP/3 protocol"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","322":"P Q R S T","578":"U V"},C:{"1":"X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB GC HC","194":"lB h mB nB oB pB qB P Q R xB S T U V W"},D:{"1":"W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB","322":"P Q R S T","578":"U V"},E:{"2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB 2B","1090":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB RC SC TC UC rB CC VC sB","578":"h"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC","66":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:6,C:"HTTP/3 protocol"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js
    index a4458fd9113f14..40292abf074966 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-sandbox.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M EC FC","4":"0 1 2 3 N O w g x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC"},H:{"2":"oC"},I:{"1":"tB I f qC rC sC BC tC uC","2":"pC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"sandbox attribute for iframes"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M GC HC","4":"0 1 2 3 4 N O x g y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC"},H:{"2":"qC"},I:{"1":"uB I H sC tC uC DC vC wC","2":"rC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"sandbox attribute for iframes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js
    index 060b0b6791ec7d..fcf860c4832a4a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-seamless.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","66":"0 1 2 g x y z"},E:{"2":"I v J E F A B C K L G HC zB IC JC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","130":"D KC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","130":"XC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"seamless attribute for iframes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"4 5 6 7 8 9 I w J D E F A B C K L G M N O x AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","66":"0 1 2 3 g y z"},E:{"2":"I w J E F A B C K L G JC 0B KC LC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","130":"D MC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","130":"ZC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"seamless attribute for iframes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
    index 0885708c68d9bf..d4e0b75ee43e03 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/iframe-srcdoc.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","8":"C K L G M N O"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC","8":"0 tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K","8":"L G M N O w"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB","8":"I v IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B PC QC RC SC","8":"C qB AC TC rB"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB","8":"UC BC VC"},H:{"2":"oC"},I:{"1":"f tC uC","8":"tB I pC qC rC sC BC"},J:{"1":"A","8":"D"},K:{"1":"h","2":"A B","8":"C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"srcdoc attribute for iframes"};
    +module.exports={A:{A:{"2":"EC","8":"J D E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","8":"C K L G M N O"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC","8":"0 1 uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K","8":"L G M N O x"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B","8":"I w KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B RC SC TC UC","8":"C rB CC VC sB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B","8":"WC DC XC"},H:{"2":"qC"},I:{"1":"H vC wC","8":"uB I rC sC tC uC DC"},J:{"1":"A","8":"D"},K:{"1":"h","2":"A B","8":"C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"srcdoc attribute for iframes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js
    index c9debe45967b73..a76220f47f89ed 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imagecapture.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB EC FC","194":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","322":"TB UB VB WB XB YB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB PC QC RC SC qB AC TC rB","322":"GB HB IB JB KB LB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"194":"AD BD"}},B:5,C:"ImageCapture API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB GC HC","194":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","322":"UB VB WB XB YB ZB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB RC SC TC UC rB CC VC sB","322":"HB IB JB KB LB MB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"194":"CD DD"}},B:5,C:"ImageCapture API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js
    index 44bdbbd00218d7..10dd64180c38b6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ime.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","161":"B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A","161":"B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Input Method Editor API"};
    +module.exports={A:{A:{"2":"J D E F A EC","161":"B"},B:{"2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","161":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A","161":"B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Input Method Editor API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
    index 69feaafe37e80b..345982152446a1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/img-naturalwidth-naturalheight.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"naturalWidth & naturalHeight image properties"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"naturalWidth & naturalHeight image properties"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js
    index 7c9e7cbbbccabc..2ef8f98240c01d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/import-maps.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","194":"P Q R S T U V W X"},C:{"1":"u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n EC FC","322":"o p q r s t"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h","194":"lB mB nB oB pB P Q R S T U V W X"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"1":"nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB PC QC RC SC qB AC TC rB","194":"aB bB cB dB eB fB gB hB iB jB kB h lB mB"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Import maps"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","194":"P Q R S T U V W X"},C:{"1":"u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n GC HC","322":"o p q r s t"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h","194":"mB nB oB pB qB P Q R S T U V W X"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"1":"oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC TC UC rB CC VC sB","194":"bB cB dB eB fB gB hB iB jB kB lB h mB nB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Import maps"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js
    index 67709eb62aaeb9..940bb5b557e622 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/imports.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","8":"A B"},B:{"1":"P","2":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","8":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","8":"6 7 WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","72":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","2":"0 1 2 3 4 5 I v J D E F A B C K L G M N O w g x y z Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","66":"6 7 8 9 AB","72":"BB"},E:{"2":"I v HC zB IC","8":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","2":"F B C G M fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","66":"N O w g x","72":"y"},G:{"2":"zB UC BC VC WC","8":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"8":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I wC xC yC zC 0C 0B 1C 2C","2":"g 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"1":"AD","8":"BD"}},B:5,C:"HTML Imports"};
    +module.exports={A:{A:{"2":"J D E F EC","8":"A B"},B:{"1":"P","2":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","8":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 FC uB I w J D E F A B C K L G M N O x g y z GC HC","8":"7 8 XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","72":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","2":"0 1 2 3 4 5 6 I w J D E F A B C K L G M N O x g y z Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","66":"7 8 9 AB BB","72":"CB"},E:{"2":"I w JC 0B KC","8":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","2":"F B C G M gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","66":"N O x g y","72":"z"},G:{"2":"0B WC DC XC YC","8":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"8":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I yC zC 0C 1C 2C 1B 3C 4C","2":"g 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"1":"CD","8":"DD"}},B:5,C:"HTML Imports"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
    index a0a340b24772a3..7e2aa037dcadd8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indeterminate-checkbox.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","16":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB","16":"EC"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"indeterminate checkbox"};
    +module.exports={A:{A:{"1":"J D E F A B","16":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB","16":"GC"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 I w J D E F A B C K L G M N O x g y z"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"indeterminate checkbox"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js
    index 5b7ed0627331f8..0a7c65b6283900 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","132":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","33":"A B C K L G","36":"I v J D E F"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"A","8":"I v J D E F","33":"z","36":"B C K L G M N O w g x y"},E:{"1":"A B C K L G 0B qB rB 1B NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v J D HC zB IC JC","260":"E F KC LC","516":"MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F PC QC","8":"B C RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC VC WC XC","260":"E YC ZC aC","516":"mC"},H:{"2":"oC"},I:{"1":"f tC uC","8":"tB I pC qC rC sC BC"},J:{"1":"A","8":"D"},K:{"1":"h","2":"A","8":"B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"IndexedDB"};
    +module.exports={A:{A:{"2":"J D E F EC","132":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","33":"A B C K L G","36":"I w J D E F"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"A","8":"I w J D E F","33":"0","36":"B C K L G M N O x g y z"},E:{"1":"A B C K L G 1B rB sB 2B PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w J D JC 0B KC LC","260":"E F MC NC","516":"OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F RC SC","8":"B C TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC XC YC ZC","260":"E aC bC cC","516":"oC"},H:{"2":"qC"},I:{"1":"H vC wC","8":"uB I rC sC tC uC DC"},J:{"1":"A","8":"D"},K:{"1":"h","2":"A","8":"B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"IndexedDB"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js
    index b13f1a97e1b223..6f9b419b635427 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/indexeddb2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB EC FC","132":"KB LB MB","260":"NB OB PB QB"},D:{"1":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","132":"OB PB QB RB","260":"SB TB UB VB WB XB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB PC QC RC SC qB AC TC rB","132":"BB CB DB EB","260":"FB GB HB IB JB KB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC","16":"bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","260":"wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","260":"AD"}},B:2,C:"IndexedDB 2.0"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB GC HC","132":"LB MB NB","260":"OB PB QB RB"},D:{"1":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB","132":"PB QB RB SB","260":"TB UB VB WB XB YB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB RC SC TC UC rB CC VC sB","132":"CB DB EB FB","260":"GB HB IB JB KB LB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC","16":"dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","260":"yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","260":"CD"}},B:2,C:"IndexedDB 2.0"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js
    index 833dadfad55f2c..f196077af41e24 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/inline-block.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","4":"CC","132":"J D"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","36":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS inline-block"};
    +module.exports={A:{A:{"1":"E F A B","4":"EC","132":"J D"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","36":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS inline-block"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js
    index 1538dffd03826d..cd89e0f3ee3a6a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/innertext.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","16":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","16":"F"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"HTMLElement.innerText"};
    +module.exports={A:{A:{"1":"J D E F A B","16":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","16":"F"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"HTMLElement.innerText"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
    index 056613d265e183..865b7117862834 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-autocomplete-onoff.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A CC","132":"B"},B:{"132":"C K L G M N O","260":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","516":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 N O w g x y z","2":"I v J D E F A B C K L G M","132":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB","260":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"J IC JC","2":"I v HC zB","2052":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"zB UC BC","1025":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1025":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2052":"A B"},O:{"1025":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"260":"1B"},R:{"1":"9C"},S:{"516":"AD BD"}},B:1,C:"autocomplete attribute: on & off values"};
    +module.exports={A:{A:{"1":"J D E F A EC","132":"B"},B:{"132":"C K L G M N O","260":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 FC uB I w J D E F A B C K L G M N O x g y z GC HC","516":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 N O x g y z","2":"I w J D E F A B C K L G M","132":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB","260":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"J KC LC","2":"I w JC 0B","2052":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"0B WC DC","1025":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1025":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2052":"A B"},O:{"1025":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"260":"2B"},R:{"1":"BD"},S:{"516":"CD DD"}},B:1,C:"autocomplete attribute: on & off values"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js
    index c5cd8af9144e78..67ec225b8cc43f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-color.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F G M PC QC RC SC"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC","129":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"Color input type"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F G M RC SC TC UC"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC","129":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"Color input type"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js
    index 0c9c6b4e5e39b1..427fb465942993 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-datetime.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC","1090":"TB UB VB WB","2052":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b","4100":"c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w","2052":"0 g x y z"},E:{"2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B","4100":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"zB UC BC","260":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB pC qC rC","514":"I sC BC"},J:{"1":"A","2":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"4100":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2052":"AD BD"}},B:1,C:"Date and time input types"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC","1090":"UB VB WB XB","2052":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b","4100":"c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x","2052":"0 1 g y z"},E:{"2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B","4100":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"0B WC DC","260":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB rC sC tC","514":"I uC DC"},J:{"1":"A","2":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"4100":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2052":"CD DD"}},B:1,C:"Date and time input types"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js
    index 0631be15289467..9a8575636bb47e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-email-tel-url.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","132":"pC qC rC"},J:{"1":"A","132":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Email, telephone & URL input types"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","132":"rC sC tC"},J:{"1":"A","132":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Email, telephone & URL input types"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js
    index 14dc09bc55ba7c..c05106820c4c62 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-event.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","2561":"A B","2692":"F"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2561":"C K L G M N O"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC","1537":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB FC","1796":"tB EC"},D:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L","1025":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB","1537":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v J HC zB","1025":"D E F A B C JC KC LC 0B qB","1537":"IC","4097":"K rB"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","16":"F B C PC QC RC SC qB AC","260":"TC","1025":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","1537":"G M N O w g x"},G:{"1":"iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC","1025":"E YC ZC aC bC cC dC eC fC","1537":"VC WC XC","4097":"gC hC"},H:{"2":"oC"},I:{"16":"pC qC","1025":"f uC","1537":"tB I rC sC BC tC"},J:{"1025":"A","1537":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2561":"A B"},O:{"1":"vC"},P:{"1025":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","1537":"AD"}},B:1,C:"input event"};
    +module.exports={A:{A:{"2":"J D E EC","2561":"A B","2692":"F"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2561":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC","1537":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB HC","1796":"uB GC"},D:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L","1025":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB","1537":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w J JC 0B","1025":"D E F A B C LC MC NC 1B rB","1537":"KC","4097":"K sB"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","16":"F B C RC SC TC UC rB CC","260":"VC","1025":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","1537":"G M N O x g y"},G:{"1":"kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC","1025":"E aC bC cC dC eC fC gC hC","1537":"XC YC ZC","4097":"iC jC"},H:{"2":"qC"},I:{"16":"rC sC","1025":"H wC","1537":"uB I tC uC DC vC"},J:{"1025":"A","1537":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2561":"A B"},O:{"1":"xC"},P:{"1025":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","1537":"CD"}},B:1,C:"input event"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js
    index 0e28c851bf708a..8ffe690c10eeaa 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-accept.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","132":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I","16":"0 1 v J D E x y z","132":"F A B C K L G M N O w g"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","132":"J D E F A B JC KC LC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"2":"WC XC","132":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","514":"zB UC BC VC"},H:{"2":"oC"},I:{"2":"pC qC rC","260":"tB I sC BC","514":"f tC uC"},J:{"132":"A","260":"D"},K:{"2":"A B C qB AC rB","514":"h"},L:{"260":"H"},M:{"2":"H"},N:{"514":"A","1028":"B"},O:{"2":"vC"},P:{"260":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"260":"1B"},R:{"260":"9C"},S:{"1":"AD BD"}},B:1,C:"accept attribute for file input"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","132":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I","16":"0 1 2 w J D E y z","132":"F A B C K L G M N O x g"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","132":"J D E F A B LC MC NC 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"2":"YC ZC","132":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","514":"0B WC DC XC"},H:{"2":"qC"},I:{"2":"rC sC tC","260":"uB I uC DC","514":"H vC wC"},J:{"132":"A","260":"D"},K:{"2":"A B C rB CC sB","514":"h"},L:{"260":"H"},M:{"2":"f"},N:{"514":"A","1028":"B"},O:{"2":"xC"},P:{"260":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"260":"2B"},R:{"260":"BD"},S:{"1":"CD DD"}},B:1,C:"accept attribute for file input"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js
    index c8c277d7011131..6d94e711737998 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-directory.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB EC FC"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Directory selection from file input"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB GC HC"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 I w J D E F A B C K L G M N O x g y z"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Directory selection from file input"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js
    index f66ccfa48bd5a3..706366006b12b7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-file-multiple.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","2":"F PC QC RC"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC"},H:{"130":"oC"},I:{"130":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"130":"A B C h qB AC rB"},L:{"132":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"130":"vC"},P:{"130":"I","132":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"132":"1B"},R:{"132":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"Multiple file selection"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","2":"F RC SC TC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC"},H:{"130":"qC"},I:{"130":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"130":"A B C h rB CC sB"},L:{"132":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"130":"xC"},P:{"130":"I","132":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"132":"2B"},R:{"132":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"Multiple file selection"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js
    index 6d4fa3527159b2..59f8cfbf6321c6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-inputmode.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M EC FC","4":"N O w g","194":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d"},D:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","66":"WB XB YB uB ZB vB aB bB cB dB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB PC QC RC SC qB AC TC rB","66":"JB KB LB MB NB OB PB QB RB SB"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"194":"AD BD"}},B:1,C:"inputmode attribute"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M GC HC","4":"N O x g","194":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d"},D:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","66":"XB YB ZB vB aB wB bB cB dB eB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB RC SC TC UC rB CC VC sB","66":"KB LB MB NB OB PB QB RB SB TB"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"194":"CD DD"}},B:1,C:"inputmode attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js
    index 01951a4f757175..8bd420b79c7788 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-minlength.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB EC FC"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"Minimum length attribute for input fields"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB GC HC"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"Minimum length attribute for input fields"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js
    index d20a0b985eba87..cdc18090f97275 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-number.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","129":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K","1025":"L G M N O"},C:{"2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","513":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"388":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB pC qC rC","388":"I f sC BC tC uC"},J:{"2":"D","388":"A"},K:{"1":"A B C qB AC rB","388":"h"},L:{"388":"H"},M:{"641":"H"},N:{"388":"A B"},O:{"388":"vC"},P:{"388":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"388":"1B"},R:{"388":"9C"},S:{"513":"AD BD"}},B:1,C:"Number input type"};
    +module.exports={A:{A:{"2":"J D E F EC","129":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K","1025":"L G M N O"},C:{"2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC","513":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"388":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB rC sC tC","388":"I H uC DC vC wC"},J:{"2":"D","388":"A"},K:{"1":"A B C rB CC sB","388":"h"},L:{"388":"H"},M:{"641":"f"},N:{"388":"A B"},O:{"388":"xC"},P:{"388":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"388":"2B"},R:{"388":"BD"},S:{"513":"CD DD"}},B:1,C:"Number input type"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js
    index b415bc601b1d2d..8080fdc9c6e960 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-pattern.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v","388":"J D E F A IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC","388":"E VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f uC","2":"tB I pC qC rC sC BC tC"},J:{"1":"A","2":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Pattern attribute for input fields"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w","388":"J D E F A KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC","388":"E XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H wC","2":"uB I rC sC tC uC DC vC"},J:{"1":"A","2":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Pattern attribute for input fields"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js
    index c8d0510ed17a49..d493578ba655db 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-placeholder.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","132":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e AC TC rB","2":"F PC QC RC SC","132":"B qB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB f pC qC rC BC tC uC","4":"I sC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"input placeholder attribute"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","132":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e CC VC sB","2":"F RC SC TC UC","132":"B rB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB H rC sC tC DC vC wC","4":"I uC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"input placeholder attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js
    index d1b780b51d5fa4..118b6224433918 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-range.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x y EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"f BC tC uC","4":"tB I pC qC rC sC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Range input type"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"H DC vC wC","4":"uB I rC sC tC uC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Range input type"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js
    index 7816f356715b70..76b3e10c1b8011 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-search.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","129":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K L G M N O"},C:{"2":"DC tB EC FC","129":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"0 1 I v J D E F A B C K L x y z","129":"G M N O w g"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F PC QC RC SC","16":"B qB AC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"129":"oC"},I:{"1":"f tC uC","16":"pC qC","129":"tB I rC sC BC"},J:{"1":"D","129":"A"},K:{"1":"C h","2":"A","16":"B qB AC","129":"rB"},L:{"1":"H"},M:{"129":"H"},N:{"129":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"129":"AD BD"}},B:1,C:"Search input type"};
    +module.exports={A:{A:{"2":"J D E F EC","129":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K L G M N O"},C:{"2":"FC uB GC HC","129":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"0 1 2 I w J D E F A B C K L y z","129":"G M N O x g"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F RC SC TC UC","16":"B rB CC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"129":"qC"},I:{"1":"H vC wC","16":"rC sC","129":"uB I tC uC DC"},J:{"1":"D","129":"A"},K:{"1":"C h","2":"A","16":"B rB CC","129":"sB"},L:{"1":"H"},M:{"129":"f"},N:{"129":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"129":"CD DD"}},B:1,C:"Search input type"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js
    index d98b453d729ec3..affbc0d7626684 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/input-selection.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","16":"F PC QC RC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Selection controls for input & textarea"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","16":"F RC SC TC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Selection controls for input & textarea"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js
    index d5b65da095f48b..f950d9279eb43d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insert-adjacent.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","16":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","16":"F"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()"};
    +module.exports={A:{A:{"1":"J D E F A B","16":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","16":"F"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Element.insertAdjacentElement() & Element.insertAdjacentText()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
    index 572fc9eaac6b75..694a8a2588c54d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/insertadjacenthtml.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","16":"CC","132":"J D E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","16":"F PC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Element.insertAdjacentHTML()"};
    +module.exports={A:{A:{"1":"A B","16":"EC","132":"J D E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","16":"F RC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Element.insertAdjacentHTML()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js
    index 19f7063c07e972..f06cd8dc060698 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/internationalization.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x y z"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"Internationalization API"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 I w J D E F A B C K L G M N O x g y z"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"Internationalization API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js
    index 2b89811d73059f..742d42fa0fe9d4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver-v2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"IntersectionObserver V2"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"IntersectionObserver V2"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js
    index 81012dfc39d7c5..a46cd340888c0e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intersectionobserver.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O","2":"C K L","516":"G","1025":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC","194":"SB TB UB"},D:{"1":"YB uB ZB vB aB bB cB","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","516":"RB SB TB UB VB WB XB","1025":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB PC QC RC SC qB AC TC rB","516":"EB FB GB HB IB JB KB","1025":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","1025":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","1025":"h"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","516":"wC xC"},Q:{"1025":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"IntersectionObserver"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O","2":"C K L","516":"G","1025":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB GC HC","194":"TB UB VB"},D:{"1":"ZB vB aB wB bB cB dB","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","516":"SB TB UB VB WB XB YB","1025":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB"},F:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB RC SC TC UC rB CC VC sB","516":"FB GB HB IB JB KB LB","1025":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","1025":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","1025":"h"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","516":"yC zC"},Q:{"1025":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"IntersectionObserver"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js
    index a6cda0db1d6098..0d85945bc163ed 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intl-pluralrules.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N","130":"O"},C:{"1":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB EC FC"},D:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB PC QC RC SC qB AC TC rB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"Intl.PluralRules API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N","130":"O"},C:{"1":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB GC HC"},D:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB sB"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RC SC TC UC rB CC VC sB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"Intl.PluralRules API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js
    index 2339c0d3fd7f77..0fe111bf20cd14 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/intrinsic-width.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","1025":"d e i j k l m n o p q r s t u f H","1537":"P Q R S T U V W X Y Z a b c"},C:{"2":"DC","932":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB EC FC","2308":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"I v J D E F A B C K L G M N O w g x","545":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB","1025":"d e i j k l m n o p q r s t u f H xB yB GC","1537":"MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J HC zB IC","516":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B","548":"F A LC 0B","676":"D E JC KC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","513":"AB","545":"0 1 2 3 4 5 6 7 8 G M N O w g x y z","1025":"e","1537":"9 BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d"},G:{"1":"sB 6B 7B 8B 9B","2":"zB UC BC VC WC","516":"lC mC nC 2B 3B 4B 5B","548":"ZC aC bC cC dC eC fC gC hC iC jC kC","676":"E XC YC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","545":"tC uC","1025":"f"},J:{"2":"D","545":"A"},K:{"2":"A B C qB AC rB","1025":"h"},L:{"1025":"H"},M:{"2308":"H"},N:{"2":"A B"},O:{"1537":"vC"},P:{"545":"I","1025":"g 6C 7C 8C","1537":"wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB"},Q:{"1537":"1B"},R:{"1537":"9C"},S:{"932":"AD","2308":"BD"}},B:5,C:"Intrinsic & Extrinsic Sizing"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","1025":"d e i j k l m n o p q r s t u v f H","1537":"P Q R S T U V W X Y Z a b c"},C:{"2":"FC","932":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB GC HC","2308":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"I w J D E F A B C K L G M N O x g y","545":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB","1025":"d e i j k l m n o p q r s t u v f H yB zB IC","1537":"NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC","516":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B","548":"F A NC 1B","676":"D E LC MC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","513":"BB","545":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z","1025":"e","1537":"AB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d"},G:{"1":"tB 7B 8B 9B AC BC","2":"0B WC DC XC YC","516":"nC oC pC 3B 4B 5B 6B","548":"bC cC dC eC fC gC hC iC jC kC lC mC","676":"E ZC aC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","545":"vC wC","1025":"H"},J:{"2":"D","545":"A"},K:{"2":"A B C rB CC sB","1025":"h"},L:{"1025":"H"},M:{"2308":"f"},N:{"2":"A B"},O:{"1537":"xC"},P:{"545":"I","1025":"g 8C 9C AD","1537":"yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB"},Q:{"1537":"2B"},R:{"1537":"BD"},S:{"932":"CD","2308":"DD"}},B:5,C:"Intrinsic & Extrinsic Sizing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js
    index 1221cdf3eb22c0..74e0f883bb636a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpeg2000.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","129":"v IC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"JPEG 2000 image format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","129":"w KC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"JPEG 2000 image format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js
    index 32cc380c88c3b9..0352146f75a605 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxl.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z H","578":"a b c d e i j k l m n o p q r s t u f"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y EC FC","322":"Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z H xB yB GC","194":"a b c d e i j k l m n o p q r s t u f"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB PC QC RC SC qB AC TC rB","194":"oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"JPEG XL image format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z f H","578":"a b c d e i j k l m n o p q r s t u v"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y GC HC","322":"Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z f H yB zB IC","194":"a b c d e i j k l m n o p q r s t u v"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB RC SC TC UC rB CC VC sB","194":"pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"JPEG XL image format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js
    index cb74583768e3b0..7f7cbf2aba19ae 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/jpegxr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"1":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"JPEG XR image format"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"1":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"JPEG XR image format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
    index dc5a553baf9c13..47d5a477b11619 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/js-regexp-lookbehind.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB EC FC"},D:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PC QC RC SC qB AC TC rB"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"Lookbehind in JS regular expressions"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB GC HC"},D:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB RC SC TC UC rB CC VC sB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"Lookbehind in JS regular expressions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js
    index 4d6698a79680bc..8b16a148393cda 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/json.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D CC","129":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"JSON parsing"};
    +module.exports={A:{A:{"1":"F A B","2":"J D EC","129":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"JSON parsing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
    index ff5cf6023ae640..c3d1efe8c59b4a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/justify-content-space-evenly.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G","132":"M N O"},C:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC"},D:{"1":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","132":"XB YB uB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC","132":"0B"},F:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB PC QC RC SC qB AC TC rB","132":"KB LB MB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC","132":"cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC","132":"yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","132":"AD"}},B:5,C:"CSS justify-content: space-evenly"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G","132":"M N O"},C:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB GC HC"},D:{"1":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","132":"YB ZB vB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC","132":"1B"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB RC SC TC UC rB CC VC sB","132":"LB MB NB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC","132":"eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC","132":"0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","132":"CD"}},B:5,C:"CSS justify-content: space-evenly"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
    index 827443c74d42a2..0ec7a29790b4b1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/kerning-pairs-ligatures.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"pC qC rC","132":"tB I sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:7,C:"High-quality kerning pairs & ligatures"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"rC sC tC","132":"uB I uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:7,C:"High-quality kerning pairs & ligatures"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
    index 97aa1af36befa6..5d589ee0a70049 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-charcode.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","16":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC","16":"C"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"h rB","2":"A B qB AC","16":"C"},L:{"1":"H"},M:{"130":"H"},N:{"130":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:7,C:"KeyboardEvent.charCode"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","16":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC","16":"C"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"h sB","2":"A B rB CC","16":"C"},L:{"1":"H"},M:{"130":"f"},N:{"130":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:7,C:"KeyboardEvent.charCode"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js
    index 2f100b7cf6fa2f..2d7e4777635b9a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-code.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EC FC"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB","194":"IB JB KB LB MB NB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","194":"5 6 7 8 9 AB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"194":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I","194":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"194":"9C"},S:{"1":"AD BD"}},B:5,C:"KeyboardEvent.code"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB GC HC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB","194":"JB KB LB MB NB OB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O x g y z RC SC TC UC rB CC VC sB","194":"6 7 8 9 AB BB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"194":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I","194":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"194":"BD"},S:{"1":"CD DD"}},B:5,C:"KeyboardEvent.code"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
    index 20d6fe5ef37f62..bbf6d2cca66c63 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-getmodifierstate.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B G M PC QC RC SC qB AC TC","16":"C"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h rB","2":"A B qB AC","16":"C"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"KeyboardEvent.getModifierState()"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 I w J D E F A B C K L G M N O x g y z"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B G M RC SC TC UC rB CC VC","16":"C"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h sB","2":"A B rB CC","16":"C"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"KeyboardEvent.getModifierState()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js
    index 3a24a7cebe0398..a3fe554c79cc29 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-key.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","260":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x y EC FC","132":"0 1 2 3 4 z"},D:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"0 1 2 3 4 5 6 7 8 9 F B G M N O w g x y z AB BB CB DB PC QC RC SC qB AC TC","16":"C"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"1":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h rB","2":"A B qB AC","16":"C"},L:{"1":"H"},M:{"1":"H"},N:{"260":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"KeyboardEvent.key"};
    +module.exports={A:{A:{"2":"J D E EC","260":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y z GC HC","132":"0 1 2 3 4 5"},D:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"0 1 2 3 4 5 6 7 8 9 F B G M N O x g y z AB BB CB DB EB RC SC TC UC rB CC VC","16":"C"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"1":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h sB","2":"A B rB CC","16":"C"},L:{"1":"H"},M:{"1":"f"},N:{"260":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"KeyboardEvent.key"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js
    index 11c434fa26eb71..07c2cc2f004d03 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-location.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"0 1 2 3 4 5 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"J HC zB","132":"I v IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC","16":"C","132":"G M"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC","132":"VC WC XC"},H:{"2":"oC"},I:{"1":"f tC uC","16":"pC qC","132":"tB I rC sC BC"},J:{"132":"D A"},K:{"1":"h rB","2":"A B qB AC","16":"C"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"KeyboardEvent.location"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"0 1 2 3 4 5 6 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"J JC 0B","132":"I w KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC","16":"C","132":"G M"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC","132":"XC YC ZC"},H:{"2":"qC"},I:{"1":"H vC wC","16":"rC sC","132":"uB I tC uC DC"},J:{"132":"D A"},K:{"1":"h sB","2":"A B rB CC","16":"C"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"KeyboardEvent.location"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js
    index 93aad8cbc2cc63..adb0dbf28f3d4f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/keyboardevent-which.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","16":"v"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","16":"F PC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC","16":"pC qC","132":"tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"132":"H"},M:{"132":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"2":"I","132":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"132":"9C"},S:{"1":"AD BD"}},B:7,C:"KeyboardEvent.which"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","16":"w"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","16":"F RC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC","16":"rC sC","132":"vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"132":"H"},M:{"132":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"2":"I","132":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"132":"BD"},S:{"1":"CD DD"}},B:7,C:"KeyboardEvent.which"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js
    index 1b283d3901d095..0005b3d91698df 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/lazyload.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"1":"B","2":"A"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Resource Hints: Lazyload"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"1":"B","2":"A"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Resource Hints: Lazyload"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js
    index d135e4cc91d7f6..5b8661749f4a6f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/let.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","2052":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","194":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O","322":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB","516":"HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC","1028":"A 0B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","322":"0 1 2 3 G M N O w g x y z","516":"4 5 6 7 8 9 AB BB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC","1028":"bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","516":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"let"};
    +module.exports={A:{A:{"2":"J D E F A EC","2052":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","194":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O","322":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB","516":"IB JB KB LB MB NB OB PB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC","1028":"A 1B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","322":"0 1 2 3 4 G M N O x g y z","516":"5 6 7 8 9 AB BB CB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC","1028":"dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","516":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"let"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js
    index 6ead79d799270b..60a429cd57f2db 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-png.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","130":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC"},H:{"130":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D","130":"A"},K:{"1":"h","130":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"130":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"PNG favicons"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","130":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC"},H:{"130":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D","130":"A"},K:{"1":"h","130":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"130":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"PNG favicons"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js
    index 8c21f9381e406b..a23680d0047d4b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-icon-svg.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P","1537":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB EC FC","260":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB","513":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","1537":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB UB VB WB XB YB ZB aB bB cB dB eB PC QC RC SC qB AC TC rB","1537":"fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","130":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC"},H:{"130":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D","130":"A"},K:{"130":"A B C qB AC rB","1537":"h"},L:{"1537":"H"},M:{"2":"H"},N:{"130":"A B"},O:{"2":"vC"},P:{"2":"I wC xC yC zC 0C 0B 1C 2C","1537":"g 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"1537":"9C"},S:{"513":"AD BD"}},B:1,C:"SVG favicons"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P","1537":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB GC HC","260":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB","513":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","1537":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB VB WB XB YB ZB aB bB cB dB eB fB RC SC TC UC rB CC VC sB","1537":"gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","130":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC"},H:{"130":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D","130":"A"},K:{"130":"A B C rB CC sB","1537":"h"},L:{"1537":"H"},M:{"2":"f"},N:{"130":"A B"},O:{"2":"xC"},P:{"2":"I yC zC 0C 1C 2C 1B 3C 4C","1537":"g 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"1537":"BD"},S:{"513":"CD DD"}},B:1,C:"SVG favicons"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
    index 290c4e0112414f..ea06c865047f42 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-dns-prefetch.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E CC","132":"F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB","260":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"16":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"16":"tB I f pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","16":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","16":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Resource Hints: dns-prefetch"};
    +module.exports={A:{A:{"1":"A B","2":"J D E EC","132":"F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB","260":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"16":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"16":"uB I H rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","16":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","16":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Resource Hints: dns-prefetch"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
    index 7b51eec65fd59a..b8ee9eaef6813e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-modulepreload.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB"},E:{"1":"OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:1,C:"Resource Hints: modulepreload"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB"},E:{"1":"QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:1,C:"Resource Hints: modulepreload"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
    index 9c180a6f41189b..581a883bd2a8cf 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preconnect.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L","260":"G M N O"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","129":"FB"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"16":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Resource Hints: preconnect"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L","260":"G M N O"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","129":"GB"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"16":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Resource Hints: preconnect"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
    index d0d96380f4dcca..bb35c4b74caeac 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prefetch.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D"},E:{"2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB","194":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC","194":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"I f tC uC","2":"tB pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Resource Hints: prefetch"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D"},E:{"2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB","194":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC","194":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"I H vC wC","2":"uB rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Resource Hints: prefetch"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js
    index 836b0b39f6c915..bce23f8895be67 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-preload.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M","1028":"N O"},C:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB EC FC","132":"WB","578":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T"},D:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","322":"B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC","322":"dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:4,C:"Resource Hints: preload"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M","1028":"N O"},C:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB GC HC","132":"XB","578":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T"},D:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","322":"B"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC","322":"fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:4,C:"Resource Hints: preload"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js
    index bfffdd16bebd32..3fc0dbf333f0ba 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/link-rel-prerender.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"Resource Hints: prerender"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"Resource Hints: prerender"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
    index b97ef138ad1e6c..4be41e88065bf5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/loading-lazy-attr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB EC FC","132":"mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB","66":"mB nB"},E:{"1":"9B OC","2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB","322":"L G 1B MC NC 2B","580":"3B 4B 5B sB 6B 7B 8B"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB PC QC RC SC qB AC TC rB","66":"aB bB"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC","322":"kC lC mC nC 2B","580":"3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"132":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD","132":"BD"}},B:1,C:"Lazy loading via attribute for images & iframes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB GC HC","132":"nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB","66":"nB oB"},E:{"1":"AC BC QC","2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB","322":"L G 2B OC PC 3B","580":"4B 5B 6B tB 7B 8B 9B"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC TC UC rB CC VC sB","66":"bB cB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC","322":"mC nC oC pC 3B","580":"4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"132":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD","132":"DD"}},B:1,C:"Lazy loading via attribute for images & iframes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js
    index 145c24be605ea6..cb78398479472a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/localecompare.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","16":"CC","132":"J D E F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","132":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"I v J D E F A B C K L G M N O w g x y z"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","132":"I v J D E F HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F B C PC QC RC SC qB AC TC","132":"rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"E zB UC BC VC WC XC YC ZC aC"},H:{"132":"oC"},I:{"1":"f tC uC","132":"tB I pC qC rC sC BC"},J:{"132":"D A"},K:{"1":"h","16":"A B C qB AC","132":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","132":"A"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","132":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","4":"AD"}},B:6,C:"localeCompare()"};
    +module.exports={A:{A:{"1":"B","16":"EC","132":"J D E F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","132":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"0 I w J D E F A B C K L G M N O x g y z"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","132":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F B C RC SC TC UC rB CC VC","132":"sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"E 0B WC DC XC YC ZC aC bC cC"},H:{"132":"qC"},I:{"1":"H vC wC","132":"uB I rC sC tC uC DC"},J:{"132":"D A"},K:{"1":"h","16":"A B C rB CC","132":"sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","132":"A"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","132":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","4":"CD"}},B:6,C:"localeCompare()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js
    index ff24d1f1e9b922..aaaa5bbebcf578 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/magnetometer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","194":"YB uB ZB vB aB bB cB dB eB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"194":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:4,C:"Magnetometer"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","194":"ZB vB aB wB bB cB dB eB fB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"194":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:4,C:"Magnetometer"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js
    index 5ee9620e0f4f11..c08ed7449759ba 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchesselector.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","36":"F A B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","36":"C K L"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC","36":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z FC"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","36":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","36":"v J D IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B PC QC RC SC qB","36":"C G M N O w g AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB","36":"UC BC VC WC XC"},H:{"2":"oC"},I:{"1":"f","2":"pC","36":"tB I qC rC sC BC tC uC"},J:{"36":"D A"},K:{"1":"h","2":"A B","36":"C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"36":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","36":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"matches() DOM method"};
    +module.exports={A:{A:{"2":"J D E EC","36":"F A B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","36":"C K L"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC","36":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB HC"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","36":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","36":"w J D KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B RC SC TC UC rB","36":"C G M N O x g CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B","36":"WC DC XC YC ZC"},H:{"2":"qC"},I:{"1":"H","2":"rC","36":"uB I sC tC uC DC vC wC"},J:{"36":"D A"},K:{"1":"h","2":"A B","36":"C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"36":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","36":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"matches() DOM method"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js
    index 01bc5f24b568b3..86790d4536731a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/matchmedia.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B C PC QC RC SC qB AC TC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"1":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"matchMedia"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B C RC SC TC UC rB CC VC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"1":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"matchMedia"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js
    index e94d977e1e8619..e75c2cf4416078 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mathml.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"F A B CC","8":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S T U V W X Y Z a b c d e i","584":"j k l m n o p q r s t u","1025":"f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","129":"DC tB EC FC"},D:{"1":"0","8":"1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i","584":"j k l m n o p q r s t u","1025":"f H xB yB GC"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","260":"I v J D E F HC zB IC JC KC LC"},F:{"2":"F","8":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB","584":"S T U V W X Y Z a b c d","1025":"e","2052":"B C PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC"},H:{"8":"oC"},I:{"8":"tB I pC qC rC sC BC tC uC","1025":"f"},J:{"1":"A","8":"D"},K:{"8":"A B C h qB AC rB"},L:{"1025":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"8":"vC"},P:{"8":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"8":"1B"},R:{"8":"9C"},S:{"1":"AD BD"}},B:2,C:"MathML"};
    +module.exports={A:{A:{"2":"F A B EC","8":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S T U V W X Y Z a b c d e i","584":"j k l m n o p q r s t u","1025":"v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","129":"FC uB GC HC"},D:{"1":"1","8":"0 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i","584":"j k l m n o p q r s t u","1025":"v f H yB zB IC"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","260":"I w J D E F JC 0B KC LC MC NC"},F:{"2":"F","8":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB","584":"S T U V W X Y Z a b c d","1025":"e","2052":"B C RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC"},H:{"8":"qC"},I:{"8":"uB I rC sC tC uC DC vC wC","1025":"H"},J:{"1":"A","8":"D"},K:{"8":"A B C h rB CC sB"},L:{"1025":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"8":"xC"},P:{"8":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"8":"2B"},R:{"8":"BD"},S:{"1":"CD DD"}},B:2,C:"MathML"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js
    index 15df5e9ca58829..b3926d866fcd9a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/maxlength.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","16":"CC","900":"J D E F"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","1025":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","900":"DC tB EC FC","1025":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"v HC","900":"I zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F","132":"B C PC QC RC SC qB AC TC rB"},G:{"1":"UC BC VC WC XC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB","2052":"E YC"},H:{"132":"oC"},I:{"1":"tB I rC sC BC tC uC","16":"pC qC","4097":"f"},J:{"1":"D A"},K:{"132":"A B C qB AC rB","4097":"h"},L:{"4097":"H"},M:{"4097":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"4097":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1025":"AD BD"}},B:1,C:"maxlength attribute for input and textarea elements"};
    +module.exports={A:{A:{"1":"A B","16":"EC","900":"J D E F"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","1025":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","900":"FC uB GC HC","1025":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"w JC","900":"I 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F","132":"B C RC SC TC UC rB CC VC sB"},G:{"1":"WC DC XC YC ZC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B","2052":"E aC"},H:{"132":"qC"},I:{"1":"uB I tC uC DC vC wC","16":"rC sC","4097":"H"},J:{"1":"D A"},K:{"132":"A B C rB CC sB","4097":"h"},L:{"4097":"H"},M:{"4097":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"4097":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1025":"CD DD"}},B:1,C:"maxlength attribute for input and textarea elements"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js
    index e31359f49eab6d..fabd95a3a4d486 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate-override.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M EC FC","33":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB PC QC RC SC qB AC TC rB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"I v J HC zB IC JC OC","33":"D E F A KC LC 0B"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC","33":"E XC YC ZC aC bC cC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"}},B:6,C:"isolate-override from unicode-bidi"};
    +module.exports={A:{D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M GC HC","33":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB RC SC TC UC rB CC VC sB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"I w J JC 0B KC LC QC","33":"D E F A MC NC 1B"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC","33":"E ZC aC bC cC dC eC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"}},B:6,C:"isolate-override from unicode-bidi"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js
    index 631beaa58ab70f..384899ddc90ab8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-isolate.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F EC FC","33":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"I v HC zB IC OC","33":"J D E F A JC KC LC 0B"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"E WC XC YC ZC aC bC cC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"}},B:6,C:"isolate from unicode-bidi"};
    +module.exports={A:{D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F GC HC","33":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"I w JC 0B KC QC","33":"J D E F A LC MC NC 1B"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"E YC ZC aC bC cC dC eC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"}},B:6,C:"isolate from unicode-bidi"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js
    index c8a1c44c8ec878..0e2896387b59b7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-css-unicode-bidi-plaintext.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F EC FC","33":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB PC QC RC SC qB AC TC rB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"I v HC zB IC OC","33":"J D E F A JC KC LC 0B"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"E WC XC YC ZC aC bC cC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"}},B:6,C:"plaintext from unicode-bidi"};
    +module.exports={A:{D:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F GC HC","33":"0 1 2 3 4 5 6 7 8 9 A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB RC SC TC UC rB CC VC sB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"I w JC 0B KC QC","33":"J D E F A LC MC NC 1B"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"E YC ZC aC bC cC dC eC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"}},B:6,C:"plaintext from unicode-bidi"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js
    index e8c120c1dc968d..f671e64a07b815 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-color.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB PC QC RC SC qB AC TC rB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"I v J D HC zB IC JC KC OC","33":"E F A B C LC 0B qB"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","33":"E YC ZC aC bC cC dC eC fC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"}},B:6,C:"text-decoration-color property"};
    +module.exports={A:{D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB RC SC TC UC rB CC VC sB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"I w J D JC 0B KC LC MC QC","33":"E F A B C NC 1B rB"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","33":"E aC bC cC dC eC fC gC hC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"}},B:6,C:"text-decoration-color property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js
    index 14aa8a397a8c89..eb8577e2ef144f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-line.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB PC QC RC SC qB AC TC rB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"I v J D HC zB IC JC KC OC","33":"E F A B C LC 0B qB"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","33":"E YC ZC aC bC cC dC eC fC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"}},B:6,C:"text-decoration-line property"};
    +module.exports={A:{D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB RC SC TC UC rB CC VC sB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"I w J D JC 0B KC LC MC QC","33":"E F A B C NC 1B rB"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","33":"E aC bC cC dC eC fC gC hC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"}},B:6,C:"text-decoration-line property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js
    index 1e380cffb137a2..26490e5a486d07 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-shorthand.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB PC QC RC SC qB AC TC rB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"2":"I v J D HC zB IC JC KC OC","33":"E F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B"},G:{"2":"zB UC BC VC WC XC","33":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"}},B:6,C:"text-decoration shorthand property"};
    +module.exports={A:{D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB RC SC TC UC rB CC VC sB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"2":"I w J D JC 0B KC LC MC QC","33":"E F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},G:{"2":"0B WC DC XC YC ZC","33":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"}},B:6,C:"text-decoration shorthand property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js
    index 54130334649a77..3ccc8636288a3a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mdn-text-decoration-style.js
    @@ -1 +1 @@
    -module.exports={A:{D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB"},M:{"1":"H"},A:{"2":"J D E F A B CC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB PC QC RC SC qB AC TC rB"},K:{"1":"h","2":"A B C qB AC rB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"I v J D HC zB IC JC KC OC","33":"E F A B C LC 0B qB"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","33":"E YC ZC aC bC cC dC eC fC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"}},B:6,C:"text-decoration-style property"};
    +module.exports={A:{D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},L:{"1":"H"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC","33":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB"},M:{"1":"f"},A:{"2":"J D E F A B EC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB RC SC TC UC rB CC VC sB"},K:{"1":"h","2":"A B C rB CC sB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"I w J D JC 0B KC LC MC QC","33":"E F A B C NC 1B rB"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","33":"E aC bC cC dC eC fC gC hC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"}},B:6,C:"text-decoration-style property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js
    index 452a54fedbd12d..db40f7f5c346f3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/media-fragments.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","132":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"I v J D E F A B C K L G M N","132":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v HC zB IC","132":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"zB UC BC VC WC XC","132":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","132":"f tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","132":"h"},L:{"132":"H"},M:{"132":"H"},N:{"132":"A B"},O:{"132":"vC"},P:{"2":"I wC","132":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"132":"1B"},R:{"132":"9C"},S:{"132":"AD BD"}},B:2,C:"Media Fragments"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB GC HC","132":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"I w J D E F A B C K L G M N","132":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w JC 0B KC","132":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"0B WC DC XC YC ZC","132":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","132":"H vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","132":"h"},L:{"132":"H"},M:{"132":"f"},N:{"132":"A B"},O:{"132":"xC"},P:{"2":"I yC","132":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"132":"2B"},R:{"132":"BD"},S:{"132":"CD DD"}},B:2,C:"Media Fragments"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
    index f0648308437c0b..660bbfbbbfc409 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediacapture-fromelement.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB EC FC","260":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","324":"RB SB TB UB VB WB XB YB uB ZB vB"},E:{"2":"I v J D E F A HC zB IC JC KC LC 0B","132":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB","324":"CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"260":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","132":"wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"260":"AD BD"}},B:5,C:"Media Capture from DOM Elements API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB GC HC","260":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","324":"SB TB UB VB WB XB YB ZB vB aB wB"},E:{"2":"I w J D E F A JC 0B KC LC MC NC 1B","132":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB","324":"DB EB FB GB HB IB JB KB LB MB NB OB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"260":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","132":"yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"260":"CD DD"}},B:5,C:"Media Capture from DOM Elements API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js
    index 2080b01a958c78..c96982f472ba31 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediarecorder.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB","194":"NB OB"},E:{"1":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB","322":"K L rB 1B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","194":"AB BB"},G:{"1":"mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC","578":"fC gC hC iC jC kC lC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"MediaRecorder API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB","194":"OB PB"},E:{"1":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB","322":"K L sB 2B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB RC SC TC UC rB CC VC sB","194":"BB CB"},G:{"1":"oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC","578":"hC iC jC kC lC mC nC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"MediaRecorder API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js
    index 4753e7a3248cb1..4cd49e55ab69e7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mediasource.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","66":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M","33":"0 1 2 3 4 5 6 z","66":"N O w g x y"},E:{"1":"E F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC","260":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f uC","2":"tB I pC qC rC sC BC tC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Media Source Extensions"};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 FC uB I w J D E F A B C K L G M N O x g y z GC HC","66":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M","33":"0 1 2 3 4 5 6 7","66":"N O x g y z"},E:{"1":"E F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC","260":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H wC","2":"uB I rC sC tC uC DC vC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Media Source Extensions"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js
    index bc9f91165ad45f..79cbc214e4f136 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/menu.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB I v J D EC FC","132":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T","450":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","66":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","66":"BB CB DB EB FB GB HB IB JB KB LB MB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"450":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Context menu item (menuitem element)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB I w J D GC HC","132":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T","450":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","66":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","66":"CB DB EB FB GB HB IB JB KB LB MB NB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"450":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Context menu item (menuitem element)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js
    index f15c111d6f0ba4..a3c8b2c12bb1fc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meta-theme-color.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB","132":"h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","258":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B MC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"513":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","16":"wC"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:1,C:"theme-color Meta Tag"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB","132":"h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","258":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"513":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","16":"yC"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:1,C:"theme-color Meta Tag"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js
    index c45d9db05df556..6cbb0479f0eee6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/meter.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F PC QC RC SC"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"meter element"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F RC SC TC UC"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"meter element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js
    index 37f070219a6b68..d1471e7e693fad 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/midi.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t EC FC"},D:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"Web MIDI API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t GC HC"},D:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"Web MIDI API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js
    index bc6048e6377e95..91541ff2ec729e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/minmaxwh.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","8":"J CC","129":"D","257":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS min/max-width/height"};
    +module.exports={A:{A:{"1":"F A B","8":"J EC","129":"D","257":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS min/max-width/height"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js
    index 553620f0c0d21b..8d9436565e79ab 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mp3.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","132":"I v J D E F A B C K L G M N O w g x EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","2":"pC qC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"MP3 audio format"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","132":"I w J D E F A B C K L G M N O x g y GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","2":"rC sC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"MP3 audio format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js
    index 74d681761b35d3..059d84566b24df 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg-dash.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","386":"x y"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","386":"y z"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"Dynamic Adaptive Streaming over HTTP (MPEG-DASH)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js
    index f09d48e9eccb83..eae26330282ad1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mpeg4.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g EC FC","4":"0 1 2 3 4 5 6 7 8 9 x y z AB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f tC uC","4":"tB I pC qC sC BC","132":"rC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"260":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"MPEG-4/H.264 video format"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g GC HC","4":"0 1 2 3 4 5 6 7 8 9 y z AB BB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H vC wC","4":"uB I rC sC uC DC","132":"tC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"260":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"MPEG-4/H.264 video format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js
    index 39e8d76efca45e..2abe866cf726e4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multibackgrounds.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 Multiple backgrounds"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 Multiple backgrounds"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js
    index b13e3cf0953e0c..b1501c231ffed3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/multicolumn.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O","516":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"132":"SB TB UB VB WB XB YB uB ZB vB aB bB cB","164":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC","516":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a","1028":"b c d e i j k l m n o p q r s t u f H xB yB"},D:{"420":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","516":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","132":"F LC","164":"D E KC","420":"I v J HC zB IC JC"},F:{"1":"C qB AC TC rB","2":"F B PC QC RC SC","420":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB","516":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"ZC aC","164":"E XC YC","420":"zB UC BC VC WC"},H:{"1":"oC"},I:{"420":"tB I pC qC rC sC BC tC uC","516":"f"},J:{"420":"D A"},K:{"1":"C qB AC rB","2":"A B","516":"h"},L:{"516":"H"},M:{"1028":"H"},N:{"1":"A B"},O:{"516":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","420":"I"},Q:{"516":"1B"},R:{"516":"9C"},S:{"164":"AD BD"}},B:4,C:"CSS3 Multiple column layout"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O","516":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"132":"TB UB VB WB XB YB ZB vB aB wB bB cB dB","164":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB GC HC","516":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a","1028":"b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"420":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","516":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","132":"F NC","164":"D E MC","420":"I w J JC 0B KC LC"},F:{"1":"C rB CC VC sB","2":"F B RC SC TC UC","420":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB","516":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"bC cC","164":"E ZC aC","420":"0B WC DC XC YC"},H:{"1":"qC"},I:{"420":"uB I rC sC tC uC DC vC wC","516":"H"},J:{"420":"D A"},K:{"1":"C rB CC sB","2":"A B","516":"h"},L:{"516":"H"},M:{"1028":"f"},N:{"1":"A B"},O:{"516":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","420":"I"},Q:{"516":"2B"},R:{"516":"BD"},S:{"164":"CD DD"}},B:4,C:"CSS3 Multiple column layout"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js
    index 2306435bb9b326..e6a1cf113f0cf7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutation-events.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","260":"F A B"},B:{"132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G M N O"},C:{"2":"DC tB I v EC FC","260":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"16":"I v J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"16":"HC zB","132":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"C TC rB","2":"F PC QC RC SC","16":"B qB AC","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"16":"zB UC","132":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"16":"pC qC","132":"tB I f rC sC BC tC uC"},J:{"132":"D A"},K:{"1":"C rB","2":"A","16":"B qB AC","132":"h"},L:{"132":"H"},M:{"260":"H"},N:{"260":"A B"},O:{"132":"vC"},P:{"132":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"132":"1B"},R:{"132":"9C"},S:{"260":"AD BD"}},B:5,C:"Mutation events"};
    +module.exports={A:{A:{"2":"J D E EC","260":"F A B"},B:{"132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G M N O"},C:{"2":"FC uB I w GC HC","260":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"16":"I w J D E F A B C K L","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"16":"JC 0B","132":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"C VC sB","2":"F RC SC TC UC","16":"B rB CC","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"16":"0B WC","132":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"16":"rC sC","132":"uB I H tC uC DC vC wC"},J:{"132":"D A"},K:{"1":"C sB","2":"A","16":"B rB CC","132":"h"},L:{"132":"H"},M:{"260":"f"},N:{"260":"A B"},O:{"132":"xC"},P:{"132":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"132":"2B"},R:{"132":"BD"},S:{"260":"CD DD"}},B:5,C:"Mutation events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js
    index b54c3d4a19e92b..778d4d15627909 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/mutationobserver.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E CC","8":"F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K EC FC"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N","33":"0 1 2 O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB pC qC rC","8":"I sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","8":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Mutation Observer"};
    +module.exports={A:{A:{"1":"B","2":"J D E EC","8":"F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K GC HC"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N","33":"0 1 2 3 O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB rC sC tC","8":"I uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","8":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Mutation Observer"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js
    index a99efb336d607b..a7103000ac9c26 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/namevalue-storage.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","2":"CC","8":"J D"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","4":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Web Storage - name/value pairs"};
    +module.exports={A:{A:{"1":"E F A B","2":"EC","8":"J D"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","4":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Web Storage - name/value pairs"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js
    index a8a7893a1a3064..b7701054eb74f4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/native-filesystem-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","194":"P Q R S T U","260":"V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H EC FC","516":"xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h","194":"lB mB nB oB pB P Q R S T U","260":"V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC","516":"2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB PC QC RC SC qB AC TC rB","194":"aB bB cB dB eB fB gB hB iB jB","260":"kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC","516":"2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"File System Access API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","194":"P Q R S T U","260":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f GC HC","516":"H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h","194":"mB nB oB pB qB P Q R S T U","260":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC","516":"3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC TC UC rB CC VC sB","194":"bB cB dB eB fB gB hB iB jB kB","260":"lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC","516":"3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"File System Access API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js
    index b24d062ff1490d..56fad5ee79a6e6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/nav-timing.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v","33":"J D E F A B C"},E:{"1":"E F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"I f sC BC tC uC","2":"tB pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Navigation Timing API"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w","33":"J D E F A B C"},E:{"1":"E F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"I H uC DC vC wC","2":"uB rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Navigation Timing API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js
    index 9cb9809f068997..8542d877808c6f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/netinfo.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","1028":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB","1028":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB PC QC RC SC qB AC TC rB","1028":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"pC tC uC","132":"tB I qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","132":"I","516":"wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"BD","260":"AD"}},B:7,C:"Network Information API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","1028":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB","1028":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB RC SC TC UC rB CC VC sB","1028":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"rC vC wC","132":"uB I sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","132":"I","516":"yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"DD","260":"CD"}},B:7,C:"Network Information API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js
    index 58e1a4b0127589..323e5c07951ee4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/notifications.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I","36":"v J D E F A B C K L G M N O w g x"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B","1028":"9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","36":"f tC uC"},J:{"1":"A","2":"D"},K:{"2":"A B C qB AC rB","36":"h"},L:{"513":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"36":"I","258":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"258":"9C"},S:{"1":"AD BD"}},B:1,C:"Web Notifications"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I","36":"w J D E F A B C K L G M N O x g y"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B","1028":"AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","36":"H vC wC"},J:{"1":"A","2":"D"},K:{"2":"A B C rB CC sB","36":"h"},L:{"513":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"36":"I","258":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"258":"BD"},S:{"1":"CD DD"}},B:1,C:"Web Notifications"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js
    index e5681aa448db78..33a5d6625a16c4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-entries.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC"},D:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Object.entries"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC"},D:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","16":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Object.entries"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js
    index e72ed6454c0ff3..df9a98558affa1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-fit.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G","260":"M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC","132":"E F KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F G M N O PC QC RC","33":"B C SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","132":"E YC ZC aC"},H:{"33":"oC"},I:{"1":"f uC","2":"tB I pC qC rC sC BC tC"},J:{"2":"D A"},K:{"1":"h","2":"A","33":"B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 object-fit/object-position"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G","260":"M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 I w J D E F A B C K L G M N O x g y z"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC","132":"E F MC NC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F G M N O RC SC TC","33":"B C UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","132":"E aC bC cC"},H:{"33":"qC"},I:{"1":"H wC","2":"uB I rC sC tC uC DC vC"},J:{"2":"D A"},K:{"1":"h","2":"A","33":"B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 object-fit/object-position"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js
    index fa9cbe83ec745c..17ee94e50b7573 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-observe.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB","2":"F B C G M N O w g x y DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"I","2":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Object.observe data binding"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB","2":"F B C G M N O x g y z EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"I","2":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Object.observe data binding"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js
    index b10d2a1cb30c9e..ae7ccc4511a28b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/object-values.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"8":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC"},D:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"8":"oC"},I:{"1":"f","8":"tB I pC qC rC sC BC tC uC"},J:{"8":"D A"},K:{"1":"h","8":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","8":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Object.values method"};
    +module.exports={A:{A:{"8":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC"},D:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"8":"qC"},I:{"1":"H","8":"uB I rC sC tC uC DC vC wC"},J:{"8":"D A"},K:{"1":"h","8":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","8":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Object.values method"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js
    index 301b94cd35fee4..4a0f6def42b198 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/objectrtc.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O","2":"C P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D","130":"A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"Object RTC (ORTC) API for WebRTC"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O","2":"C P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D","130":"A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"Object RTC (ORTC) API for WebRTC"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js
    index cb9485ddc46c7d..b6edcd2b49626a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offline-apps.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"F CC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T","2":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S EC FC","2":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","4":"tB","8":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T","2":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB SC qB AC TC rB","2":"F h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC","8":"QC RC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I pC qC rC sC BC tC uC","2":"f"},J:{"1":"D A"},K:{"1":"B C qB AC rB","2":"A h"},L:{"2":"H"},M:{"2":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"1":"AD","2":"BD"}},B:7,C:"Offline web applications"};
    +module.exports={A:{A:{"1":"A B","2":"F EC","8":"J D E"},B:{"1":"C K L G M N O P Q R S T","2":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S GC HC","2":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","4":"uB","8":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T","2":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB UC rB CC VC sB","2":"F h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC","8":"SC TC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I rC sC tC uC DC vC wC","2":"H"},J:{"1":"D A"},K:{"1":"B C rB CC sB","2":"A h"},L:{"2":"H"},M:{"2":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"1":"CD","2":"DD"}},B:7,C:"Offline web applications"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js
    index a47f16586ca0af..98e0f38e49a2a0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/offscreencanvas.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB EC FC","194":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q"},D:{"1":"hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","322":"YB uB ZB vB aB bB cB dB eB fB gB"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB PC QC RC SC qB AC TC rB","322":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"194":"AD BD"}},B:1,C:"OffscreenCanvas"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB GC HC","194":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q"},D:{"1":"iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","322":"ZB vB aB wB bB cB dB eB fB gB hB"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB RC SC TC UC rB CC VC sB","322":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"194":"CD DD"}},B:1,C:"OffscreenCanvas"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js
    index d555efd254b951..8cc0821f0c16fa 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogg-vorbis.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B","132":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"A","2":"D"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Ogg Vorbis audio format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B","132":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"A","2":"D"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Ogg Vorbis audio format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js
    index d435cda9fd33f7..3a0113ad556554 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ogv.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","8":"F A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","8":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"8":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"1":"AD BD"}},B:6,C:"Ogg/Theora video format"};
    +module.exports={A:{A:{"2":"J D E EC","8":"F A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","8":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"8":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"1":"CD DD"}},B:6,C:"Ogg/Theora video format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js
    index f3cb76ee4c1504..26d896ea16b927 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ol-reversed.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G","16":"M N O w"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC","16":"C"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Reversed attribute of ordered lists"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G","16":"M N O x"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","16":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC","16":"C"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Reversed attribute of ordered lists"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js
    index d34dfa79aa543f..68719c331afb8a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/once-event-listener.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G"},C:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB EC FC"},D:{"1":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"\"once\" event listener option"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G"},C:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB GC HC"},D:{"1":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"\"once\" event listener option"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js
    index d8afe4b67e82bf..72cbfe962fe25c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/online-status.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D CC","260":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB","516":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC","4":"rB"},G:{"1":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"A","132":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Online/offline status"};
    +module.exports={A:{A:{"1":"F A B","2":"J D EC","260":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB","516":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC","4":"sB"},G:{"1":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"A","132":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Online/offline status"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js
    index 64b1cabcbd0d1b..ca3ad25d1e2659 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/opus.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 I v J D E F A B C K L G M N O w g x y z"},E:{"2":"I v J D E F A HC zB IC JC KC LC 0B","132":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC","132":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Opus audio format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z"},E:{"2":"I w J D E F A JC 0B KC LC MC NC 1B","132":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC","132":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Opus audio format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js
    index 00b9bf2aab5a9f..0207b234c4e12b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/orientation-sensor.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","194":"YB uB ZB vB aB bB cB dB eB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:4,C:"Orientation Sensor"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","194":"ZB vB aB wB bB cB dB eB fB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:4,C:"Orientation Sensor"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js
    index de20bb6ba38eb1..e6c1e68b06e0a9 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/outline.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D CC","260":"E","388":"F A B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","388":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC","129":"rB","260":"F B PC QC RC SC qB AC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"C h rB","260":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"388":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS outline properties"};
    +module.exports={A:{A:{"2":"J D EC","260":"E","388":"F A B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","388":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC","129":"sB","260":"F B RC SC TC UC rB CC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"C h sB","260":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"388":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS outline properties"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js
    index 9fd3fbd45aa6fc..a3939bd70593ea 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pad-start-end.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC"},D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L"},C:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB GC HC"},D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"String.prototype.padStart(), String.prototype.padEnd()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js
    index 011c06a55b1ac0..c0ff18813d8ac1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/page-transition-events.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"PageTransitionEvent"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"PageTransitionEvent"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js
    index 8712ff2f0973d2..f46ee4c49f9347 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pagevisibility.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F EC FC","33":"A B C K L G M N"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 L G M N O w g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B C PC QC RC SC qB AC TC","33":"G M N O w"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","33":"tC uC"},J:{"1":"A","2":"D"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","33":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Page Visibility"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F GC HC","33":"A B C K L G M N"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K","33":"0 1 2 3 4 5 6 7 8 9 L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B C RC SC TC UC rB CC VC","33":"G M N O x"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","33":"vC wC"},J:{"1":"A","2":"D"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","33":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Page Visibility"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js
    index 521576239de84b..b3639f7146aff5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passive-event-listener.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC"},D:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"Passive event listeners"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB GC HC"},D:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"Passive event listeners"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js
    index 7aa45a7bc2e339..5f38996b5539e3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/passwordrules.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","16":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H EC FC","16":"xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"xB yB GC"},E:{"1":"C K rB","2":"I v J D E F A B HC zB IC JC KC LC 0B qB","16":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB PC QC RC SC qB AC TC rB","16":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"16":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","16":"f"},J:{"2":"D","16":"A"},K:{"2":"A B C qB AC rB","16":"h"},L:{"16":"H"},M:{"16":"H"},N:{"2":"A","16":"B"},O:{"16":"vC"},P:{"2":"I wC xC","16":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"16":"1B"},R:{"16":"9C"},S:{"2":"AD BD"}},B:1,C:"Password Rules"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","16":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H GC HC","16":"yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"yB zB IC"},E:{"1":"C K sB","2":"I w J D E F A B JC 0B KC LC MC NC 1B rB","16":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB RC SC TC UC rB CC VC sB","16":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"16":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","16":"H"},J:{"2":"D","16":"A"},K:{"2":"A B C rB CC sB","16":"h"},L:{"16":"H"},M:{"16":"f"},N:{"2":"A","16":"B"},O:{"16":"xC"},P:{"2":"I yC zC","16":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"16":"2B"},R:{"16":"BD"},S:{"2":"CD DD"}},B:1,C:"Password Rules"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js
    index 605ea2cca83b09..ea10b10474c8cc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/path2d.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K","132":"L G M N O"},C:{"1":"OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","132":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},D:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB","132":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC","132":"E F KC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y PC QC RC SC qB AC TC rB","132":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","16":"E","132":"YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","132":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Path2D"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K","132":"L G M N O"},C:{"1":"PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 FC uB I w J D E F A B C K L G M N O x g y z GC HC","132":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},D:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB","132":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC","132":"E F MC"},F:{"1":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y z RC SC TC UC rB CC VC sB","132":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","16":"E","132":"aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","132":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Path2D"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js
    index 031735b42f3030..6b6243de9ee35e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/payment-request.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K","322":"L","8196":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB EC FC","4162":"VB WB XB YB uB ZB vB aB bB cB dB","16452":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","194":"TB UB VB WB XB YB","1090":"uB ZB","8196":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC","514":"A B 0B","8196":"C qB"},F:{"1":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB PC QC RC SC qB AC TC rB","194":"GB HB IB JB KB LB MB NB","8196":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC","514":"bC cC dC","8196":"eC fC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"2049":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 2C 3C 4C 5C sB 6C 7C 8C","2":"I","8196":"wC xC yC zC 0C 0B 1C"},Q:{"8196":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:2,C:"Payment Request API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K","322":"L","8196":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB GC HC","4162":"WB XB YB ZB vB aB wB bB cB dB eB","16452":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","194":"UB VB WB XB YB ZB","1090":"vB aB","8196":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC","514":"A B 1B","8196":"C rB"},F:{"1":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB RC SC TC UC rB CC VC sB","194":"HB IB JB KB LB MB NB OB","8196":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC","514":"dC eC fC","8196":"gC hC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"2049":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 4C 5C 6C 7C tB 8C 9C AD","2":"I","8196":"yC zC 0C 1C 2C 1B 3C"},Q:{"8196":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:2,C:"Payment Request API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js
    index dccd4f1ad47f40..d863eb466cfc10 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pdf-viewer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"16":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"Built-in PDF viewer"};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"C K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"16":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"Built-in PDF viewer"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js
    index a170f8a3ddc401..82a2ed1b0508b3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB EC FC"},D:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Permissions API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB GC HC"},D:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Permissions API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js
    index 37f69607e37293..3b75725bcc2f68 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/permissions-policy.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","258":"P Q R S T U","322":"V W","388":"X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h EC FC","258":"lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB","258":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U","322":"V W","388":"X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B HC zB IC JC KC LC 0B","258":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB PC QC RC SC qB AC TC rB","258":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB","322":"kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d","388":"e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC","258":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","258":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","388":"h"},L:{"388":"H"},M:{"258":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I wC xC yC","258":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"258":"1B"},R:{"388":"9C"},S:{"2":"AD","258":"BD"}},B:5,C:"Permissions Policy"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","258":"P Q R S T U","322":"V W","388":"X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h GC HC","258":"mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB","258":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U","322":"V W","388":"X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B JC 0B KC LC MC NC 1B","258":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB RC SC TC UC rB CC VC sB","258":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","322":"lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d","388":"e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC","258":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","258":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","388":"h"},L:{"388":"H"},M:{"258":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I yC zC 0C","258":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"258":"2B"},R:{"388":"BD"},S:{"2":"CD","258":"DD"}},B:5,C:"Permissions Policy"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js
    index f9d86f724d64c7..4e6db3ba125f8e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture-in-picture.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB EC FC","132":"kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","1090":"fB","1412":"jB","1668":"gB hB iB"},D:{"1":"iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB","2114":"hB"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC","4100":"A B C K 0B qB rB"},F:{"1":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB PC QC RC SC qB AC TC rB","8196":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC","4100":"ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"16388":"H"},M:{"16388":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"Picture-in-Picture"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB GC HC","132":"lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","1090":"gB","1412":"kB","1668":"hB iB jB"},D:{"1":"jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB","2114":"iB"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC","4100":"A B C K 1B rB sB"},F:{"1":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB RC SC TC UC rB CC VC sB","8196":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC","4100":"bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"16388":"H"},M:{"16388":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"Picture-in-Picture"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js
    index bc88b75d3f9ac2..ac41c5461f6594 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/picture.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","578":"AB BB CB DB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB","194":"DB"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB","322":"0"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Picture element"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB GC HC","578":"BB CB DB EB"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB","194":"EB"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 F B C G M N O x g y z RC SC TC UC rB CC VC sB","322":"1"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Picture element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js
    index 229483e7f058c1..757d1c93cdb40d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ping.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"2":"DC","194":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"194":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"194":"AD BD"}},B:1,C:"Ping attribute"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"2":"FC","194":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"194":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"194":"CD DD"}},B:1,C:"Ping attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js
    index 5eac24db566c1e..98a3a36c287b9b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/png-alpha.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"D E F A B","2":"CC","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"PNG alpha transparency"};
    +module.exports={A:{A:{"1":"D E F A B","2":"EC","8":"J"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"PNG alpha transparency"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js
    index 79eb7c04847790..ce249858391bc4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer-events.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:7,C:"CSS pointer-events (for HTML)"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:7,C:"CSS pointer-events (for HTML)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js
    index 0b082195cef633..93ae00884950e5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F CC","164":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC","8":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB","328":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB"},D:{"1":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x","8":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","584":"SB TB UB"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC","8":"D E F A B C JC KC LC 0B qB","1096":"rB"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","8":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB","584":"FB GB HB"},G:{"1":"iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC","6148":"hC"},H:{"2":"oC"},I:{"1":"f","8":"tB I pC qC rC sC BC tC uC"},J:{"8":"D A"},K:{"1":"h","2":"A","8":"B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","36":"A"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"wC","8":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","328":"AD"}},B:2,C:"Pointer events"};
    +module.exports={A:{A:{"1":"B","2":"J D E F EC","164":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC","8":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB","328":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB"},D:{"1":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g y","8":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","584":"TB UB VB"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC","8":"D E F A B C LC MC NC 1B rB","1096":"sB"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","8":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB","584":"GB HB IB"},G:{"1":"kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC","6148":"jC"},H:{"2":"qC"},I:{"1":"H","8":"uB I rC sC tC uC DC vC wC"},J:{"8":"D A"},K:{"1":"h","2":"A","8":"B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","36":"A"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"yC","8":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","328":"CD"}},B:2,C:"Pointer events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js
    index 6fcd8972cd674b..0afb96229105d8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/pointerlock.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C"},C:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K EC FC","33":"0 1 2 3 4 5 6 7 8 9 L G M N O w g x y z AB BB CB DB EB FB GB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB","66":"M N O w g x"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"G M N O w g x y z"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Pointer Lock API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K GC HC","33":"0 1 2 3 4 5 6 7 8 9 L G M N O x g y z AB BB CB DB EB FB GB HB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G","33":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB","66":"M N O x g y"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 G M N O x g y z"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Pointer Lock API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js
    index 39d39fb8c27a55..2242ec6c40e451 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/portals.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T","322":"Z a b c d e i j k l m n o p q r s t u f H","450":"U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB","194":"mB nB oB pB P Q R S T","322":"V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","450":"U"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB PC QC RC SC qB AC TC rB","194":"aB bB cB dB eB fB gB hB iB jB kB","322":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"450":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Portals"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T","322":"Z a b c d e i j k l m n o p q r s t u v f H","450":"U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB","194":"nB oB pB qB P Q R S T","322":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","450":"U"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC TC UC rB CC VC sB","194":"bB cB dB eB fB gB hB iB jB kB lB","322":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"450":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Portals"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
    index a146fed8ebd79b..f0e48fe486b372 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-color-scheme.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB EC FC"},D:{"1":"nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB"},E:{"1":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB"},F:{"1":"aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB PC QC RC SC qB AC TC rB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"prefers-color-scheme media query"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB GC HC"},D:{"1":"oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB"},E:{"1":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB"},F:{"1":"bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB RC SC TC UC rB CC VC sB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"prefers-color-scheme media query"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
    index 3b96405642abff..0a8b155c70da63 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/prefers-reduced-motion.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB EC FC"},D:{"1":"lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"prefers-reduced-motion media query"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB GC HC"},D:{"1":"mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"prefers-reduced-motion media query"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js
    index 16ab8a77d6f0db..4e65bbce1cfce9 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/progress.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F PC QC RC SC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC","132":"XC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"progress element"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F RC SC TC UC"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC","132":"ZC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"progress element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js
    index 16300f775baffe..c76895c13b7f60 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promise-finally.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N"},C:{"1":"YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB EC FC"},D:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"Promise.prototype.finally"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N"},C:{"1":"ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB GC HC"},D:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"Promise.prototype.finally"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js
    index c843c2a86d6e47..9ac485698500f1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/promises.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"8":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","4":"3 4","8":"0 1 2 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"8","8":"0 1 2 3 4 5 6 7 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v J D HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","4":"w","8":"F B C G M N O PC QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC VC WC XC"},H:{"8":"oC"},I:{"1":"f uC","8":"tB I pC qC rC sC BC tC"},J:{"8":"D A"},K:{"1":"h","8":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Promises"};
    +module.exports={A:{A:{"8":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","4":"4 5","8":"0 1 2 3 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"9","8":"0 1 2 3 4 5 6 7 8 I w J D E F A B C K L G M N O x g y z"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w J D JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","4":"x","8":"F B C G M N O RC SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC XC YC ZC"},H:{"8":"qC"},I:{"1":"H wC","8":"uB I rC sC tC uC DC vC"},J:{"8":"D A"},K:{"1":"h","8":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Promises"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js
    index d149023d216722..3a67d589ee4c9a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proximity.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"AD BD"}},B:4,C:"Proximity API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"CD DD"}},B:4,C:"Proximity API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js
    index 1f29e7f7ebc32a..242ca7a885e94d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/proxy.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O EB FB GB HB IB JB KB LB MB NB OB","66":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"1 2 3 4 5 6 7 8 9 F B C AB BB PC QC RC SC qB AC TC rB","66":"0 G M N O w g x y z"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Proxy object"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O FB GB HB IB JB KB LB MB NB OB PB","66":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"2 3 4 5 6 7 8 9 F B C AB BB CB RC SC TC UC rB CC VC sB","66":"0 1 G M N O x g y z"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Proxy object"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js
    index 018617965affae..e1d8410f5cb047 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/publickeypinning.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB","2":"F B C G M N O w eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","4":"z","16":"0 g x y"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"I wC xC yC zC 0C 0B","2":"g 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"AD","2":"BD"}},B:6,C:"HTTP Public Key Pinning"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","2":"F B C G M N O x fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","4":"0","16":"1 g y z"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"I yC zC 0C 1C 2C 1B","2":"g 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"CD","2":"DD"}},B:6,C:"HTTP Public Key Pinning"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js
    index 1b69bbb5657953..7e2251448d8873 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/push-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O","2":"C K L G M","257":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB EC FC","257":"KB MB NB OB PB QB RB TB UB VB WB XB YB uB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","1281":"LB SB ZB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB","257":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","388":"KB LB MB NB OB PB"},E:{"2":"I v J HC zB IC JC","514":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB","4612":"6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB PC QC RC SC qB AC TC rB","16":"DB EB FB GB HB","257":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B","8196":"9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"2":"9C"},S:{"257":"AD BD"}},B:5,C:"Push API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O","2":"C K L G M","257":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB GC HC","257":"LB NB OB PB QB RB SB UB VB WB XB YB ZB vB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","1281":"MB TB aB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB","257":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","388":"LB MB NB OB PB QB"},E:{"2":"I w J JC 0B KC LC","514":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB","4612":"7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB RC SC TC UC rB CC VC sB","16":"EB FB GB HB IB","257":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B","8196":"AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"2":"BD"},S:{"257":"CD DD"}},B:5,C:"Push API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js
    index b3e2d1a7a3e6b0..8be59357d6aa48 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/queryselector.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"CC","8":"J D","132":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","8":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","8":"F PC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"querySelector/querySelectorAll"};
    +module.exports={A:{A:{"1":"F A B","2":"EC","8":"J D","132":"E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","8":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","8":"F RC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"querySelector/querySelectorAll"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js
    index 85962fbcf1a11d..032463b647e4b1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/readonly-attr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","16":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC tB EC FC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"0 1 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F PC","132":"B C QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC WC"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"h","132":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"257":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"readonly attribute of input and textarea elements"};
    +module.exports={A:{A:{"1":"J D E F A B","16":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC uB GC HC"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"0 1 2 I w J D E F A B C K L G M N O x g y z"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F RC","132":"B C SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC YC"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"h","132":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"257":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"readonly attribute of input and textarea elements"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js
    index 4ccdc1629ac209..ffbc2a1dd79eef 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/referrer-policy.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"1":"P Q R S","132":"C K L G M N O","513":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC","513":"W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T","2":"I v J D E F A B C K L G M N O w g","260":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB","513":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"C qB rB","2":"I v J D HC zB IC JC","132":"E F A B KC LC 0B","1025":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","2":"F B C PC QC RC SC qB AC TC rB","513":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"fC gC hC iC","2":"zB UC BC VC WC XC","132":"E YC ZC aC bC cC dC eC","1025":"jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","513":"h"},L:{"513":"H"},M:{"513":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"513":"9C"},S:{"1":"AD BD"}},B:4,C:"Referrer Policy"};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"1":"P Q R S","132":"C K L G M N O","513":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC","513":"W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T","2":"I w J D E F A B C K L G M N O x g","260":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB","513":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"C rB sB","2":"I w J D JC 0B KC LC","132":"E F A B MC NC 1B","1025":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB","2":"F B C RC SC TC UC rB CC VC sB","513":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"hC iC jC kC","2":"0B WC DC XC YC ZC","132":"E aC bC cC dC eC fC gC","1025":"lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","513":"h"},L:{"513":"H"},M:{"513":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"513":"BD"},S:{"1":"CD DD"}},B:4,C:"Referrer Policy"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
    index 94e9b55bea3889..8c46e0a12e7e71 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/registerprotocolhandler.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","129":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC"},D:{"2":"I v J D E F A B C","129":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B PC QC RC SC qB AC","129":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D","129":"A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:1,C:"Custom protocol handling"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","129":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC"},D:{"2":"I w J D E F A B C","129":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B RC SC TC UC rB CC","129":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D","129":"A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:1,C:"Custom protocol handling"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js
    index 5d56fe67acf0e8..df182863858311 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noopener.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"rel=noopener"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"rel=noopener"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js
    index 035e8558b1c91b..81c6d34af5cfc5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rel-noreferrer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","132":"B"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"C"},C:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L G"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Link type \"noreferrer\""};
    +module.exports={A:{A:{"2":"J D E F A EC","132":"B"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"C"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L G"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Link type \"noreferrer\""};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js
    index d28b7ef00d8038..37abdcbe0b142c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rellist.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M","132":"N"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB","132":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E HC zB IC JC KC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB PC QC RC SC qB AC TC rB","132":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","132":"wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"relList (DOMTokenList)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M","132":"N"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","132":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E JC 0B KC LC MC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB RC SC TC UC rB CC VC sB","132":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","132":"yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"relList (DOMTokenList)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js
    index 62428b0c327ea8..338d1f594969e6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rem.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E CC","132":"F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC"},G:{"1":"E UC BC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB","260":"VC"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"C h rB","2":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"rem (root em) units"};
    +module.exports={A:{A:{"1":"B","2":"J D E EC","132":"F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC"},G:{"1":"E WC DC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B","260":"XC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"C h sB","2":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"rem (root em) units"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js
    index 599018e62695d5..add9b6e8f4dfce 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestanimationframe.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","33":"B C K L G M N O w g x y","164":"I v J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F","33":"y z","164":"O w g x","420":"A B C K L G M N"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","33":"WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"requestAnimationFrame"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","33":"B C K L G M N O x g y z","164":"I w J D E F A"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F","33":"0 z","164":"O x g y","420":"A B C K L G M N"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","33":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","33":"YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"requestAnimationFrame"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js
    index 7df6545757b8ee..457db0c5598495 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/requestidlecallback.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC","194":"TB UB"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB"},E:{"2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB","322":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC","322":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"requestIdleCallback"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC","194":"UB VB"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB"},E:{"2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB","322":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC","322":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"requestIdleCallback"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js
    index 1834721f777aec..dbb015e5bdc4e4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resizeobserver.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB EC FC"},D:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","194":"UB VB WB XB YB uB ZB vB aB bB"},E:{"1":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB","66":"K"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB PC QC RC SC qB AC TC rB","194":"HB IB JB KB LB MB NB OB PB QB RB"},G:{"1":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"Resize Observer"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB GC HC"},D:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","194":"VB WB XB YB ZB vB aB wB bB cB"},E:{"1":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB sB","66":"K"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB RC SC TC UC rB CC VC sB","194":"IB JB KB LB MB NB OB PB QB RB SB"},G:{"1":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"Resize Observer"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js
    index 339271ef8276b4..b87e3472589052 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/resource-timing.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"7 8 9 AB"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","260":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Resource Timing"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"8 9 AB BB"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 I w J D E F A B C K L G M N O x g y z"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","260":"B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Resource Timing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js
    index d04ccaa3c213ee..e8d9fe5b5c6a4d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rest-parameters.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB","194":"KB LB MB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","194":"7 8 9"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Rest parameters"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB","194":"LB MB NB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 F B C G M N O x g y z RC SC TC UC rB CC VC sB","194":"8 9 AB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Rest parameters"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
    index be271e93844665..233971a312fe83 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/rtcpeerconnection.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L","516":"G M N O"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x EC FC","33":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB"},D:{"1":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x y","33":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","130":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"WebRTC Peer-to-peer connections"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L","516":"G M N O"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y GC HC","33":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g y z","33":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","130":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"WebRTC Peer-to-peer connections"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js
    index f4ad49aca9c891..4cad437f10cbcc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ruby.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"4":"J D E F A B CC"},B:{"4":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EC FC"},D:{"4":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"I"},E:{"4":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I HC zB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","8":"F B C PC QC RC SC qB AC TC rB"},G:{"4":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC"},H:{"8":"oC"},I:{"4":"tB I f sC BC tC uC","8":"pC qC rC"},J:{"4":"A","8":"D"},K:{"4":"h","8":"A B C qB AC rB"},L:{"4":"H"},M:{"1":"H"},N:{"4":"A B"},O:{"4":"vC"},P:{"4":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"4":"1B"},R:{"4":"9C"},S:{"1":"AD BD"}},B:1,C:"Ruby annotation"};
    +module.exports={A:{A:{"4":"J D E F A B EC"},B:{"4":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB GC HC"},D:{"4":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"I"},E:{"4":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I JC 0B"},F:{"4":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","8":"F B C RC SC TC UC rB CC VC sB"},G:{"4":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC"},H:{"8":"qC"},I:{"4":"uB I H uC DC vC wC","8":"rC sC tC"},J:{"4":"A","8":"D"},K:{"4":"h","8":"A B C rB CC sB"},L:{"4":"H"},M:{"1":"f"},N:{"4":"A B"},O:{"4":"xC"},P:{"4":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"4":"2B"},R:{"4":"BD"},S:{"1":"CD DD"}},B:1,C:"Ruby annotation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js
    index 54afa7c1fcc6dd..43eb2b70dd45d9 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/run-in.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","2":"J D CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 I v J D E F A B C K L G M N O w g x y z","2":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J IC","2":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"JC","129":"I HC zB"},F:{"1":"F B C G M N O PC QC RC SC qB AC TC rB","2":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"UC BC VC WC XC","2":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","129":"zB"},H:{"1":"oC"},I:{"1":"tB I pC qC rC sC BC tC","2":"f uC"},J:{"1":"D A"},K:{"1":"A B C qB AC rB","2":"h"},L:{"2":"H"},M:{"2":"H"},N:{"1":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:4,C:"display: run-in"};
    +module.exports={A:{A:{"1":"E F A B","2":"J D EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 I w J D E F A B C K L G M N O x g y z","2":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J KC","2":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"LC","129":"I JC 0B"},F:{"1":"F B C G M N O RC SC TC UC rB CC VC sB","2":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"WC DC XC YC ZC","2":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","129":"0B"},H:{"1":"qC"},I:{"1":"uB I rC sC tC uC DC vC","2":"H wC"},J:{"1":"D A"},K:{"1":"A B C rB CC sB","2":"h"},L:{"2":"H"},M:{"2":"f"},N:{"1":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:4,C:"display: run-in"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
    index dcfefa73c6f1eb..4f11c63c875226 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/same-site-cookie-attribute.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","388":"B"},B:{"1":"O P Q R S T U","2":"C K L G","129":"M N","513":"V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB EC FC"},D:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","513":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B qB","2052":"L MC","3076":"C K rB 1B"},F:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB PC QC RC SC qB AC TC rB","513":"jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC","2052":"fC gC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","513":"h"},L:{"513":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"16":"1B"},R:{"513":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"'SameSite' cookie attribute"};
    +module.exports={A:{A:{"2":"J D E F A EC","388":"B"},B:{"1":"O P Q R S T U","2":"C K L G","129":"M N","513":"V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB GC HC"},D:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","513":"Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B rB","2052":"L OC","3076":"C K sB 2B"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB RC SC TC UC rB CC VC sB","513":"kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC","2052":"hC iC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","513":"h"},L:{"513":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"16":"2B"},R:{"513":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"'SameSite' cookie attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js
    index 054236fdd45ff9..97b4e057683770 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/screen-orientation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","164":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","36":"C K L G M N O"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N EC FC","36":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB"},E:{"1":"9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A","36":"B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","16":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"Screen Orientation"};
    +module.exports={A:{A:{"2":"J D E F A EC","164":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","36":"C K L G M N O"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N GC HC","36":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB"},E:{"1":"AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A","36":"B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","16":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"Screen Orientation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js
    index b0307554e768ca..dd44454f842496 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-async.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","132":"v"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"async attribute for external scripts"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","132":"w"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"async attribute for external scripts"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js
    index ca0767e58c677e..835560dac7ce38 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/script-defer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","132":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","257":"0 1 2 3 4 5 6 I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"defer attribute for external scripts"};
    +module.exports={A:{A:{"1":"A B","132":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","257":"0 1 2 3 4 5 6 7 I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"defer attribute for external scripts"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js
    index e9869278750a25..696caf606af5d2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoview.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D CC","132":"E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","132":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","132":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB EC FC"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v HC zB","132":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F PC QC RC SC","16":"B qB AC","132":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB TC rB"},G:{"1":"sB 6B 7B 8B 9B","16":"zB UC BC","132":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"1":"f","16":"pC qC","132":"tB I rC sC BC tC uC"},J:{"132":"D A"},K:{"1":"h","132":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"132":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"scrollIntoView"};
    +module.exports={A:{A:{"2":"J D EC","132":"E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","132":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","132":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB GC HC"},D:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w JC 0B","132":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F RC SC TC UC","16":"B rB CC","132":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB VC sB"},G:{"1":"tB 7B 8B 9B AC BC","16":"0B WC DC","132":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"1":"H","16":"rC sC","132":"uB I tC uC DC vC wC"},J:{"132":"D A"},K:{"1":"h","132":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"132":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"scrollIntoView"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
    index 7eff0069924ab3..96e915794b2c18 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/scrollintoviewifneeded.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Element.scrollIntoViewIfNeeded()"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Element.scrollIntoViewIfNeeded()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js
    index 5ae455fa830713..679b5a365a63a3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sdch.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","2":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","2":"F B C h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","2":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB","2":"F B C h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"SDCH Accept-Encoding/Content-Encoding"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js
    index f74d6a3e634b08..a3747d9b85234f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/selection-api.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","16":"CC","260":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","132":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB EC FC","2180":"JB KB LB MB NB OB PB QB RB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","132":"F B C PC QC RC SC qB AC TC rB"},G:{"16":"BC","132":"zB UC","516":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f tC uC","16":"tB I pC qC rC sC","1025":"BC"},J:{"1":"A","16":"D"},K:{"1":"h","16":"A B C qB AC","132":"rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","16":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2180":"AD"}},B:5,C:"Selection API"};
    +module.exports={A:{A:{"1":"F A B","16":"EC","260":"J D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","132":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB GC HC","2180":"KB LB MB NB OB PB QB RB SB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","132":"F B C RC SC TC UC rB CC VC sB"},G:{"16":"DC","132":"0B WC","516":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H vC wC","16":"uB I rC sC tC uC","1025":"DC"},J:{"1":"A","16":"D"},K:{"1":"h","16":"A B C rB CC","132":"sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","16":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2180":"CD"}},B:5,C:"Selection API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js
    index ef246ff2338540..7e87c36bc7a211 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/server-timing.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB EC FC"},D:{"1":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB","196":"ZB vB aB bB","324":"cB"},E:{"2":"I v J D E F A B C HC zB IC JC KC LC 0B qB","516":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"Server Timing"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB GC HC"},D:{"1":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB","196":"aB wB bB cB","324":"dB"},E:{"2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB","516":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"Server Timing"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js
    index 8f61078969a8a8..42eff61b5ee0c0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/serviceworkers.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L","322":"G M"},C:{"1":"KB MB NB OB PB QB RB TB UB VB WB XB YB uB vB aB bB cB dB eB fB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"9 AB BB CB DB EB FB GB HB IB JB","513":"LB SB ZB gB"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB","4":"GB HB IB JB KB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B HC zB IC JC KC LC 0B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","4":"3 4 5 6 7"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","4":"f"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"Service Workers"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L","322":"G M"},C:{"1":"LB NB OB PB QB RB SB UB VB WB XB YB ZB vB wB bB cB dB eB fB gB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"AB BB CB DB EB FB GB HB IB JB KB","513":"MB TB aB hB"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB","4":"HB IB JB KB LB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B JC 0B KC LC MC NC 1B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 F B C G M N O x g y z RC SC TC UC rB CC VC sB","4":"4 5 6 7 8"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","4":"H"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"Service Workers"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js
    index 66cafdd0775d52..a5f209fea34649 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/setimmediate.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"1":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Efficient Script Yielding: setImmediate()"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O","2":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"1":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Efficient Script Yielding: setImmediate()"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js
    index e2ecb12920ae98..9de757a080f179 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdom.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P","2":"C K L G M N O Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","66":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","2":"0 I v J D E F A B C K L G M N O w g x y z Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"1 2 3 4 5 6 7 8 9 AB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","2":"F B C fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","33":"G M N O w g x"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC","33":"tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"wC xC yC zC 0C 0B 1C 2C","2":"g 3C 4C 5C sB 6C 7C 8C","33":"I"},Q:{"1":"1B"},R:{"2":"9C"},S:{"1":"AD","2":"BD"}},B:7,C:"Shadow DOM (deprecated V0 spec)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P","2":"C K L G M N O Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","66":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","2":"0 1 I w J D E F A B C K L G M N O x g y z Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"2 3 4 5 6 7 8 9 AB BB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB","2":"F B C gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","33":"G M N O x g y"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC","33":"vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"yC zC 0C 1C 2C 1B 3C 4C","2":"g 5C 6C 7C tB 8C 9C AD","33":"I"},Q:{"1":"2B"},R:{"2":"BD"},S:{"1":"CD","2":"DD"}},B:7,C:"Shadow DOM (deprecated V0 spec)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js
    index 63cab8483c94fb..6bfa03f7302b9b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/shadowdomv1.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB EC FC","322":"YB","578":"uB ZB vB aB"},D:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},E:{"1":"A B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC","132":"bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","4":"wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"Shadow DOM (V1)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB GC HC","322":"ZB","578":"vB aB wB bB"},D:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"A B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC","132":"dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","4":"yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"Shadow DOM (V1)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
    index 3991c918053cd0..6ab2e9b702c435 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedarraybuffer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z","2":"C K L G","194":"M N O","513":"a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB EC FC","194":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h","450":"lB mB nB oB pB","513":"P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB","194":"ZB vB aB bB cB dB eB fB","513":"a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A HC zB IC JC KC LC","194":"B C K L G 0B qB rB 1B MC NC","513":"2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB PC QC RC SC qB AC TC rB","194":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC","194":"cC dC eC fC gC hC iC jC kC lC mC nC","513":"2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","513":"h"},L:{"513":"H"},M:{"513":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C","513":"g 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"513":"9C"},S:{"2":"AD","513":"BD"}},B:6,C:"Shared Array Buffer"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z","2":"C K L G","194":"M N O","513":"a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB GC HC","194":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h","450":"mB nB oB pB qB","513":"P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB","194":"aB wB bB cB dB eB fB gB","513":"a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A JC 0B KC LC MC NC","194":"B C K L G 1B rB sB 2B OC PC","513":"3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB RC SC TC UC rB CC VC sB","194":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC","194":"eC fC gC hC iC jC kC lC mC nC oC pC","513":"3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","513":"h"},L:{"513":"H"},M:{"513":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C","513":"g 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"513":"BD"},S:{"2":"CD","513":"DD"}},B:6,C:"Shared Array Buffer"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js
    index f6ff9c9ca60557..27f0c72adc3a2d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sharedworkers.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"v J IC sB 6B 7B 8B 9B OC","2":"I D E F A B C K L G HC zB JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","2":"F PC QC RC"},G:{"1":"VC WC sB 6B 7B 8B 9B","2":"E zB UC BC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"B C qB AC rB","2":"h","16":"A"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"I","2":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"AD BD"}},B:1,C:"Shared Web Workers"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"w J KC tB 7B 8B 9B AC BC QC","2":"I D E F A B C K L G JC 0B LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","2":"F RC SC TC"},G:{"1":"XC YC tB 7B 8B 9B AC BC","2":"E 0B WC DC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"B C rB CC sB","2":"h","16":"A"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"I","2":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"CD DD"}},B:1,C:"Shared Web Workers"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js
    index c7f4c2972f296a..0a01af25d86230 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sni.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J CC","132":"D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB"},H:{"1":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Server Name Indication"};
    +module.exports={A:{A:{"1":"F A B","2":"J EC","132":"D E"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B"},H:{"1":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Server Name Indication"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js
    index 86ed43c675691a..9dc83b907cff74 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spdy.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F A CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","2":"DC tB I v J D E F A B C RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","2":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"E F A B C LC 0B qB","2":"I v J D HC zB IC JC KC","129":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB IB KB rB","2":"F B C GB HB JB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC"},G:{"1":"E YC ZC aC bC cC dC eC fC","2":"zB UC BC VC WC XC","257":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I sC BC tC uC","2":"f pC qC rC"},J:{"2":"D A"},K:{"1":"rB","2":"A B C h qB AC"},L:{"2":"H"},M:{"2":"H"},N:{"1":"B","2":"A"},O:{"2":"vC"},P:{"1":"I","2":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"AD","2":"BD"}},B:7,C:"SPDY protocol"};
    +module.exports={A:{A:{"1":"B","2":"J D E F A EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","2":"FC uB I w J D E F A B C SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","2":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"E F A B C NC 1B rB","2":"I w J D JC 0B KC LC MC","129":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB JB LB sB","2":"F B C HB IB KB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC"},G:{"1":"E aC bC cC dC eC fC gC hC","2":"0B WC DC XC YC ZC","257":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I uC DC vC wC","2":"H rC sC tC"},J:{"2":"D A"},K:{"1":"sB","2":"A B C h rB CC"},L:{"2":"H"},M:{"2":"f"},N:{"1":"B","2":"A"},O:{"2":"xC"},P:{"1":"I","2":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"CD","2":"DD"}},B:7,C:"SPDY protocol"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js
    index 3b9a3d0d39770d..49e315fd29092b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-recognition.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","1026":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB I v J D E F A B C K L G M N O w g x EC FC","322":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 I v J D E F A B C K L G M N O w g x y z","164":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L HC zB IC JC KC LC 0B qB rB 1B","2084":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","1026":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC","2084":"mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","164":"h"},L:{"164":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"164":"vC"},P:{"164":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"164":"1B"},R:{"164":"9C"},S:{"322":"AD BD"}},B:7,C:"Speech Recognition API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","1026":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB I w J D E F A B C K L G M N O x g y GC HC","322":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 I w J D E F A B C K L G M N O x g y z","164":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L JC 0B KC LC MC NC 1B rB sB 2B","2084":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 F B C G M N O x g y z RC SC TC UC rB CC VC sB","1026":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC","2084":"oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","164":"h"},L:{"164":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"164":"xC"},P:{"164":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"164":"2B"},R:{"164":"BD"},S:{"322":"CD DD"}},B:7,C:"Speech Recognition API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js
    index 17af137c6f4688..8b12855ce641bd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/speech-synthesis.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O","2":"C K","257":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","2":"0 1 2 3 4 5 6 7 8 I v J D E F A B C K L G M N O w g x y z","257":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB","2":"0 1 2 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","257":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"2":"9C"},S:{"1":"AD BD"}},B:7,C:"Speech Synthesis API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O","2":"C K","257":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z","257":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC"},F:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB","2":"0 1 2 3 F B C G M N O x g y z RC SC TC UC rB CC VC sB","257":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"2":"BD"},S:{"1":"CD DD"}},B:7,C:"Speech Synthesis API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
    index 13ab98ccbd3de2..17d82c905ff521 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/spellcheck-attribute.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"4":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"4":"oC"},I:{"4":"tB I f pC qC rC sC BC tC uC"},J:{"1":"A","4":"D"},K:{"4":"A B C h qB AC rB"},L:{"4":"H"},M:{"4":"H"},N:{"4":"A B"},O:{"4":"vC"},P:{"4":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"4":"9C"},S:{"2":"AD BD"}},B:1,C:"Spellcheck attribute"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"4":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"4":"qC"},I:{"4":"uB I H rC sC tC uC DC vC wC"},J:{"1":"A","4":"D"},K:{"4":"A B C h rB CC sB"},L:{"4":"H"},M:{"4":"f"},N:{"4":"A B"},O:{"4":"xC"},P:{"4":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"4":"BD"},S:{"2":"CD DD"}},B:1,C:"Spellcheck attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js
    index 3a41d65ae4c8eb..6f1ad4ec0cf4c7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sql-storage.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q","2":"C K L G M N O","129":"r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q","129":"r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB","2":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z RC SC qB AC TC rB","2":"F PC QC","129":"a b c d e"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC","2":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I pC qC rC sC BC tC uC","129":"f"},J:{"1":"D A"},K:{"1":"B C qB AC rB","2":"A","129":"h"},L:{"129":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Web SQL Database"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q","2":"C K L G M N O","129":"r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q","129":"r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C JC 0B KC LC MC NC 1B rB sB","2":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z TC UC rB CC VC sB","2":"F RC SC","129":"a b c d e"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC","2":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I rC sC tC uC DC vC wC","129":"H"},J:{"1":"D A"},K:{"1":"B C rB CC sB","2":"A","129":"h"},L:{"129":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Web SQL Database"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js
    index 8c486dc8ed9323..8c1518c19e79e3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/srcset.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C","514":"K L G"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"8 9 AB BB CB DB"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z","260":"AB BB CB DB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC JC","260":"E KC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g PC QC RC SC qB AC TC rB","260":"0 x y z"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","260":"E YC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Srcset and sizes attributes"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C","514":"K L G"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"9 AB BB CB DB EB"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB","260":"BB CB DB EB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC LC","260":"E MC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g RC SC TC UC rB CC VC sB","260":"0 1 y z"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","260":"E aC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Srcset and sizes attributes"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js
    index 90e36805afc3e2..33e1f2c0db0b21 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stream.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M EC FC","129":"CB DB EB FB GB HB","420":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB"},D:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g","420":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B G M N PC QC RC SC qB AC TC","420":"0 1 2 3 4 5 6 7 8 9 C O w g x y z AB BB CB DB EB FB rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC","513":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","1537":"dC eC fC gC hC iC jC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","420":"A"},K:{"1":"h","2":"A B qB AC","420":"C rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","420":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:4,C:"getUserMedia/Stream API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M GC HC","129":"DB EB FB GB HB IB","420":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB"},D:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g","420":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B G M N RC SC TC UC rB CC VC","420":"0 1 2 3 4 5 6 7 8 9 C O x g y z AB BB CB DB EB FB GB sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC","513":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","1537":"fC gC hC iC jC kC lC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","420":"A"},K:{"1":"h","2":"A B rB CC","420":"C sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","420":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:4,C:"getUserMedia/Stream API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js
    index 7bd8c45a959058..bd6ad2afaf57a0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/streams.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","130":"B"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H","16":"C K","260":"L G","1028":"P Q R S T U V W X","5124":"M N O"},C:{"1":"o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB EC FC","5124":"m n","7172":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l","7746":"XB YB uB ZB vB aB bB cB"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","260":"SB TB UB VB WB XB YB","1028":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X"},E:{"2":"I v J D E F HC zB IC JC KC LC","1028":"G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","3076":"A B C K L 0B qB rB 1B"},F:{"1":"nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB PC QC RC SC qB AC TC rB","260":"FB GB HB IB JB KB LB","1028":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC","16":"bC","1028":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1028":"vC"},P:{"1":"g 5C sB 6C 7C 8C","2":"I wC xC","1028":"yC zC 0C 0B 1C 2C 3C 4C"},Q:{"1028":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:1,C:"Streams"};
    +module.exports={A:{A:{"2":"J D E F A EC","130":"B"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H","16":"C K","260":"L G","1028":"P Q R S T U V W X","5124":"M N O"},C:{"1":"o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB GC HC","5124":"m n","7172":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l","7746":"YB ZB vB aB wB bB cB dB"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB","260":"TB UB VB WB XB YB ZB","1028":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X"},E:{"2":"I w J D E F JC 0B KC LC MC NC","1028":"G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","3076":"A B C K L 1B rB sB 2B"},F:{"1":"oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB RC SC TC UC rB CC VC sB","260":"GB HB IB JB KB LB MB","1028":"NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC","16":"dC","1028":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1028":"xC"},P:{"1":"g 7C tB 8C 9C AD","2":"I yC zC","1028":"0C 1C 2C 1B 3C 4C 5C 6C"},Q:{"1028":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:1,C:"Streams"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
    index b7495bf63b18ea..a75b3ffa1ab942 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/stricttransportsecurity.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A CC","129":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Strict Transport Security"};
    +module.exports={A:{A:{"2":"J D E F A EC","129":"B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Strict Transport Security"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js
    index 3586411af66a5d..70e90e34d8daee 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/style-scoped.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","2":"DC tB I v J D E F A B C K L G M N O w g vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","322":"VB WB XB YB uB ZB"},D:{"2":"I v J D E F A B C K L G M N O w DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","194":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"AD","2":"BD"}},B:7,C:"Scoped CSS"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","2":"FC uB I w J D E F A B C K L G M N O x g wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","322":"WB XB YB ZB vB aB"},D:{"2":"I w J D E F A B C K L G M N O x EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","194":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"CD","2":"DD"}},B:7,C:"Scoped CSS"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-bundling.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-bundling.js
    index 3562cdd73b534d..e63a19f1eadf65 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-bundling.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-bundling.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"q r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Subresource Loading with Web Bundles"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"q r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Subresource Loading with Web Bundles"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js
    index 47f13d97753bf6..dd8525958a1ec8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/subresource-integrity.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB EC FC"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC","194":"dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Subresource Integrity"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB GC HC"},D:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC","194":"fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Subresource Integrity"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js
    index 6bca5258bc693d..89ef8e4c0ed78d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-css.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","516":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","260":"I v J D E F A B C K L G M N O w g x y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"I"},E:{"1":"v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC","132":"I zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"zB UC"},H:{"260":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"h","260":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"SVG in CSS backgrounds"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","516":"C K L G"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","260":"0 I w J D E F A B C K L G M N O x g y z"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"I"},E:{"1":"w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC","132":"I 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"0B WC"},H:{"260":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"h","260":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"SVG in CSS backgrounds"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js
    index e97823d60322dc..a4ff0bc172d9be 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-filters.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I","4":"v J D"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"SVG filters"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I","4":"w J D"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"SVG filters"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js
    index d8dd61915cdb1d..8f533ee9e6dbfa 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fonts.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"F A B CC","8":"J D E"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB","2":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","130":"EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC"},F:{"1":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","2":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","130":"1 2 3 4 5 6 7 8 9 AB BB CB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"258":"oC"},I:{"1":"tB I sC BC tC uC","2":"f pC qC rC"},J:{"1":"D A"},K:{"1":"A B C qB AC rB","2":"h"},L:{"130":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"I","130":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"130":"9C"},S:{"2":"AD BD"}},B:2,C:"SVG fonts"};
    +module.exports={A:{A:{"2":"F A B EC","8":"J D E"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB","2":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","130":"FB GB HB IB JB KB LB MB NB OB PB QB RB"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC"},F:{"1":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB","2":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","130":"2 3 4 5 6 7 8 9 AB BB CB DB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"258":"qC"},I:{"1":"uB I uC DC vC wC","2":"H rC sC tC"},J:{"1":"D A"},K:{"1":"A B C rB CC sB","2":"h"},L:{"130":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"I","130":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"130":"BD"},S:{"2":"CD DD"}},B:2,C:"SVG fonts"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js
    index 6ed9c2261995cb..d6fd76375c77b5 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-fragment.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","260":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB","132":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D F A B HC zB IC JC LC 0B","132":"E KC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"G M N O w g x y","4":"B C QC RC SC qB AC TC","16":"F PC","132":"0 1 2 3 4 5 6 7 8 9 z AB BB CB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC ZC aC bC cC dC","132":"E YC"},H:{"1":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D","132":"A"},K:{"1":"h rB","4":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","132":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"SVG fragment identifiers"};
    +module.exports={A:{A:{"2":"J D E EC","260":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB","132":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB"},E:{"1":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D F A B JC 0B KC LC NC 1B","132":"E MC"},F:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"G M N O x g y z","4":"B C SC TC UC rB CC VC","16":"F RC","132":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC bC cC dC eC fC","132":"E aC"},H:{"1":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D","132":"A"},K:{"1":"h sB","4":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","132":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"SVG fragment identifiers"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js
    index 5771195f0d3906..bb505a95b54b76 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","388":"F A B"},B:{"4":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC","4":"tB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"HC zB","4":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"4":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"4":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC","4":"f tC uC"},J:{"1":"A","2":"D"},K:{"4":"A B C h qB AC rB"},L:{"4":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"4":"vC"},P:{"4":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"4":"1B"},R:{"4":"9C"},S:{"1":"AD BD"}},B:2,C:"SVG effects for HTML"};
    +module.exports={A:{A:{"2":"J D E EC","388":"F A B"},B:{"4":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC","4":"uB"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"JC 0B","4":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"4":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"4":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC","4":"H vC wC"},J:{"1":"A","2":"D"},K:{"4":"A B C h rB CC sB"},L:{"4":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"4":"xC"},P:{"4":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"4":"2B"},R:{"4":"BD"},S:{"1":"CD DD"}},B:2,C:"SVG effects for HTML"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js
    index 2fb4b3f5cbe634..734e36f094f04f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-html5.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E","129":"F A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","8":"I v J"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"I v HC zB","129":"J D E IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"B SC qB AC","8":"F PC QC RC"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","8":"zB UC BC","129":"E VC WC XC YC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"pC qC rC","129":"tB I sC BC"},J:{"1":"A","129":"D"},K:{"1":"C h rB","8":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"129":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Inline SVG in HTML5"};
    +module.exports={A:{A:{"2":"EC","8":"J D E","129":"F A B"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","8":"I w J"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"I w JC 0B","129":"J D E KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"B UC rB CC","8":"F RC SC TC"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","8":"0B WC DC","129":"E XC YC ZC aC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"rC sC tC","129":"uB I uC DC"},J:{"1":"A","129":"D"},K:{"1":"C h sB","8":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"129":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Inline SVG in HTML5"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js
    index 0b49aca528e084..27e5871f02bf35 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-img.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"0 1 2 3 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC","4":"zB","132":"I v J D E IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"E zB UC BC VC WC XC YC"},H:{"1":"oC"},I:{"1":"f tC uC","2":"pC qC rC","132":"tB I sC BC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"SVG in HTML img element"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"0 1 2 3 4 I w J D E F A B C K L G M N O x g y z"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC","4":"0B","132":"I w J D E KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"E 0B WC DC XC YC ZC aC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"rC sC tC","132":"uB I uC DC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"SVG in HTML img element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js
    index 2deb9084e36ac7..b7eebfde7c75f6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg-smil.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"I"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"HC zB","132":"I v IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"zB UC BC VC"},H:{"2":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"SVG SMIL animation"};
    +module.exports={A:{A:{"2":"EC","8":"J D E F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","8":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"I"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"JC 0B","132":"I w KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"0B WC DC XC"},H:{"2":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"SVG SMIL animation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js
    index 158ffd333c9371..1b535e6701f656 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/svg.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E","772":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","513":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","4":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","4":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"f tC uC","2":"pC qC rC","132":"tB I sC BC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"257":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"SVG (basic support)"};
    +module.exports={A:{A:{"2":"EC","8":"J D E","772":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","513":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","4":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","4":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"H vC wC","2":"rC sC tC","132":"uB I uC DC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"257":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"SVG (basic support)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js
    index d430e6f538b066..bafd1c9c3e044b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/sxg.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB","132":"jB kB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:6,C:"Signed HTTP Exchanges (SXG)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB","132":"kB lB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:6,C:"Signed HTTP Exchanges (SXG)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js
    index ce58ea0f4d16e5..0c41f697888640 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tabindex-attr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"D E F A B","16":"J CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"16":"DC tB EC FC","129":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"16":"I v HC zB","257":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","16":"F"},G:{"769":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"16":"oC"},I:{"16":"tB I f pC qC rC sC BC tC uC"},J:{"16":"D A"},K:{"1":"h","16":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"16":"A B"},O:{"1":"vC"},P:{"16":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"129":"AD BD"}},B:1,C:"tabindex global attribute"};
    +module.exports={A:{A:{"1":"D E F A B","16":"J EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"16":"FC uB GC HC","129":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"16":"I w JC 0B","257":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","16":"F"},G:{"769":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"16":"qC"},I:{"16":"uB I H rC sC tC uC DC vC wC"},J:{"16":"D A"},K:{"1":"h","16":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"16":"A B"},O:{"1":"xC"},P:{"16":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"129":"CD DD"}},B:1,C:"tabindex global attribute"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js
    index 6ba8df08f221a8..5cbb745256e599 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template-literals.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","16":"C"},C:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB"},E:{"1":"A B K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC","129":"C"},F:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"ZC aC bC cC dC eC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC","129":"fC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"ES6 Template Literals (Template Strings)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","16":"C"},C:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB GC HC"},D:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB"},E:{"1":"A B K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC","129":"C"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"bC cC dC eC fC gC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC","129":"hC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"ES6 Template Literals (Template Strings)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js
    index 97ea25abead22e..c600132019c27e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/template.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C","388":"K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x EC FC"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 I v J D E F A B C K L G M N O w g x y z","132":"2 3 4 5 6 7 8 9 AB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D HC zB IC","388":"E KC","514":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","132":"G M N O w g x"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC","388":"E YC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"HTML templates"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C","388":"K L"},C:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O x g y GC HC"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 I w J D E F A B C K L G M N O x g y z","132":"3 4 5 6 7 8 9 AB BB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D JC 0B KC","388":"E MC","514":"LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","132":"G M N O x g y"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC","388":"E aC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"HTML templates"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js
    index 542557b3d195b8..9d71fe2bef5273 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/temporal.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:6,C:"Temporal"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:6,C:"Temporal"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js
    index 05bd985c4a8142..0097a0cbe81327 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/testfeat.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E A B CC","16":"F"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","16":"I v"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"B C"},E:{"2":"I J HC zB IC","16":"v D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC AC TC rB","16":"qB"},G:{"2":"zB UC BC VC WC","16":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC sC BC tC uC","16":"rC"},J:{"2":"A","16":"D"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Test feature - updated"};
    +module.exports={A:{A:{"2":"J D E A B EC","16":"F"},B:{"2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","16":"I w"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"B C"},E:{"2":"I J JC 0B KC","16":"w D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC CC VC sB","16":"rB"},G:{"2":"0B WC DC XC YC","16":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC uC DC vC wC","16":"tC"},J:{"2":"A","16":"D"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Test feature - updated"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js
    index 31d2d0d43b4de9..a89ec3ad48b993 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-decoration.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","2052":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB I v EC FC","1028":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","1060":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O w g x y z AB BB"},D:{"2":"0 1 I v J D E F A B C K L G M N O w g x y z","226":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB","2052":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D HC zB IC JC","772":"K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","804":"E F A B C LC 0B qB","1316":"KC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB PC QC RC SC qB AC TC rB","226":"BB CB DB EB FB GB HB IB JB","2052":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"zB UC BC VC WC XC","292":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","2052":"h"},L:{"2052":"H"},M:{"1028":"H"},N:{"2":"A B"},O:{"2052":"vC"},P:{"2":"I wC xC","2052":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2052":"1B"},R:{"2052":"9C"},S:{"1028":"AD BD"}},B:4,C:"text-decoration styling"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","2052":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"FC uB I w GC HC","1028":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","1060":"0 1 2 3 4 5 6 7 8 9 J D E F A B C K L G M N O x g y z AB BB CB"},D:{"2":"0 1 2 I w J D E F A B C K L G M N O x g y z","226":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB","2052":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D JC 0B KC LC","772":"K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","804":"E F A B C NC 1B rB","1316":"MC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB RC SC TC UC rB CC VC sB","226":"CB DB EB FB GB HB IB JB KB","2052":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"0B WC DC XC YC ZC","292":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","2052":"h"},L:{"2052":"H"},M:{"1028":"f"},N:{"2":"A B"},O:{"2052":"xC"},P:{"2":"I yC zC","2052":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2052":"2B"},R:{"2052":"BD"},S:{"1028":"CD DD"}},B:4,C:"text-decoration styling"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js
    index 81d915876a2c16..2b7a14bd6f8c31 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-emphasis.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"l m n o p q r s t u f H","2":"C K L G M N O","164":"P Q R S T U V W X Y Z a b c d e i j k"},C:{"1":"MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB EC FC","322":"LB"},D:{"1":"l m n o p q r s t u f H xB yB GC","2":"0 I v J D E F A B C K L G M N O w g x y z","164":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC","164":"D JC"},F:{"1":"V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","164":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC","164":"tC uC"},J:{"2":"D","164":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"164":"vC"},P:{"1":"g 7C 8C","164":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C"},Q:{"164":"1B"},R:{"164":"9C"},S:{"1":"AD BD"}},B:4,C:"text-emphasis styling"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"l m n o p q r s t u v f H","2":"C K L G M N O","164":"P Q R S T U V W X Y Z a b c d e i j k"},C:{"1":"NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB GC HC","322":"MB"},D:{"1":"l m n o p q r s t u v f H yB zB IC","2":"0 1 I w J D E F A B C K L G M N O x g y z","164":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC","164":"D LC"},F:{"1":"V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","164":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC","164":"vC wC"},J:{"2":"D","164":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"164":"xC"},P:{"1":"g 9C AD","164":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C"},Q:{"164":"2B"},R:{"164":"BD"},S:{"1":"CD DD"}},B:4,C:"text-emphasis styling"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js
    index 898ba1850006ed..c51fa2b3fc012f 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-overflow.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B","2":"CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","8":"DC tB I v J EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","33":"F PC QC RC SC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"h rB","33":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"CSS3 Text-overflow"};
    +module.exports={A:{A:{"1":"J D E F A B","2":"EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","8":"FC uB I w J GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","33":"F RC SC TC UC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"h sB","33":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"CSS3 Text-overflow"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js
    index 96232cc58279e5..f4403f3d7269f0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-size-adjust.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","258":"2"},E:{"2":"I v J D E F A B C K L G HC zB JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","258":"IC"},F:{"1":"JB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB KB PC QC RC SC qB AC TC rB"},G:{"2":"zB UC BC","33":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"33":"H"},N:{"161":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS text-size-adjust"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","33":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","258":"3"},E:{"2":"I w J D E F A B C K L G JC 0B LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","258":"KC"},F:{"1":"KB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB LB RC SC TC UC rB CC VC sB"},G:{"2":"0B WC DC","33":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"33":"f"},N:{"161":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS text-size-adjust"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js
    index d2a0d8b1f1b6f0..532b1dda325d74 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/text-stroke.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","161":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB EC FC","161":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","450":"OB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"33":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"33":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","36":"zB"},H:{"2":"oC"},I:{"2":"tB","33":"I f pC qC rC sC BC tC uC"},J:{"33":"D A"},K:{"2":"A B C qB AC rB","33":"h"},L:{"33":"H"},M:{"161":"H"},N:{"2":"A B"},O:{"33":"vC"},P:{"33":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"33":"1B"},R:{"33":"9C"},S:{"161":"AD BD"}},B:7,C:"CSS text-stroke and text-fill"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L","33":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","161":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB GC HC","161":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","450":"PB"},D:{"33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"33":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"33":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","36":"0B"},H:{"2":"qC"},I:{"2":"uB","33":"I H rC sC tC uC DC vC wC"},J:{"33":"D A"},K:{"2":"A B C rB CC sB","33":"h"},L:{"33":"H"},M:{"161":"f"},N:{"2":"A B"},O:{"33":"xC"},P:{"33":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"33":"2B"},R:{"33":"BD"},S:{"161":"CD DD"}},B:7,C:"CSS text-stroke and text-fill"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js
    index 827a5d7f478179..98e8fb46bcad8d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textcontent.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","16":"F"},G:{"1":"E UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Node.textContent"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","16":"F"},G:{"1":"E WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Node.textContent"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js
    index e2cee871d951d2..8809dc5e749512 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/textencoder.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O EC FC","132":"w"},D:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"TextEncoder & TextDecoder"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O GC HC","132":"x"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"TextEncoder & TextDecoder"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js
    index 85c4dd36c4d89c..6c47758dae4bf1 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-1.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D CC","66":"E F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB","2":"DC tB I v J D E F A B C K L G M N O w g x y EC FC","66":"z","129":"gB hB iB jB kB h lB mB nB oB","388":"pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T","2":"I v J D E F A B C K L G M N O w g x","1540":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"D E F A B C K KC LC 0B qB rB","2":"I v J HC zB IC JC","513":"L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB rB","2":"F B C PC QC RC SC qB AC TC","1540":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"1":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"1":"A","2":"D"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"129":"H"},N:{"1":"B","66":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"TLS 1.1"};
    +module.exports={A:{A:{"1":"B","2":"J D EC","66":"E F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB","2":"FC uB I w J D E F A B C K L G M N O x g y z GC HC","66":"0","129":"hB iB jB kB lB h mB nB oB pB","388":"qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T","2":"I w J D E F A B C K L G M N O x g y","1540":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"D E F A B C K MC NC 1B rB sB","2":"I w J JC 0B KC LC","513":"L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB sB","2":"F B C RC SC TC UC rB CC VC","1540":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"1":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"1":"A","2":"D"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"129":"f"},N:{"1":"B","66":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"TLS 1.1"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js
    index 7844ac40b24eda..2565836e1896e6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D CC","66":"E F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O w g x y z EC FC","66":"0 1 2"},D:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F G PC","66":"B C QC RC SC qB AC TC rB"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"1":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"1":"A","2":"D"},K:{"1":"h rB","2":"A B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","66":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"TLS 1.2"};
    +module.exports={A:{A:{"1":"B","2":"J D EC","66":"E F A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 FC uB I w J D E F A B C K L G M N O x g y z GC HC","66":"1 2 3"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F G RC","66":"B C SC TC UC rB CC VC sB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"1":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"1":"A","2":"D"},K:{"1":"h sB","2":"A B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","66":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"TLS 1.2"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js
    index a46fee4452fae4..695a1035356675 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/tls1-3.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB EC FC","132":"ZB vB aB","450":"RB SB TB UB VB WB XB YB uB"},D:{"1":"iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","706":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB","1028":"K rB 1B"},F:{"1":"XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB","706":"UB VB WB"},G:{"1":"gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:6,C:"TLS 1.3"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB GC HC","132":"aB wB bB","450":"SB TB UB VB WB XB YB ZB vB"},D:{"1":"jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","706":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB","1028":"K sB 2B"},F:{"1":"YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB","706":"VB WB XB"},G:{"1":"iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:6,C:"TLS 1.3"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js
    index 26cada18054479..12e49002624e4d 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/touch.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","8":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","578":"C K L G M N O"},C:{"1":"0 O w g x y z SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","4":"I v J D E F A B C K L G M N","194":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A","260":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:2,C:"Touch events"};
    +module.exports={A:{A:{"2":"J D E F EC","8":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","578":"C K L G M N O"},C:{"1":"0 1 O x g y z TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","4":"I w J D E F A B C K L G M N","194":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g y"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A","260":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:2,C:"Touch events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js
    index 7d486078583776..452f1cc2575b70 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms2d.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E","129":"A B","161":"F"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","33":"I v J D E F A B C K L G EC FC"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","33":"I v J D E HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F PC QC","33":"B C G M N O w g x y RC SC qB AC TC"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","33":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","33":"tB I pC qC rC sC BC tC uC"},J:{"33":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 2D Transforms"};
    +module.exports={A:{A:{"2":"EC","8":"J D E","129":"A B","161":"F"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K L G M"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","33":"I w J D E F A B C K L G GC HC"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","33":"I w J D E JC 0B KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F RC SC","33":"B C G M N O x g y z TC UC rB CC VC"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","33":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","33":"uB I rC sC tC uC DC vC wC"},J:{"33":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 2D Transforms"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js
    index 2e5ae428fa8796..1960e25c979f30 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/transforms3d.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F EC FC","33":"A B C K L G"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B","33":"0 1 2 3 4 5 6 7 8 9 C K L G M N O w g x y z AB BB"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB","33":"I v J D E IC JC KC","257":"F A B C K L G LC 0B qB rB 1B MC NC 2B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"G M N O w g x y"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","33":"E zB UC BC VC WC XC YC","257":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"pC qC rC","33":"tB I sC BC tC uC"},J:{"33":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:5,C:"CSS3 3D Transforms"};
    +module.exports={A:{A:{"2":"J D E F EC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F GC HC","33":"A B C K L G"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B","33":"0 1 2 3 4 5 6 7 8 9 C K L G M N O x g y z AB BB CB"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B","33":"I w J D E KC LC MC","257":"F A B C K L G NC 1B rB sB 2B OC PC 3B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"G M N O x g y z"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","33":"E 0B WC DC XC YC ZC aC","257":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"rC sC tC","33":"uB I uC DC vC wC"},J:{"33":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:5,C:"CSS3 3D Transforms"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js
    index 6aaa34dddcdb29..4fd7a7975a6ba2 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/trusted-types.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Trusted Types for DOM manipulation"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Trusted Types for DOM manipulation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js
    index 00a5f4608dc063..79c6fa2ee0cb9b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/ttf.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e QC RC SC qB AC TC rB","2":"F PC"},G:{"1":"E BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC"},H:{"2":"oC"},I:{"1":"tB I f qC rC sC BC tC uC","2":"pC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"TTF/OTF - TrueType and OpenType font support"};
    +module.exports={A:{A:{"2":"J D E EC","132":"F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e SC TC UC rB CC VC sB","2":"F RC"},G:{"1":"E DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC"},H:{"2":"qC"},I:{"1":"uB I H sC tC uC DC vC wC","2":"rC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"TTF/OTF - TrueType and OpenType font support"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js
    index d2ee5bb5ae3f6b..181da2d614f88e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/typedarrays.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"B","2":"J D E F CC","132":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB","260":"IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC","260":"BC"},H:{"1":"oC"},I:{"1":"I f sC BC tC uC","2":"tB pC qC rC"},J:{"1":"A","2":"D"},K:{"1":"C h rB","2":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Typed Arrays"};
    +module.exports={A:{A:{"1":"B","2":"J D E F EC","132":"A"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B","260":"KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC","260":"DC"},H:{"1":"qC"},I:{"1":"I H uC DC vC wC","2":"uB rC sC tC"},J:{"1":"A","2":"D"},K:{"1":"C h sB","2":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Typed Arrays"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js
    index 6de6817a9ea7ef..bb35b9719d46ed 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/u2f.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O s t u f H","513":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r"},C:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC","322":"NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB s t u f H xB yB GC","130":"EB FB GB","513":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j","578":"k l m n o p q r"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB HB PC QC RC SC qB AC TC rB","513":"GB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"1":"BD","322":"AD"}},B:7,C:"FIDO U2F API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O s t u v f H","513":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r"},C:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC","322":"OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB s t u v f H yB zB IC","130":"FB GB HB","513":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j","578":"k l m n o p q r"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB sB"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB IB RC SC TC UC rB CC VC sB","513":"HB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"1":"DD","322":"CD"}},B:7,C:"FIDO U2F API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js
    index b07353be16d505..70edb913d45ab6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/unhandledrejection.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB EC FC"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC","16":"dC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:1,C:"unhandledrejection/rejectionhandled events"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB GC HC"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB"},G:{"1":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC","16":"fC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:1,C:"unhandledrejection/rejectionhandled events"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
    index e5454fc65e9262..d8be57168accaa 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/upgradeinsecurerequests.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB EC FC"},D:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Upgrade Insecure Requests"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB GC HC"},D:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Upgrade Insecure Requests"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
    index 7dd19215fca695..d7efbccf2893ed 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url-scroll-to-text-fragment.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","66":"P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h","66":"lB mB nB oB pB P Q"},E:{"1":"6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB"},F:{"1":"gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB PC QC RC SC qB AC TC rB","66":"eB fB"},G:{"1":"6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"URL Scroll-To-Text Fragment"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","66":"P Q R"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h","66":"mB nB oB pB qB P Q"},E:{"1":"7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB"},F:{"1":"hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB RC SC TC UC rB CC VC sB","66":"fB gB"},G:{"1":"7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"URL Scroll-To-Text Fragment"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js
    index 03b43998c9def0..229e3b12b073cf 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/url.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 DC tB I v J D E F A B C K L G M N O w g x y z EC FC"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w g x y","130":"0 1 2 3 4 5 6 7 z"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC JC","130":"D"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","130":"G M N O"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC","130":"XC"},H:{"2":"oC"},I:{"1":"f uC","2":"tB I pC qC rC sC BC","130":"tC"},J:{"2":"D","130":"A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"URL API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 FC uB I w J D E F A B C K L G M N O x g y z GC HC"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x g y z","130":"0 1 2 3 4 5 6 7 8"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC LC","130":"D"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","130":"G M N O"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC","130":"ZC"},H:{"2":"qC"},I:{"1":"H wC","2":"uB I rC sC tC uC DC","130":"vC"},J:{"2":"D","130":"A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"URL API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js
    index eea955d76c89b4..cebc1606833a10 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/urlsearchparams.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","132":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB"},D:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB"},E:{"1":"B C K L G 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC"},F:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"URLSearchParams"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC","132":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB"},D:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB"},E:{"1":"B C K L G 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC"},F:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB"},G:{"1":"eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"URLSearchParams"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js
    index 24771f0ca1b1c5..040cd5a54045b0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/use-strict.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","132":"v IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"1":"oC"},I:{"1":"tB I f sC BC tC uC","2":"pC qC rC"},J:{"1":"D A"},K:{"1":"C h AC rB","2":"A B qB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"ECMAScript 5 Strict Mode"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","132":"w KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"1":"qC"},I:{"1":"uB I H uC DC vC wC","2":"rC sC tC"},J:{"1":"D A"},K:{"1":"C h CC sB","2":"A B rB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"ECMAScript 5 Strict Mode"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js
    index 2aeb164729b1fb..f15af44f67f244 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-select-none.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","33":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","33":"C K L G M N O"},C:{"1":"hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","33":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB EC FC"},D:{"1":"UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","33":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB"},E:{"1":"OC","33":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B"},F:{"1":"HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","33":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB"},G:{"33":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","33":"tB I pC qC rC sC BC tC uC"},J:{"33":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"33":"A B"},O:{"1":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","33":"I wC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","33":"AD"}},B:5,C:"CSS user-select: none"};
    +module.exports={A:{A:{"2":"J D E F EC","33":"A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","33":"C K L G M N O"},C:{"1":"iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","33":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB GC HC"},D:{"1":"VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","33":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB"},E:{"1":"QC","33":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},F:{"1":"IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","33":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB"},G:{"33":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","33":"uB I rC sC tC uC DC vC wC"},J:{"33":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"33":"A B"},O:{"1":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","33":"I yC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","33":"CD"}},B:5,C:"CSS user-select: none"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js
    index 1b725ae693396b..4e851379acac16 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/user-timing.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EC FC"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"User Timing API"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB GC HC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 I w J D E F A B C K L G M N O x g y z"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"User Timing API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js
    index e40e13a30466d6..412e15c4707471 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/variable-fonts.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB EC FC","4609":"aB bB cB dB eB fB gB hB iB","4674":"vB","5698":"ZB","7490":"TB UB VB WB XB","7746":"YB uB","8705":"jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB","4097":"eB","4290":"uB ZB vB","6148":"aB bB cB dB"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","4609":"B C qB rB","8193":"K L 1B MC"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PC QC RC SC qB AC TC rB","4097":"TB","6148":"PB QB RB SB"},G:{"1":"hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC","4097":"dC eC fC gC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"4097":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"2":"I wC xC yC","4097":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:5,C:"Variable fonts"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB GC HC","4609":"bB cB dB eB fB gB hB iB jB","4674":"wB","5698":"aB","7490":"UB VB WB XB YB","7746":"ZB vB","8705":"kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB","4097":"fB","4290":"vB aB wB","6148":"bB cB dB eB"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","4609":"B C rB sB","8193":"K L 2B OC"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB RC SC TC UC rB CC VC sB","4097":"UB","6148":"QB RB SB TB"},G:{"1":"jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC","4097":"fC gC hC iC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"4097":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"2":"I yC zC 0C","4097":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:5,C:"Variable fonts"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js
    index 0ed68a57c239cb..721dd36fdcb8ee 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vector-effect.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J D E F A B C K L"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","2":"F B PC QC RC SC qB AC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"1":"oC"},I:{"1":"f tC uC","16":"tB I pC qC rC sC BC"},J:{"16":"D A"},K:{"1":"C h rB","2":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"SVG vector-effect: non-scaling-stroke"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J D E F A B C K L"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","2":"F B RC SC TC UC rB CC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"1":"qC"},I:{"1":"H vC wC","16":"uB I rC sC tC uC DC"},J:{"16":"D A"},K:{"1":"C h sB","2":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"SVG vector-effect: non-scaling-stroke"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js
    index 348435cfc415dd..75f5ff2c2c277c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/vibration.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A EC FC","33":"B C K L G"},D:{"1":"6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 I v J D E F A B C K L G M N O w g x y z"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"Vibration API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A GC HC","33":"B C K L G"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 I w J D E F A B C K L G M N O x g y z"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"Vibration API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js
    index 3d0fc11fed7f65..ce2bfef5085869 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/video.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","260":"I v J D E F A B C K L G M N O w EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A IC JC KC LC 0B","2":"HC zB","513":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC","513":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","132":"pC qC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Video element"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","260":"I w J D E F A B C K L G M N O x GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A KC LC MC NC 1B","2":"JC 0B","513":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC","513":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","132":"rC sC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Video element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js
    index 3a73f486254807..ee6e76680f1913 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/videotracks.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB","322":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J HC zB IC"},F:{"2":"0 1 2 3 4 5 6 7 F B C G M N O w g x y z PC QC RC SC qB AC TC rB","322":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","322":"h"},L:{"322":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"322":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"322":"1B"},R:{"322":"9C"},S:{"194":"AD BD"}},B:1,C:"Video Tracks"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O","322":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB","322":"MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J JC 0B KC"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G M N O x g y z RC SC TC UC rB CC VC sB","322":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","322":"h"},L:{"322":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"322":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"322":"2B"},R:{"322":"BD"},S:{"194":"CD DD"}},B:1,C:"Video Tracks"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js
    index 648482f84e508f..5879c1335b89ba 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-unit-variants.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q","194":"r s t"},C:{"1":"n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m EC FC"},D:{"1":"u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l","194":"m n o p q r s t"},E:{"1":"3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B"},F:{"1":"d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z PC QC RC SC qB AC TC rB","194":"a b c"},G:{"1":"3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:5,C:"Small, Large, and Dynamic viewport units"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q","194":"r s t"},C:{"1":"n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m GC HC"},D:{"1":"u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l","194":"m n o p q r s t"},E:{"1":"4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B"},F:{"1":"d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z RC SC TC UC rB CC VC sB","194":"a b c"},G:{"1":"4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:5,C:"Small, Large, and Dynamic viewport units"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js
    index 207ab8da018a57..c1bf09615e0914 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/viewport-units.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","132":"F","260":"A B"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","260":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L G M N O EC FC"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N O w","260":"0 1 g x y z"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC","260":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC","516":"XC","772":"WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"260":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"Viewport units: vw, vh, vmin, vmax"};
    +module.exports={A:{A:{"2":"J D E EC","132":"F","260":"A B"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","260":"C K L G"},C:{"1":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L G M N O GC HC"},D:{"1":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N O x","260":"0 1 2 g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC","260":"J"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC","516":"ZC","772":"YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"260":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"Viewport units: vw, vh, vmin, vmax"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js
    index 57af981b298d2f..794c104d4e8711 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wai-aria.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D CC","4":"E F A B"},B:{"4":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"4":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"HC zB","4":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F","4":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"4":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"4":"oC"},I:{"2":"tB I pC qC rC sC BC","4":"f tC uC"},J:{"2":"D A"},K:{"4":"A B C h qB AC rB"},L:{"4":"H"},M:{"4":"H"},N:{"4":"A B"},O:{"4":"vC"},P:{"4":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"4":"1B"},R:{"4":"9C"},S:{"4":"AD BD"}},B:2,C:"WAI-ARIA Accessibility features"};
    +module.exports={A:{A:{"2":"J D EC","4":"E F A B"},B:{"4":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"4":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"4":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"JC 0B","4":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F","4":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"4":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"4":"qC"},I:{"2":"uB I rC sC tC uC DC","4":"H vC wC"},J:{"2":"D A"},K:{"4":"A B C h rB CC sB"},L:{"4":"H"},M:{"4":"f"},N:{"4":"A B"},O:{"4":"xC"},P:{"4":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"4":"2B"},R:{"4":"BD"},S:{"4":"CD DD"}},B:2,C:"WAI-ARIA Accessibility features"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js
    index 2785ec5b1f14da..8fe5306bd5b7a3 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wake-lock.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","194":"P Q R S T U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB","194":"jB kB h lB mB nB oB pB P Q R S T"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B","4":"9B OC"},F:{"1":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB PC QC RC SC qB AC TC rB","194":"YB ZB aB bB cB dB eB fB gB hB iB jB kB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B","4":"9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 4C 5C sB 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:4,C:"Screen Wake Lock API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","194":"P Q R S T U V W X Y"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB","194":"kB lB h mB nB oB pB qB P Q R S T"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B","4":"AC BC QC"},F:{"1":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB RC SC TC UC rB CC VC sB","194":"ZB aB bB cB dB eB fB gB hB iB jB kB lB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B","4":"AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 6C 7C tB 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:4,C:"Screen Wake Lock API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js
    index f6ed7624ad4353..fb817aa0658fe0 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wasm.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L","578":"G"},C:{"1":"TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB EC FC","194":"NB OB PB QB RB","1025":"SB"},D:{"1":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB","322":"RB SB TB UB VB WB"},E:{"1":"B C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB PC QC RC SC qB AC TC rB","322":"EB FB GB HB IB JB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","194":"AD"}},B:6,C:"WebAssembly"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L","578":"G"},C:{"1":"UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB GC HC","194":"OB PB QB RB SB","1025":"TB"},D:{"1":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB","322":"SB TB UB VB WB XB"},E:{"1":"B C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B"},F:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB RC SC TC UC rB CC VC sB","322":"FB GB HB IB JB KB"},G:{"1":"fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","194":"CD"}},B:6,C:"WebAssembly"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js
    index a8ea068ef05b51..a0445b3b6fe881 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wav.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e RC SC qB AC TC rB","2":"F PC QC"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","16":"A"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"Wav audio format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e TC UC rB CC VC sB","2":"F RC SC"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","16":"A"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"Wav audio format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js
    index 1163e66ce8fd36..0e69eb868944c7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wbr-element.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D CC","2":"E F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"HC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","16":"F"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC"},H:{"1":"oC"},I:{"1":"tB I f rC sC BC tC uC","16":"pC qC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"wbr (word break opportunity) element"};
    +module.exports={A:{A:{"1":"J D EC","2":"E F A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","16":"F"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC"},H:{"1":"qC"},I:{"1":"uB I H tC uC DC vC wC","16":"rC sC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"wbr (word break opportunity) element"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js
    index 1ee031e2fffc37..789b10fe82efb8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-animation.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","260":"P Q R S"},C:{"1":"R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","260":"uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB","516":"NB OB PB QB RB SB TB UB VB WB XB YB","580":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB","2049":"mB nB oB pB P Q"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB","132":"CB DB EB","260":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC 0B","1090":"B C K qB rB","2049":"L 1B MC"},F:{"1":"jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y PC QC RC SC qB AC TC rB","132":"0 1 z","260":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC","1090":"dC eC fC gC hC iC jC","2049":"kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"260":"vC"},P:{"260":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"260":"1B"},R:{"1":"9C"},S:{"1":"BD","516":"AD"}},B:5,C:"Web Animations API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","260":"P Q R S"},C:{"1":"R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z GC HC","260":"vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB","516":"OB PB QB RB SB TB UB VB WB XB YB ZB","580":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB","2049":"nB oB pB qB P Q"},D:{"1":"T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB","132":"DB EB FB","260":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC 1B","1090":"B C K rB sB","2049":"L 2B OC"},F:{"1":"kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y z RC SC TC UC rB CC VC sB","132":"0 1 2","260":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC","1090":"fC gC hC iC jC kC lC","2049":"mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"260":"xC"},P:{"260":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"260":"2B"},R:{"1":"BD"},S:{"1":"DD","516":"CD"}},B:5,C:"Web Animations API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js
    index b5e5350acf017e..0c5fa7c0a40371 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-app-manifest.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M","130":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","578":"nB oB pB P Q R wB S T U"},D:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC","4":"9B","260":"eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"Add to home screen (A2HS)"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M","130":"N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","578":"oB pB qB P Q R xB S T U"},D:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC","4":"AC BC","260":"gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"Add to home screen (A2HS)"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js
    index 254c8c75ee2d68..cdb7b8734c3aa4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-bluetooth.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","1025":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB","194":"LB MB NB OB PB QB RB SB","706":"TB UB VB","1025":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB PC QC RC SC qB AC TC rB","450":"CB DB EB FB","706":"GB HB IB","1025":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC uC","1025":"f"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","1025":"h"},L:{"1025":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1025":"vC"},P:{"1":"g xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC"},Q:{"2":"1B"},R:{"1025":"9C"},S:{"2":"AD BD"}},B:7,C:"Web Bluetooth"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","1025":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB","194":"MB NB OB PB QB RB SB TB","706":"UB VB WB","1025":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB RC SC TC UC rB CC VC sB","450":"DB EB FB GB","706":"HB IB JB","1025":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC wC","1025":"H"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","1025":"h"},L:{"1025":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1025":"xC"},P:{"1":"g zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC"},Q:{"2":"2B"},R:{"1025":"BD"},S:{"2":"CD DD"}},B:7,C:"Web Bluetooth"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js
    index f3175665d7bfd2..fe2e11ad516cd7 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-serial.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","66":"P Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB","66":"pB P Q R S T U V W X"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB PC QC RC SC qB AC TC rB","66":"dB eB fB gB hB iB jB kB h lB mB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"Web Serial API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","66":"P Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB","66":"qB P Q R S T U V W X"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB RC SC TC UC rB CC VC sB","66":"eB fB gB hB iB jB kB lB h mB nB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"Web Serial API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js
    index 77199c785729d2..b08ef300d2b077 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/web-share.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q","516":"R S T U V W X Y Z a b c d"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X","130":"0 O w g x y z","1028":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"L G MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB","2049":"K rB 1B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC","2049":"gC hC iC jC kC"},H:{"2":"oC"},I:{"2":"tB I pC qC rC sC BC tC","258":"f uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I","258":"wC xC yC"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:4,C:"Web Share API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q","516":"R S T U V W X Y Z a b c d"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X","130":"0 1 O x g y z","1028":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"L G OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB","2049":"K sB 2B"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC","2049":"iC jC kC lC mC"},H:{"2":"qC"},I:{"2":"uB I rC sC tC uC DC vC","258":"H wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I","258":"yC zC 0C"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:4,C:"Web Share API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js
    index 713e2372ab7993..ace323f4667018 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webauthn.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C","226":"K L G M N"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB EC FC","5124":"ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB"},E:{"1":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A B C HC zB IC JC KC LC 0B qB","322":"rB"},F:{"1":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB PC QC RC SC qB AC TC rB"},G:{"1":"mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC","578":"iC","2052":"lC","3076":"jC kC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1028":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2":"AD"}},B:2,C:"Web Authentication API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C","226":"K L G M N"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB GC HC","5124":"aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB"},E:{"1":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB","322":"sB"},F:{"1":"VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB RC SC TC UC rB CC VC sB"},G:{"1":"oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC","578":"kC","2052":"nC","3076":"lC mC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1028":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2":"CD"}},B:2,C:"Web Authentication API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webcodecs.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webcodecs.js
    index 80f03394fa77f9..faf4accea3c064 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webcodecs.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webcodecs.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"d e i j k l m n o p q r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B","260":"9B OC"},F:{"1":"Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B","260":"9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 6C 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"WebCodecs API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"d e i j k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B","260":"AC BC QC"},F:{"1":"Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B","260":"AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 8C 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"WebCodecs API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js
    index 38911a95920f96..41112f287278ab 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"CC","8":"J D E F A","129":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","129":"C K L G M N O"},C:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","129":"I v J D E F A B C K L G M N O w g x y z"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D","129":"0 1 2 3 4 5 6 7 8 E F A B C K L G M N O w g x y z"},E:{"1":"E F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB","129":"J D IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B PC QC RC SC qB AC TC","129":"C G M N O rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC XC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"1":"A","2":"D"},K:{"1":"C h rB","2":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A","129":"B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","129":"AD"}},B:6,C:"WebGL - 3D Canvas graphics"};
    +module.exports={A:{A:{"2":"EC","8":"J D E F A","129":"B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","129":"C K L G M N O"},C:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","129":"0 I w J D E F A B C K L G M N O x g y z"},D:{"1":"AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D","129":"0 1 2 3 4 5 6 7 8 9 E F A B C K L G M N O x g y z"},E:{"1":"E F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B","129":"J D KC LC MC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B RC SC TC UC rB CC VC","129":"C G M N O sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC ZC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"1":"A","2":"D"},K:{"1":"C h sB","2":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A","129":"B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","129":"CD"}},B:6,C:"WebGL - 3D Canvas graphics"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js
    index ce05cbb1a5c028..62d2d0820cc1bb 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgl2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"IB JB KB","450":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB","2242":"LB MB NB OB PB QB"},D:{"1":"WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB","578":"JB KB LB MB NB OB PB QB RB SB TB UB VB"},E:{"1":"G NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F A HC zB IC JC KC LC","1090":"B C K L 0B qB rB 1B MC"},F:{"1":"JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB PC QC RC SC qB AC TC rB"},G:{"1":"nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC","1090":"fC gC hC iC jC kC lC mC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","2242":"AD"}},B:6,C:"WebGL 2.0"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"JB KB LB","450":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB","2242":"MB NB OB PB QB RB"},D:{"1":"XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB","578":"KB LB MB NB OB PB QB RB SB TB UB VB WB"},E:{"1":"G PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F A JC 0B KC LC MC NC","1090":"B C K L 1B rB sB 2B OC"},F:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB RC SC TC UC rB CC VC sB"},G:{"1":"pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC","1090":"hC iC jC kC lC mC nC oC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","2242":"CD"}},B:6,C:"WebGL 2.0"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js
    index 68c5bdcb064960..9a8df01afdf737 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webgpu.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P","578":"Q R S T U V W X Y Z a b c","1602":"d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB EC FC","194":"bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P","578":"Q R S T U V W X Y Z a b c","1602":"d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B HC zB IC JC KC LC 0B","322":"C K L G qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB PC QC RC SC qB AC TC rB","578":"h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"194":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD","194":"BD"}},B:5,C:"WebGPU"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P","578":"Q R S T U V W X Y Z a b c","1602":"d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB GC HC","194":"cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P","578":"Q R S T U V W X Y Z a b c","1602":"d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B JC 0B KC LC MC NC 1B","322":"C K L G rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB RC SC TC UC rB CC VC sB","578":"h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"194":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD","194":"DD"}},B:5,C:"WebGPU"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js
    index dd46bef8149a91..7d8b7c4b291b16 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webhid.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O","66":"P Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB","66":"pB P Q R S T U V W X"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB PC QC RC SC qB AC TC rB","66":"eB fB gB hB iB jB kB h lB mB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"WebHID API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O","66":"P Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB","66":"qB P Q R S T U V W X"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB RC SC TC UC rB CC VC sB","66":"fB gB hB iB jB kB lB h mB nB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"WebHID API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js
    index b082e7051d40e5..327b1a78f6a52b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webkit-user-drag.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"16":"I v J D E F A B C K L G","132":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"F B C PC QC RC SC qB AC TC rB","132":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"CSS -webkit-user-drag property"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"16":"I w J D E F A B C K L G","132":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"F B C RC SC TC UC rB CC VC sB","132":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"CSS -webkit-user-drag property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js
    index bf9383cb8d511f..542c7338b180c4 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webm.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E CC","520":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","8":"C K","388":"L G M N O"},C:{"1":"4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","132":"0 1 2 3 I v J D E F A B C K L G M N O w g x y z"},D:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v","132":"0 J D E F A B C K L G M N O w g x y z"},E:{"1":"sB 6B 7B 8B 9B OC","2":"HC","8":"I v zB IC","520":"J D E F A B C JC KC LC 0B qB","1028":"K rB 1B","7172":"L","8196":"G MC NC 2B 3B 4B 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F PC QC RC","132":"B C G SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC","1028":"gC hC iC jC kC","3076":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"pC qC","132":"tB I rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"8":"A B"},O:{"1":"vC"},P:{"1":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","132":"I"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:6,C:"WebM video format"};
    +module.exports={A:{A:{"2":"J D E EC","520":"F A B"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","8":"C K","388":"L G M N O"},C:{"1":"5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","132":"0 1 2 3 4 I w J D E F A B C K L G M N O x g y z"},D:{"1":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w","132":"0 1 J D E F A B C K L G M N O x g y z"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"JC","8":"I w 0B KC","520":"J D E F A B C LC MC NC 1B rB","1028":"K sB 2B","7172":"L","8196":"G OC PC 3B 4B 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F RC SC TC","132":"B C G UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC","1028":"iC jC kC lC mC","3076":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"rC sC","132":"uB I tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"8":"A B"},O:{"1":"xC"},P:{"1":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","132":"I"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:6,C:"WebM video format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js
    index 6132e5cef2a754..6253a18ecaa78c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webnfc.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O P Y Z a b c d e i j k l m n o p q r s t u f H","450":"Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","450":"Q R S T U V W X"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","450":"fB gB hB iB jB kB h lB mB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"257":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"Web NFC"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O P Y Z a b c d e i j k l m n o p q r s t u v f H","450":"Q R S T U V W X"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","450":"Q R S T U V W X"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","450":"gB hB iB jB kB lB h mB nB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"257":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"Web NFC"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js
    index 8e8ba698feec46..25013f9738fabd 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webp.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N"},C:{"1":"dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","8":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v","8":"J D E","132":"F A B C K L G M N O w g x y","260":"0 1 2 3 4 5 6 7 z"},E:{"1":"sB 6B 7B 8B 9B OC","2":"I v J D E F A B C K HC zB IC JC KC LC 0B qB rB 1B","516":"L G MC NC 2B 3B 4B 5B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F PC QC RC","8":"B SC","132":"qB AC TC","260":"C G M N O rB"},G:{"1":"lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC"},H:{"1":"oC"},I:{"1":"f BC tC uC","2":"tB pC qC rC","132":"I sC"},J:{"2":"D A"},K:{"1":"C h qB AC rB","2":"A","132":"B"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","8":"AD"}},B:6,C:"WebP image format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N"},C:{"1":"eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","8":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB"},D:{"1":"9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w","8":"J D E","132":"F A B C K L G M N O x g y z","260":"0 1 2 3 4 5 6 7 8"},E:{"1":"tB 7B 8B 9B AC BC QC","2":"I w J D E F A B C K JC 0B KC LC MC NC 1B rB sB 2B","516":"L G OC PC 3B 4B 5B 6B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F RC SC TC","8":"B UC","132":"rB CC VC","260":"C G M N O sB"},G:{"1":"nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC"},H:{"1":"qC"},I:{"1":"H DC vC wC","2":"uB rC sC tC","132":"I uC"},J:{"2":"D A"},K:{"1":"C h rB CC sB","2":"A","132":"B"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","8":"CD"}},B:6,C:"WebP image format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js
    index 714b51620731aa..3704b3e051f8cc 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/websockets.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB EC FC","132":"I v","292":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"I v J D E F A B C K L","260":"G"},E:{"1":"D E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","132":"v IC","260":"J JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F PC QC RC SC","132":"B C qB AC TC"},G:{"1":"E WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC","132":"BC VC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","129":"D"},K:{"1":"h rB","2":"A","132":"B C qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Web Sockets"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB GC HC","132":"I w","292":"J D E F A"},D:{"1":"0 1 2 3 4 5 6 7 8 9 M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"I w J D E F A B C K L","260":"G"},E:{"1":"D E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","132":"w KC","260":"J LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F RC SC TC UC","132":"B C rB CC VC"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC","132":"DC XC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","129":"D"},K:{"1":"h sB","2":"A","132":"B C rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Web Sockets"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webtransport.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webtransport.js
    index d3400d1f027abb..7d73b48900cf56 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webtransport.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webtransport.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"k l m n o p q r s t u f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z e i","66":"a b c d"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB PC QC RC SC qB AC TC rB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"1":"g 7C 8C","2":"I wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:5,C:"WebTransport"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"k l m n o p q r s t u v f H","2":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z e i","66":"a b c d"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB RC SC TC UC rB CC VC sB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"1":"g 9C AD","2":"I yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:5,C:"WebTransport"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js
    index bfd3aaba47da65..37dc1fd399743e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webusb.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB","66":"UB VB WB XB YB uB ZB"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB PC QC RC SC qB AC TC rB","66":"HB IB JB KB LB MB NB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"g zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C","2":"I wC xC yC"},Q:{"2":"1B"},R:{"1":"9C"},S:{"2":"AD BD"}},B:7,C:"WebUSB"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","66":"VB WB XB YB ZB vB aB"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB RC SC TC UC rB CC VC sB","66":"IB JB KB LB MB NB OB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"g 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD","2":"I yC zC 0C"},Q:{"2":"2B"},R:{"1":"BD"},S:{"2":"CD DD"}},B:7,C:"WebUSB"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js
    index 48a96ca742a7c9..2641cdc36204ba 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","66":"P","257":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB EC FC","129":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","194":"UB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","66":"XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P"},E:{"2":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","66":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C h qB AC rB"},L:{"2":"H"},M:{"2":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"513":"I","516":"g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD BD"}},B:7,C:"WebVR API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","66":"P","257":"G M N O"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB GC HC","129":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","194":"VB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","66":"YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P"},E:{"2":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","66":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C h rB CC sB"},L:{"2":"H"},M:{"2":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"513":"I","516":"g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD DD"}},B:7,C:"WebVR API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js
    index 960e9db498318f..62aefcdf9bf8b8 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webvtt.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"DC tB I v J D E F A B C K L G M N O w g x y z EC FC","66":"0 1 2 3 4 5 6","129":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB","257":"VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I v J D E F A B C K L G M N"},E:{"1":"J D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC VC WC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB I pC qC rC sC BC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"B","2":"A"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"129":"AD BD"}},B:4,C:"WebVTT - Web Video Text Tracks"};
    +module.exports={A:{A:{"1":"A B","2":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 FC uB I w J D E F A B C K L G M N O x g y z GC HC","66":"1 2 3 4 5 6 7","129":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB","257":"WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I w J D E F A B C K L G M N"},E:{"1":"J D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC XC YC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB I rC sC tC uC DC"},J:{"1":"A","2":"D"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"B","2":"A"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"129":"CD DD"}},B:4,C:"WebVTT - Web Video Text Tracks"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js
    index 5feabf544653a9..2c137df3f59f2a 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webworkers.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","2":"CC","8":"J D E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","8":"DC tB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","8":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e SC qB AC TC rB","2":"F PC","8":"QC RC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"f pC tC uC","2":"tB I qC rC sC BC"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","8":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Web Workers"};
    +module.exports={A:{A:{"1":"A B","2":"EC","8":"J D E F"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","8":"FC uB"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","8":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e UC rB CC VC sB","2":"F RC","8":"SC TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"H rC vC wC","2":"uB I sC tC uC DC"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","8":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Web Workers"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js
    index 05ae625746c712..4f97f755454d38 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/webxr.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB EC FC","322":"oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB","66":"dB eB fB gB hB iB jB kB h lB mB nB oB pB","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"2":"I v J D E F A B C HC zB IC JC KC LC 0B qB rB","578":"K L G 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB PC QC RC SC qB AC TC rB","66":"SB TB UB VB WB XB YB ZB aB bB cB dB","132":"eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e"},G:{"2":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"2":"oC"},I:{"2":"tB I f pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"2":"A B C qB AC rB","132":"h"},L:{"132":"H"},M:{"322":"H"},N:{"2":"A B"},O:{"2":"vC"},P:{"2":"I wC xC yC zC 0C 0B 1C","132":"g 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"2":"1B"},R:{"2":"9C"},S:{"2":"AD","322":"BD"}},B:4,C:"WebXR Device API"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"2":"C K L G M N O","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB GC HC","322":"pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB"},D:{"2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB","66":"eB fB gB hB iB jB kB lB h mB nB oB pB qB","132":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"2":"I w J D E F A B C JC 0B KC LC MC NC 1B rB sB","578":"K L G 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"2":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB RC SC TC UC rB CC VC sB","66":"TB UB VB WB XB YB ZB aB bB cB dB eB","132":"fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e"},G:{"2":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"2":"qC"},I:{"2":"uB I H rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"2":"A B C rB CC sB","132":"h"},L:{"132":"H"},M:{"322":"f"},N:{"2":"A B"},O:{"2":"xC"},P:{"2":"I yC zC 0C 1C 2C 1B 3C","132":"g 4C 5C 6C 7C tB 8C 9C AD"},Q:{"2":"2B"},R:{"2":"BD"},S:{"2":"CD","322":"DD"}},B:4,C:"WebXR Device API"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js
    index eee0a0d277e35d..0ecfe32390b50e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/will-change.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K L G M N O"},C:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 DC tB I v J D E F A B C K L G M N O w g x y z EC FC","194":"5 6 7 8 9 AB BB"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB"},E:{"1":"A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y z PC QC RC SC qB AC TC rB"},G:{"1":"aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS will-change property"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K L G M N O"},C:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 FC uB I w J D E F A B C K L G M N O x g y z GC HC","194":"6 7 8 9 AB BB CB"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB"},E:{"1":"A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC"},F:{"1":"1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"0 F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS will-change property"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js
    index ae88b796983e5a..a68441a726280b 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB FC","2":"DC tB EC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"I"},E:{"1":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e qB AC TC rB","2":"F B PC QC RC SC"},G:{"1":"E VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC"},H:{"2":"oC"},I:{"1":"f tC uC","2":"tB pC qC rC sC BC","130":"I"},J:{"1":"D A"},K:{"1":"B C h qB AC rB","2":"A"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"WOFF - Web Open Font Format"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB HC","2":"FC uB GC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"I"},E:{"1":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e rB CC VC sB","2":"F B RC SC TC UC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC"},H:{"2":"qC"},I:{"1":"H vC wC","2":"uB rC sC tC uC DC","130":"I"},J:{"1":"D A"},K:{"1":"B C h rB CC sB","2":"A"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"WOFF - Web Open Font Format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js
    index 9f14290820407c..4517ed7d8c0002 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/woff2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F A B CC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","2":"C K"},C:{"1":"FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB EC FC"},D:{"1":"CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","2":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB"},E:{"1":"C K L G rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I v J D E F HC zB IC JC KC LC","132":"A B 0B qB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C G M N O w g x y PC QC RC SC qB AC TC rB"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"E zB UC BC VC WC XC YC ZC aC"},H:{"2":"oC"},I:{"1":"f","2":"tB I pC qC rC sC BC tC uC"},J:{"2":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"2":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:2,C:"WOFF 2.0 - Web Open Font Format"};
    +module.exports={A:{A:{"2":"J D E F A B EC"},B:{"1":"L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","2":"C K"},C:{"1":"GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GC HC"},D:{"1":"DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","2":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB"},E:{"1":"C K L G sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I w J D E F JC 0B KC LC MC NC","132":"A B 1B rB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C G M N O x g y z RC SC TC UC rB CC VC sB"},G:{"1":"dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"E 0B WC DC XC YC ZC aC bC cC"},H:{"2":"qC"},I:{"1":"H","2":"uB I rC sC tC uC DC vC wC"},J:{"2":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"2":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:2,C:"WOFF 2.0 - Web Open Font Format"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js
    index a5235cb8c0e638..1dbff246e9e452 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/word-break.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"J D E F A B CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB I v J D E F A B C K L EC FC"},D:{"1":"KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB"},E:{"1":"F A B C K L G LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","4":"I v J D E HC zB IC JC KC"},F:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","2":"F B C PC QC RC SC qB AC TC rB","4":"0 1 2 3 4 5 6 G M N O w g x y z"},G:{"1":"ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","4":"E zB UC BC VC WC XC YC"},H:{"2":"oC"},I:{"1":"f","4":"tB I pC qC rC sC BC tC uC"},J:{"4":"D A"},K:{"1":"h","2":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"CSS3 word-break"};
    +module.exports={A:{A:{"1":"J D E F A B EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB I w J D E F A B C K L GC HC"},D:{"1":"LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"1":"F A B C K L G NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","4":"I w J D E JC 0B KC LC MC"},F:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","2":"F B C RC SC TC UC rB CC VC sB","4":"0 1 2 3 4 5 6 7 G M N O x g y z"},G:{"1":"bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","4":"E 0B WC DC XC YC ZC aC"},H:{"2":"qC"},I:{"1":"H","4":"uB I rC sC tC uC DC vC wC"},J:{"4":"D A"},K:{"1":"h","2":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"CSS3 word-break"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js
    index 240337d0ccca25..fd083776e74081 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/wordwrap.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"4":"J D E F A B CC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H","4":"C K L G M N"},C:{"1":"PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","4":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","4":"I v J D E F A B C K L G M N O w g x y"},E:{"1":"D E F A B C K L G JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","4":"I v J HC zB IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F PC QC","4":"B C RC SC qB AC TC"},G:{"1":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","4":"zB UC BC VC WC"},H:{"4":"oC"},I:{"1":"f tC uC","4":"tB I pC qC rC sC BC"},J:{"1":"A","4":"D"},K:{"1":"h","4":"A B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"4":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"BD","4":"AD"}},B:4,C:"CSS3 Overflow-wrap"};
    +module.exports={A:{A:{"4":"J D E F A B EC"},B:{"1":"O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H","4":"C K L G M N"},C:{"1":"QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","4":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","4":"I w J D E F A B C K L G M N O x g y z"},E:{"1":"D E F A B C K L G LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","4":"I w J JC 0B KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F RC SC","4":"B C TC UC rB CC VC"},G:{"1":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","4":"0B WC DC XC YC"},H:{"4":"qC"},I:{"1":"H vC wC","4":"uB I rC sC tC uC DC"},J:{"1":"A","4":"D"},K:{"1":"h","4":"A B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"4":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"DD","4":"CD"}},B:4,C:"CSS3 Overflow-wrap"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js
    index 48a2d1194383cd..8efb52c2a38bf6 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-doc-messaging.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D CC","132":"E F","260":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC","2":"DC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"HC zB"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB","2":"F"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"4":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"Cross-document messaging"};
    +module.exports={A:{A:{"2":"J D EC","132":"E F","260":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC","2":"FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"JC 0B"},F:{"1":"0 1 2 3 4 5 6 7 8 9 B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB","2":"F"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"4":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"Cross-document messaging"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js
    index 836f585e57be2d..f21b63b21a83be 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/x-frame-options.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"E F A B","2":"J D CC"},B:{"1":"C K L G M N O","4":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB","4":"I v J D E F A B C K L G M N iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","16":"DC tB EC FC"},D:{"4":"2 3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"0 1 I v J D E F A B C K L G M N O w g x y z"},E:{"4":"J D E F A B C K L G IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","16":"I v HC zB"},F:{"4":"0 1 2 3 4 5 6 7 8 9 C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e TC rB","16":"F B PC QC RC SC qB AC"},G:{"4":"E XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","16":"zB UC BC VC WC"},H:{"2":"oC"},I:{"4":"I f sC BC tC uC","16":"tB pC qC rC"},J:{"4":"D A"},K:{"4":"h rB","16":"A B C qB AC"},L:{"4":"H"},M:{"4":"H"},N:{"1":"A B"},O:{"4":"vC"},P:{"4":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"4":"1B"},R:{"4":"9C"},S:{"1":"AD","4":"BD"}},B:6,C:"X-Frame-Options HTTP header"};
    +module.exports={A:{A:{"1":"E F A B","2":"J D EC"},B:{"1":"C K L G M N O","4":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB","4":"I w J D E F A B C K L G M N jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","16":"FC uB GC HC"},D:{"4":"3 4 5 6 7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"0 1 2 I w J D E F A B C K L G M N O x g y z"},E:{"4":"J D E F A B C K L G KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","16":"I w JC 0B"},F:{"4":"0 1 2 3 4 5 6 7 8 9 C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e VC sB","16":"F B RC SC TC UC rB CC"},G:{"4":"E ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","16":"0B WC DC XC YC"},H:{"2":"qC"},I:{"4":"I H uC DC vC wC","16":"uB rC sC tC"},J:{"4":"D A"},K:{"4":"h sB","16":"A B C rB CC"},L:{"4":"H"},M:{"4":"f"},N:{"1":"A B"},O:{"4":"xC"},P:{"4":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"4":"2B"},R:{"4":"BD"},S:{"1":"CD","4":"DD"}},B:6,C:"X-Frame-Options HTTP header"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js
    index 567cf4b2c4ce85..1d48a3084d1493 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhr2.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"J D E F CC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","2":"DC tB","260":"A B","388":"J D E F","900":"I v EC FC"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","16":"I v J","132":"5 6","388":"0 1 2 3 4 D E F A B C K L G M N O w g x y z"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","2":"I HC zB","132":"D JC","388":"v J IC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e rB","2":"F B PC QC RC SC qB AC TC","132":"G M N"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","2":"zB UC BC","132":"XC","388":"VC WC"},H:{"2":"oC"},I:{"1":"f uC","2":"pC qC rC","388":"tC","900":"tB I sC BC"},J:{"132":"A","388":"D"},K:{"1":"C h rB","2":"A B qB AC"},L:{"1":"H"},M:{"1":"H"},N:{"132":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"XMLHttpRequest advanced features"};
    +module.exports={A:{A:{"2":"J D E F EC","132":"A B"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","2":"FC uB","260":"A B","388":"J D E F","900":"I w GC HC"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","16":"I w J","132":"6 7","388":"0 1 2 3 4 5 D E F A B C K L G M N O x g y z"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","2":"I JC 0B","132":"D LC","388":"w J KC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 C O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e sB","2":"F B RC SC TC UC rB CC VC","132":"G M N"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","2":"0B WC DC","132":"ZC","388":"XC YC"},H:{"2":"qC"},I:{"1":"H wC","2":"rC sC tC","388":"vC","900":"uB I uC DC"},J:{"132":"A","388":"D"},K:{"1":"C h sB","2":"A B rB CC"},L:{"1":"H"},M:{"1":"f"},N:{"132":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"XMLHttpRequest advanced features"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js
    index a6a0478b1d5995..b380cfcd24c85c 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtml.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"F A B","2":"J D E CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"1":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"1":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"1":"oC"},I:{"1":"tB I f pC qC rC sC BC tC uC"},J:{"1":"D A"},K:{"1":"A B C h qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:1,C:"XHTML served as application/xhtml+xml"};
    +module.exports={A:{A:{"1":"F A B","2":"J D E EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"1":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"1":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"1":"qC"},I:{"1":"uB I H rC sC tC uC DC vC wC"},J:{"1":"D A"},K:{"1":"A B C h rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:1,C:"XHTML served as application/xhtml+xml"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js
    index 8cfeb27b24e241..3347635f374e33 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xhtmlsmil.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"2":"F A B CC","4":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"8":"0 1 2 3 4 5 6 7 8 9 DC tB I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB EC FC"},D:{"8":"0 1 2 3 4 5 6 7 8 9 I v J D E F A B C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC"},E:{"8":"I v J D E F A B C K L G HC zB IC JC KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC"},F:{"8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e PC QC RC SC qB AC TC rB"},G:{"8":"E zB UC BC VC WC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B"},H:{"8":"oC"},I:{"8":"tB I f pC qC rC sC BC tC uC"},J:{"8":"D A"},K:{"8":"A B C h qB AC rB"},L:{"8":"H"},M:{"8":"H"},N:{"2":"A B"},O:{"8":"vC"},P:{"8":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"8":"1B"},R:{"8":"9C"},S:{"8":"AD BD"}},B:7,C:"XHTML+SMIL animation"};
    +module.exports={A:{A:{"2":"F A B EC","4":"J D E"},B:{"2":"C K L G M N O","8":"P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"8":"0 1 2 3 4 5 6 7 8 9 FC uB I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB GC HC"},D:{"8":"0 1 2 3 4 5 6 7 8 9 I w J D E F A B C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC"},E:{"8":"I w J D E F A B C K L G JC 0B KC LC MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC"},F:{"8":"0 1 2 3 4 5 6 7 8 9 F B C G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e RC SC TC UC rB CC VC sB"},G:{"8":"E 0B WC DC XC YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC"},H:{"8":"qC"},I:{"8":"uB I H rC sC tC uC DC vC wC"},J:{"8":"D A"},K:{"8":"A B C h rB CC sB"},L:{"8":"H"},M:{"8":"f"},N:{"2":"A B"},O:{"8":"xC"},P:{"8":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"8":"2B"},R:{"8":"BD"},S:{"8":"CD DD"}},B:7,C:"XHTML+SMIL animation"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js
    index f0b8d8db9e845d..0253e03e7ef0bf 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/data/features/xml-serializer.js
    @@ -1 +1 @@
    -module.exports={A:{A:{"1":"A B","260":"J D E F CC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB","132":"B","260":"DC tB I v J D EC FC","516":"E F A"},D:{"1":"7 8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB uB ZB vB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u f H xB yB GC","132":"0 1 2 3 4 5 6 I v J D E F A B C K L G M N O w g x y z"},E:{"1":"E F A B C K L G KC LC 0B qB rB 1B MC NC 2B 3B 4B 5B sB 6B 7B 8B 9B OC","132":"I v J D HC zB IC JC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 O w g x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB h lB mB nB oB pB P Q R wB S T U V W X Y Z a b c d e","16":"F PC","132":"B C G M N QC RC SC qB AC TC rB"},G:{"1":"E YC ZC aC bC cC dC eC fC gC hC iC jC kC lC mC nC 2B 3B 4B 5B sB 6B 7B 8B 9B","132":"zB UC BC VC WC XC"},H:{"132":"oC"},I:{"1":"f tC uC","132":"tB I pC qC rC sC BC"},J:{"132":"D A"},K:{"1":"h","16":"A","132":"B C qB AC rB"},L:{"1":"H"},M:{"1":"H"},N:{"1":"A B"},O:{"1":"vC"},P:{"1":"I g wC xC yC zC 0C 0B 1C 2C 3C 4C 5C sB 6C 7C 8C"},Q:{"1":"1B"},R:{"1":"9C"},S:{"1":"AD BD"}},B:4,C:"DOM Parsing and Serialization"};
    +module.exports={A:{A:{"1":"A B","260":"J D E F EC"},B:{"1":"C K L G M N O P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H"},C:{"1":"0 1 2 3 4 5 6 7 8 9 C K L G M N O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB","132":"B","260":"FC uB I w J D GC HC","516":"E F A"},D:{"1":"8 9 AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB vB aB wB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R S T U V W X Y Z a b c d e i j k l m n o p q r s t u v f H yB zB IC","132":"0 1 2 3 4 5 6 7 I w J D E F A B C K L G M N O x g y z"},E:{"1":"E F A B C K L G MC NC 1B rB sB 2B OC PC 3B 4B 5B 6B tB 7B 8B 9B AC BC QC","132":"I w J D JC 0B KC LC"},F:{"1":"0 1 2 3 4 5 6 7 8 9 O x g y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB h mB nB oB pB qB P Q R xB S T U V W X Y Z a b c d e","16":"F RC","132":"B C G M N SC TC UC rB CC VC sB"},G:{"1":"E aC bC cC dC eC fC gC hC iC jC kC lC mC nC oC pC 3B 4B 5B 6B tB 7B 8B 9B AC BC","132":"0B WC DC XC YC ZC"},H:{"132":"qC"},I:{"1":"H vC wC","132":"uB I rC sC tC uC DC"},J:{"132":"D A"},K:{"1":"h","16":"A","132":"B C rB CC sB"},L:{"1":"H"},M:{"1":"f"},N:{"1":"A B"},O:{"1":"xC"},P:{"1":"I g yC zC 0C 1C 2C 1B 3C 4C 5C 6C 7C tB 8C 9C AD"},Q:{"1":"2B"},R:{"1":"BD"},S:{"1":"CD DD"}},B:4,C:"DOM Parsing and Serialization"};
    diff --git a/tools/node_modules/eslint/node_modules/caniuse-lite/package.json b/tools/node_modules/eslint/node_modules/caniuse-lite/package.json
    index 21ef7c6a134908..4118a1a9dd7b7e 100644
    --- a/tools/node_modules/eslint/node_modules/caniuse-lite/package.json
    +++ b/tools/node_modules/eslint/node_modules/caniuse-lite/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "caniuse-lite",
    -  "version": "1.0.30001465",
    +  "version": "1.0.30001473",
       "description": "A smaller version of caniuse-db, with only the essentials!",
       "main": "dist/unpacker/index.js",
       "files": [
    @@ -24,6 +24,10 @@
         {
           "type": "tidelift",
           "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
    +    },
    +    {
    +      "type": "github",
    +      "url": "https://github.com/sponsors/ai"
         }
       ],
       "license": "CC-BY-4.0"
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js
    index ab1a11ee6b593f..04e0442854e77a 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.js
    @@ -50,5 +50,6 @@ module.exports = {
     	"107": "22.0",
     	"108": "22.0",
     	"110": "23.0",
    -	"111": "24.0"
    +	"111": "24.0",
    +	"112": "24.0"
     };
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json
    index bedeb22fd41ae7..4288e0fee2d90e 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/chromium-versions.json
    @@ -1 +1 @@
    -{"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0","99":"18.0","100":"18.0","102":"19.0","103":"20.0","104":"20.0","105":"21.0","106":"21.0","107":"22.0","108":"22.0","110":"23.0","111":"24.0"}
    \ No newline at end of file
    +{"39":"0.20","40":"0.21","41":"0.21","42":"0.25","43":"0.27","44":"0.30","45":"0.31","47":"0.36","49":"0.37","50":"1.1","51":"1.2","52":"1.3","53":"1.4","54":"1.4","56":"1.6","58":"1.7","59":"1.8","61":"2.0","66":"3.0","69":"4.0","72":"5.0","73":"5.0","76":"6.0","78":"7.0","79":"8.0","80":"8.0","82":"9.0","83":"9.0","84":"10.0","85":"10.0","86":"11.0","87":"11.0","89":"12.0","90":"13.0","91":"13.0","92":"14.0","93":"14.0","94":"15.0","95":"16.0","96":"16.0","98":"17.0","99":"18.0","100":"18.0","102":"19.0","103":"20.0","104":"20.0","105":"21.0","106":"21.0","107":"22.0","108":"22.0","110":"23.0","111":"24.0","112":"24.0"}
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js
    index 0caaa980f5cba9..02d375eb94c0ec 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.js
    @@ -2198,7 +2198,8 @@ module.exports = {
     		"21.3.5",
     		"21.4.0",
     		"21.4.1",
    -		"21.4.2"
    +		"21.4.2",
    +		"21.4.3"
     	],
     	"107.0.5286.0": [
     		"22.0.0-alpha.1",
    @@ -2281,7 +2282,10 @@ module.exports = {
     		"22.2.1",
     		"22.3.0",
     		"22.3.1",
    -		"22.3.2"
    +		"22.3.2",
    +		"22.3.3",
    +		"22.3.4",
    +		"22.3.5"
     	],
     	"110.0.5415.0": [
     		"23.0.0-alpha.1",
    @@ -2357,6 +2361,13 @@ module.exports = {
     	"110.0.5481.179": [
     		"23.1.3"
     	],
    +	"110.0.5481.192": [
    +		"23.1.4",
    +		"23.2.0"
    +	],
    +	"110.0.5481.208": [
    +		"23.2.1"
    +	],
     	"111.0.5560.0": [
     		"24.0.0-alpha.1",
     		"24.0.0-alpha.2",
    @@ -2395,6 +2406,17 @@ module.exports = {
     		"24.0.0-beta.1",
     		"24.0.0-beta.2"
     	],
    +	"112.0.5615.20": [
    +		"24.0.0-beta.3",
    +		"24.0.0-beta.4"
    +	],
    +	"112.0.5615.29": [
    +		"24.0.0-beta.5"
    +	],
    +	"112.0.5615.39": [
    +		"24.0.0-beta.6",
    +		"24.0.0-beta.7"
    +	],
     	"111.0.5518.0": [
     		"24.0.0-nightly.20230109",
     		"24.0.0-nightly.20230110",
    @@ -2414,5 +2436,33 @@ module.exports = {
     		"24.0.0-nightly.20230131",
     		"24.0.0-nightly.20230201",
     		"24.0.0-nightly.20230202"
    +	],
    +	"113.0.5636.0": [
    +		"25.0.0-nightly.20230314"
    +	],
    +	"113.0.5651.0": [
    +		"25.0.0-nightly.20230315"
    +	],
    +	"113.0.5653.0": [
    +		"25.0.0-nightly.20230317"
    +	],
    +	"113.0.5660.0": [
    +		"25.0.0-nightly.20230320"
    +	],
    +	"113.0.5664.0": [
    +		"25.0.0-nightly.20230321"
    +	],
    +	"113.0.5666.0": [
    +		"25.0.0-nightly.20230322"
    +	],
    +	"113.0.5668.0": [
    +		"25.0.0-nightly.20230323"
    +	],
    +	"113.0.5670.0": [
    +		"25.0.0-nightly.20230324",
    +		"25.0.0-nightly.20230327",
    +		"25.0.0-nightly.20230328",
    +		"25.0.0-nightly.20230329",
    +		"25.0.0-nightly.20230330"
     	]
     };
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json
    index dc8a67bc2adb67..739f0330af2026 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-chromium-versions.json
    @@ -1 +1 @@
    -{"39.0.2171.65":["0.20.0","0.20.1","0.20.2","0.20.3","0.20.4","0.20.5","0.20.6","0.20.7","0.20.8"],"40.0.2214.91":["0.21.0","0.21.1","0.21.2"],"41.0.2272.76":["0.21.3","0.22.1","0.22.2","0.22.3","0.23.0","0.24.0"],"42.0.2311.107":["0.25.0","0.25.1","0.25.2","0.25.3","0.26.0","0.26.1","0.27.0","0.27.1"],"43.0.2357.65":["0.27.2","0.27.3","0.28.0","0.28.1","0.28.2","0.28.3","0.29.1","0.29.2"],"44.0.2403.125":["0.30.4","0.31.0"],"45.0.2454.85":["0.31.2","0.32.2","0.32.3","0.33.0","0.33.1","0.33.2","0.33.3","0.33.4","0.33.6","0.33.7","0.33.8","0.33.9","0.34.0","0.34.1","0.34.2","0.34.3","0.34.4","0.35.1","0.35.2","0.35.3","0.35.4","0.35.5"],"47.0.2526.73":["0.36.0","0.36.2","0.36.3","0.36.4"],"47.0.2526.110":["0.36.5","0.36.6","0.36.7","0.36.8","0.36.9","0.36.10","0.36.11","0.36.12"],"49.0.2623.75":["0.37.0","0.37.1","0.37.3","0.37.4","0.37.5","0.37.6","0.37.7","0.37.8","1.0.0","1.0.1","1.0.2"],"50.0.2661.102":["1.1.0","1.1.1","1.1.2","1.1.3"],"51.0.2704.63":["1.2.0","1.2.1"],"51.0.2704.84":["1.2.2","1.2.3"],"51.0.2704.103":["1.2.4","1.2.5"],"51.0.2704.106":["1.2.6","1.2.7","1.2.8"],"52.0.2743.82":["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.9","1.3.10","1.3.13","1.3.14","1.3.15"],"53.0.2785.113":["1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5"],"53.0.2785.143":["1.4.6","1.4.7","1.4.8","1.4.10","1.4.11","1.4.13","1.4.14","1.4.15","1.4.16"],"54.0.2840.51":["1.4.12"],"54.0.2840.101":["1.5.0","1.5.1"],"56.0.2924.87":["1.6.0","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","1.6.10","1.6.11","1.6.12","1.6.13","1.6.14","1.6.15","1.6.16","1.6.17","1.6.18"],"58.0.3029.110":["1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.7.10","1.7.11","1.7.12","1.7.13","1.7.14","1.7.15","1.7.16"],"59.0.3071.115":["1.8.0","1.8.1","1.8.2-beta.1","1.8.2-beta.2","1.8.2-beta.3","1.8.2-beta.4","1.8.2-beta.5","1.8.2","1.8.3","1.8.4","1.8.5","1.8.6","1.8.7","1.8.8"],"61.0.3163.100":["2.0.0-beta.1","2.0.0-beta.2","2.0.0-beta.3","2.0.0-beta.4","2.0.0-beta.5","2.0.0-beta.6","2.0.0-beta.7","2.0.0-beta.8","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8-nightly.20180819","2.0.8-nightly.20180820","2.0.8","2.0.9","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.16","2.0.17","2.0.18","2.1.0-unsupported.20180809"],"66.0.3359.181":["3.0.0-beta.1","3.0.0-beta.2","3.0.0-beta.3","3.0.0-beta.4","3.0.0-beta.5","3.0.0-beta.6","3.0.0-beta.7","3.0.0-beta.8","3.0.0-beta.9","3.0.0-beta.10","3.0.0-beta.11","3.0.0-beta.12","3.0.0-beta.13","3.0.0-nightly.20180818","3.0.0-nightly.20180821","3.0.0-nightly.20180823","3.0.0-nightly.20180904","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9","3.0.10","3.0.11","3.0.12","3.0.13","3.0.14","3.0.15","3.0.16","3.1.0-beta.1","3.1.0-beta.2","3.1.0-beta.3","3.1.0-beta.4","3.1.0-beta.5","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9","3.1.10","3.1.11","3.1.12","3.1.13","4.0.0-nightly.20180817","4.0.0-nightly.20180819","4.0.0-nightly.20180821"],"69.0.3497.106":["4.0.0-beta.1","4.0.0-beta.2","4.0.0-beta.3","4.0.0-beta.4","4.0.0-beta.5","4.0.0-beta.6","4.0.0-beta.7","4.0.0-beta.8","4.0.0-beta.9","4.0.0-beta.10","4.0.0-beta.11","4.0.0-nightly.20181010","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6"],"67.0.3396.99":["4.0.0-nightly.20180929"],"68.0.3440.128":["4.0.0-nightly.20181006"],"69.0.3497.128":["4.0.7","4.0.8","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5","4.2.0","4.2.1","4.2.2","4.2.3","4.2.4","4.2.5","4.2.6","4.2.7","4.2.8","4.2.9","4.2.10","4.2.11","4.2.12"],"72.0.3626.52":["5.0.0-beta.1","5.0.0-beta.2","6.0.0-nightly.20190123"],"73.0.3683.27":["5.0.0-beta.3"],"73.0.3683.54":["5.0.0-beta.4"],"73.0.3683.61":["5.0.0-beta.5"],"73.0.3683.84":["5.0.0-beta.6"],"73.0.3683.94":["5.0.0-beta.7"],"73.0.3683.104":["5.0.0-beta.8"],"73.0.3683.117":["5.0.0-beta.9"],"70.0.3538.110":["5.0.0-nightly.20190107"],"71.0.3578.98":["5.0.0-nightly.20190121","5.0.0-nightly.20190122"],"73.0.3683.119":["5.0.0"],"73.0.3683.121":["5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.0.10","5.0.11","5.0.12","5.0.13"],"76.0.3774.1":["6.0.0-beta.1"],"76.0.3783.1":["6.0.0-beta.2","6.0.0-beta.3","6.0.0-beta.4"],"76.0.3805.4":["6.0.0-beta.5"],"76.0.3809.3":["6.0.0-beta.6"],"76.0.3809.22":["6.0.0-beta.7"],"76.0.3809.26":["6.0.0-beta.8","6.0.0-beta.9"],"76.0.3809.37":["6.0.0-beta.10"],"76.0.3809.42":["6.0.0-beta.11"],"76.0.3809.54":["6.0.0-beta.12"],"76.0.3809.60":["6.0.0-beta.13"],"76.0.3809.68":["6.0.0-beta.14"],"76.0.3809.74":["6.0.0-beta.15"],"72.0.3626.107":["6.0.0-nightly.20190212"],"72.0.3626.110":["6.0.0-nightly.20190213"],"74.0.3724.8":["6.0.0-nightly.20190311"],"76.0.3809.88":["6.0.0"],"76.0.3809.102":["6.0.1"],"76.0.3809.110":["6.0.2"],"76.0.3809.126":["6.0.3"],"76.0.3809.131":["6.0.4"],"76.0.3809.136":["6.0.5"],"76.0.3809.138":["6.0.6"],"76.0.3809.139":["6.0.7"],"76.0.3809.146":["6.0.8","6.0.9","6.0.10","6.0.11","6.0.12","6.1.0","6.1.1","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.1.7","6.1.8","6.1.9","6.1.10","6.1.11","6.1.12"],"78.0.3866.0":["7.0.0-beta.1","7.0.0-beta.2","7.0.0-beta.3","7.0.0-nightly.20190727","7.0.0-nightly.20190728","7.0.0-nightly.20190729","7.0.0-nightly.20190730","7.0.0-nightly.20190731","8.0.0-nightly.20190801","8.0.0-nightly.20190802"],"78.0.3896.6":["7.0.0-beta.4"],"78.0.3905.1":["7.0.0-beta.5","7.0.0-beta.6","7.0.0-beta.7","7.0.0"],"76.0.3784.0":["7.0.0-nightly.20190521"],"76.0.3806.0":["7.0.0-nightly.20190529","7.0.0-nightly.20190530","7.0.0-nightly.20190531","7.0.0-nightly.20190602","7.0.0-nightly.20190603"],"77.0.3814.0":["7.0.0-nightly.20190604"],"77.0.3815.0":["7.0.0-nightly.20190605","7.0.0-nightly.20190606","7.0.0-nightly.20190607","7.0.0-nightly.20190608","7.0.0-nightly.20190609","7.0.0-nightly.20190611","7.0.0-nightly.20190612","7.0.0-nightly.20190613","7.0.0-nightly.20190615","7.0.0-nightly.20190616","7.0.0-nightly.20190618","7.0.0-nightly.20190619","7.0.0-nightly.20190622","7.0.0-nightly.20190623","7.0.0-nightly.20190624","7.0.0-nightly.20190627","7.0.0-nightly.20190629","7.0.0-nightly.20190630","7.0.0-nightly.20190701","7.0.0-nightly.20190702"],"77.0.3843.0":["7.0.0-nightly.20190704","7.0.0-nightly.20190705"],"77.0.3848.0":["7.0.0-nightly.20190719","7.0.0-nightly.20190720","7.0.0-nightly.20190721"],"77.0.3864.0":["7.0.0-nightly.20190726"],"78.0.3904.92":["7.0.1"],"78.0.3904.94":["7.1.0"],"78.0.3904.99":["7.1.1"],"78.0.3904.113":["7.1.2"],"78.0.3904.126":["7.1.3"],"78.0.3904.130":["7.1.4","7.1.5","7.1.6","7.1.7","7.1.8","7.1.9","7.1.10","7.1.11","7.1.12","7.1.13","7.1.14","7.2.0","7.2.1","7.2.2","7.2.3","7.2.4","7.3.0","7.3.1","7.3.2","7.3.3"],"79.0.3931.0":["8.0.0-beta.1","8.0.0-beta.2","8.0.0-nightly.20191019","8.0.0-nightly.20191020","8.0.0-nightly.20191021","8.0.0-nightly.20191023"],"80.0.3955.0":["8.0.0-beta.3","8.0.0-beta.4"],"80.0.3987.14":["8.0.0-beta.5"],"80.0.3987.51":["8.0.0-beta.6"],"80.0.3987.59":["8.0.0-beta.7"],"80.0.3987.75":["8.0.0-beta.8","8.0.0-beta.9"],"78.0.3871.0":["8.0.0-nightly.20190803","8.0.0-nightly.20190806","8.0.0-nightly.20190807","8.0.0-nightly.20190808","8.0.0-nightly.20190809","8.0.0-nightly.20190810","8.0.0-nightly.20190811","8.0.0-nightly.20190812","8.0.0-nightly.20190813","8.0.0-nightly.20190814","8.0.0-nightly.20190815"],"78.0.3881.0":["8.0.0-nightly.20190816","8.0.0-nightly.20190817","8.0.0-nightly.20190818","8.0.0-nightly.20190819","8.0.0-nightly.20190820"],"78.0.3892.0":["8.0.0-nightly.20190824","8.0.0-nightly.20190825","8.0.0-nightly.20190827","8.0.0-nightly.20190828","8.0.0-nightly.20190830","8.0.0-nightly.20190901","8.0.0-nightly.20190902","8.0.0-nightly.20190907","8.0.0-nightly.20190909","8.0.0-nightly.20190910","8.0.0-nightly.20190911","8.0.0-nightly.20190912","8.0.0-nightly.20190913","8.0.0-nightly.20190914","8.0.0-nightly.20190915","8.0.0-nightly.20190917"],"79.0.3915.0":["8.0.0-nightly.20190919","8.0.0-nightly.20190920"],"79.0.3919.0":["8.0.0-nightly.20190922","8.0.0-nightly.20190923","8.0.0-nightly.20190924","8.0.0-nightly.20190926","8.0.0-nightly.20190928","8.0.0-nightly.20190929","8.0.0-nightly.20190930","8.0.0-nightly.20191001","8.0.0-nightly.20191004","8.0.0-nightly.20191005","8.0.0-nightly.20191006","8.0.0-nightly.20191009","8.0.0-nightly.20191011","8.0.0-nightly.20191012","8.0.0-nightly.20191017"],"80.0.3952.0":["8.0.0-nightly.20191101","8.0.0-nightly.20191103","8.0.0-nightly.20191105"],"80.0.3987.86":["8.0.0","8.0.1","8.0.2"],"80.0.3987.134":["8.0.3"],"80.0.3987.137":["8.1.0"],"80.0.3987.141":["8.1.1"],"80.0.3987.158":["8.2.0"],"80.0.3987.163":["8.2.1","8.2.2","8.2.3","8.5.3","8.5.4","8.5.5"],"80.0.3987.165":["8.2.4","8.2.5","8.3.0","8.3.1","8.3.2","8.3.3","8.3.4","8.4.0","8.4.1","8.5.0","8.5.1","8.5.2"],"82.0.4048.0":["9.0.0-beta.1","9.0.0-beta.2","9.0.0-beta.3","9.0.0-beta.4","9.0.0-beta.5"],"82.0.4058.2":["9.0.0-beta.6","9.0.0-beta.7","9.0.0-beta.9"],"82.0.4085.10":["9.0.0-beta.10"],"82.0.4085.14":["9.0.0-beta.11","9.0.0-beta.12","9.0.0-beta.13"],"82.0.4085.27":["9.0.0-beta.14"],"83.0.4102.3":["9.0.0-beta.15","9.0.0-beta.16"],"83.0.4103.14":["9.0.0-beta.17"],"83.0.4103.16":["9.0.0-beta.18"],"83.0.4103.24":["9.0.0-beta.19"],"83.0.4103.26":["9.0.0-beta.20","9.0.0-beta.21"],"83.0.4103.34":["9.0.0-beta.22"],"83.0.4103.44":["9.0.0-beta.23"],"83.0.4103.45":["9.0.0-beta.24"],"80.0.3954.0":["9.0.0-nightly.20191121","9.0.0-nightly.20191122","9.0.0-nightly.20191123","9.0.0-nightly.20191124","9.0.0-nightly.20191126","9.0.0-nightly.20191128","9.0.0-nightly.20191129","9.0.0-nightly.20191130","9.0.0-nightly.20191201","9.0.0-nightly.20191202","9.0.0-nightly.20191203","9.0.0-nightly.20191204","9.0.0-nightly.20191205","9.0.0-nightly.20191210"],"81.0.3994.0":["9.0.0-nightly.20191220","9.0.0-nightly.20191221","9.0.0-nightly.20191222","9.0.0-nightly.20191223","9.0.0-nightly.20191224","9.0.0-nightly.20191225","9.0.0-nightly.20191226","9.0.0-nightly.20191228","9.0.0-nightly.20191229","9.0.0-nightly.20191230","9.0.0-nightly.20191231","9.0.0-nightly.20200101","9.0.0-nightly.20200103","9.0.0-nightly.20200104","9.0.0-nightly.20200105","9.0.0-nightly.20200106","9.0.0-nightly.20200108","9.0.0-nightly.20200109","9.0.0-nightly.20200110","9.0.0-nightly.20200111","9.0.0-nightly.20200113","9.0.0-nightly.20200115","9.0.0-nightly.20200116","9.0.0-nightly.20200117"],"81.0.4030.0":["9.0.0-nightly.20200119","9.0.0-nightly.20200121"],"83.0.4103.64":["9.0.0"],"83.0.4103.94":["9.0.1","9.0.2"],"83.0.4103.100":["9.0.3"],"83.0.4103.104":["9.0.4"],"83.0.4103.119":["9.0.5"],"83.0.4103.122":["9.1.0","9.1.1","9.1.2","9.2.0","9.2.1","9.3.0","9.3.1","9.3.2","9.3.3","9.3.4","9.3.5","9.4.0","9.4.1","9.4.2","9.4.3","9.4.4"],"84.0.4129.0":["10.0.0-beta.1","10.0.0-beta.2","10.0.0-nightly.20200501","10.0.0-nightly.20200504","10.0.0-nightly.20200505","10.0.0-nightly.20200506","10.0.0-nightly.20200507","10.0.0-nightly.20200508","10.0.0-nightly.20200511","10.0.0-nightly.20200512","10.0.0-nightly.20200513","10.0.0-nightly.20200514","10.0.0-nightly.20200515","10.0.0-nightly.20200518","10.0.0-nightly.20200519","10.0.0-nightly.20200520","10.0.0-nightly.20200521","11.0.0-nightly.20200525","11.0.0-nightly.20200526"],"85.0.4161.2":["10.0.0-beta.3","10.0.0-beta.4"],"85.0.4181.1":["10.0.0-beta.8","10.0.0-beta.9"],"85.0.4183.19":["10.0.0-beta.10"],"85.0.4183.20":["10.0.0-beta.11"],"85.0.4183.26":["10.0.0-beta.12"],"85.0.4183.39":["10.0.0-beta.13","10.0.0-beta.14","10.0.0-beta.15","10.0.0-beta.17","10.0.0-beta.19","10.0.0-beta.20","10.0.0-beta.21"],"85.0.4183.70":["10.0.0-beta.23"],"85.0.4183.78":["10.0.0-beta.24"],"85.0.4183.80":["10.0.0-beta.25"],"82.0.4050.0":["10.0.0-nightly.20200209","10.0.0-nightly.20200210","10.0.0-nightly.20200211","10.0.0-nightly.20200216","10.0.0-nightly.20200217","10.0.0-nightly.20200218","10.0.0-nightly.20200221","10.0.0-nightly.20200222","10.0.0-nightly.20200223","10.0.0-nightly.20200226","10.0.0-nightly.20200303"],"82.0.4076.0":["10.0.0-nightly.20200304","10.0.0-nightly.20200305","10.0.0-nightly.20200306","10.0.0-nightly.20200309","10.0.0-nightly.20200310"],"82.0.4083.0":["10.0.0-nightly.20200311"],"83.0.4086.0":["10.0.0-nightly.20200316"],"83.0.4087.0":["10.0.0-nightly.20200317","10.0.0-nightly.20200318","10.0.0-nightly.20200320","10.0.0-nightly.20200323","10.0.0-nightly.20200324","10.0.0-nightly.20200325","10.0.0-nightly.20200326","10.0.0-nightly.20200327","10.0.0-nightly.20200330","10.0.0-nightly.20200331","10.0.0-nightly.20200401","10.0.0-nightly.20200402","10.0.0-nightly.20200403","10.0.0-nightly.20200406"],"83.0.4095.0":["10.0.0-nightly.20200408","10.0.0-nightly.20200410","10.0.0-nightly.20200413"],"84.0.4114.0":["10.0.0-nightly.20200414"],"84.0.4115.0":["10.0.0-nightly.20200415","10.0.0-nightly.20200416","10.0.0-nightly.20200417"],"84.0.4121.0":["10.0.0-nightly.20200422","10.0.0-nightly.20200423"],"84.0.4125.0":["10.0.0-nightly.20200427","10.0.0-nightly.20200428","10.0.0-nightly.20200429","10.0.0-nightly.20200430"],"85.0.4183.84":["10.0.0"],"85.0.4183.86":["10.0.1"],"85.0.4183.87":["10.1.0"],"85.0.4183.93":["10.1.1"],"85.0.4183.98":["10.1.2"],"85.0.4183.121":["10.1.3","10.1.4","10.1.5","10.1.6","10.1.7","10.2.0","10.3.0","10.3.1","10.3.2","10.4.0","10.4.1","10.4.2","10.4.3","10.4.4","10.4.5","10.4.6","10.4.7"],"86.0.4234.0":["11.0.0-beta.1","11.0.0-beta.3","11.0.0-beta.4","11.0.0-beta.5","11.0.0-beta.6","11.0.0-beta.7","11.0.0-nightly.20200822","11.0.0-nightly.20200824","11.0.0-nightly.20200825","11.0.0-nightly.20200826","12.0.0-nightly.20200827","12.0.0-nightly.20200831","12.0.0-nightly.20200902","12.0.0-nightly.20200903","12.0.0-nightly.20200907","12.0.0-nightly.20200910","12.0.0-nightly.20200911","12.0.0-nightly.20200914"],"87.0.4251.1":["11.0.0-beta.8","11.0.0-beta.9","11.0.0-beta.11"],"87.0.4280.11":["11.0.0-beta.12","11.0.0-beta.13"],"87.0.4280.27":["11.0.0-beta.16","11.0.0-beta.17","11.0.0-beta.18","11.0.0-beta.19"],"87.0.4280.40":["11.0.0-beta.20"],"87.0.4280.47":["11.0.0-beta.22","11.0.0-beta.23"],"85.0.4156.0":["11.0.0-nightly.20200529"],"85.0.4162.0":["11.0.0-nightly.20200602","11.0.0-nightly.20200603","11.0.0-nightly.20200604","11.0.0-nightly.20200609","11.0.0-nightly.20200610","11.0.0-nightly.20200611","11.0.0-nightly.20200615","11.0.0-nightly.20200616","11.0.0-nightly.20200617","11.0.0-nightly.20200618","11.0.0-nightly.20200619"],"85.0.4179.0":["11.0.0-nightly.20200701","11.0.0-nightly.20200702","11.0.0-nightly.20200703","11.0.0-nightly.20200706","11.0.0-nightly.20200707","11.0.0-nightly.20200708","11.0.0-nightly.20200709"],"86.0.4203.0":["11.0.0-nightly.20200716","11.0.0-nightly.20200717","11.0.0-nightly.20200720","11.0.0-nightly.20200721"],"86.0.4209.0":["11.0.0-nightly.20200723","11.0.0-nightly.20200724","11.0.0-nightly.20200729","11.0.0-nightly.20200730","11.0.0-nightly.20200731","11.0.0-nightly.20200803","11.0.0-nightly.20200804","11.0.0-nightly.20200805","11.0.0-nightly.20200811","11.0.0-nightly.20200812"],"87.0.4280.60":["11.0.0","11.0.1"],"87.0.4280.67":["11.0.2","11.0.3","11.0.4"],"87.0.4280.88":["11.0.5","11.1.0","11.1.1"],"87.0.4280.141":["11.2.0","11.2.1","11.2.2","11.2.3","11.3.0","11.4.0","11.4.1","11.4.2","11.4.3","11.4.4","11.4.5","11.4.6","11.4.7","11.4.8","11.4.9","11.4.10","11.4.11","11.4.12","11.5.0"],"89.0.4328.0":["12.0.0-beta.1","12.0.0-beta.3","12.0.0-beta.4","12.0.0-beta.5","12.0.0-beta.6","12.0.0-beta.7","12.0.0-beta.8","12.0.0-beta.9","12.0.0-beta.10","12.0.0-beta.11","12.0.0-beta.12","12.0.0-beta.14","13.0.0-nightly.20201119","13.0.0-nightly.20201123","13.0.0-nightly.20201124","13.0.0-nightly.20201126","13.0.0-nightly.20201127","13.0.0-nightly.20201130","13.0.0-nightly.20201201","13.0.0-nightly.20201202","13.0.0-nightly.20201203","13.0.0-nightly.20201204","13.0.0-nightly.20201207","13.0.0-nightly.20201208","13.0.0-nightly.20201209","13.0.0-nightly.20201210","13.0.0-nightly.20201211","13.0.0-nightly.20201214"],"89.0.4348.1":["12.0.0-beta.16","12.0.0-beta.18","12.0.0-beta.19","12.0.0-beta.20"],"89.0.4388.2":["12.0.0-beta.21","12.0.0-beta.22","12.0.0-beta.23","12.0.0-beta.24","12.0.0-beta.25","12.0.0-beta.26"],"89.0.4389.23":["12.0.0-beta.27","12.0.0-beta.28","12.0.0-beta.29"],"89.0.4389.58":["12.0.0-beta.30","12.0.0-beta.31"],"87.0.4268.0":["12.0.0-nightly.20201002","12.0.0-nightly.20201007","12.0.0-nightly.20201009","12.0.0-nightly.20201012","12.0.0-nightly.20201013","12.0.0-nightly.20201014","12.0.0-nightly.20201015"],"88.0.4292.0":["12.0.0-nightly.20201023","12.0.0-nightly.20201026"],"88.0.4306.0":["12.0.0-nightly.20201030","12.0.0-nightly.20201102","12.0.0-nightly.20201103","12.0.0-nightly.20201104","12.0.0-nightly.20201105","12.0.0-nightly.20201106","12.0.0-nightly.20201111","12.0.0-nightly.20201112"],"88.0.4324.0":["12.0.0-nightly.20201116"],"89.0.4389.69":["12.0.0"],"89.0.4389.82":["12.0.1"],"89.0.4389.90":["12.0.2"],"89.0.4389.114":["12.0.3","12.0.4"],"89.0.4389.128":["12.0.5","12.0.6","12.0.7","12.0.8","12.0.9","12.0.10","12.0.11","12.0.12","12.0.13","12.0.14","12.0.15","12.0.16","12.0.17","12.0.18","12.1.0","12.1.1","12.1.2","12.2.0","12.2.1","12.2.2","12.2.3"],"90.0.4402.0":["13.0.0-beta.2","13.0.0-beta.3","13.0.0-nightly.20210210","13.0.0-nightly.20210211","13.0.0-nightly.20210212","13.0.0-nightly.20210216","13.0.0-nightly.20210217","13.0.0-nightly.20210218","13.0.0-nightly.20210219","13.0.0-nightly.20210222","13.0.0-nightly.20210225","13.0.0-nightly.20210226","13.0.0-nightly.20210301","13.0.0-nightly.20210302","13.0.0-nightly.20210303","14.0.0-nightly.20210304"],"90.0.4415.0":["13.0.0-beta.4","13.0.0-beta.5","13.0.0-beta.6","13.0.0-beta.7","13.0.0-beta.8","13.0.0-beta.9","13.0.0-beta.10","13.0.0-beta.11","13.0.0-beta.12","13.0.0-beta.13","14.0.0-nightly.20210305","14.0.0-nightly.20210308","14.0.0-nightly.20210309","14.0.0-nightly.20210311","14.0.0-nightly.20210315","14.0.0-nightly.20210316","14.0.0-nightly.20210317","14.0.0-nightly.20210318","14.0.0-nightly.20210319","14.0.0-nightly.20210323","14.0.0-nightly.20210324","14.0.0-nightly.20210325","14.0.0-nightly.20210326","14.0.0-nightly.20210329","14.0.0-nightly.20210330"],"91.0.4448.0":["13.0.0-beta.14","13.0.0-beta.16","13.0.0-beta.17","13.0.0-beta.18","13.0.0-beta.20","14.0.0-nightly.20210331","14.0.0-nightly.20210401","14.0.0-nightly.20210402","14.0.0-nightly.20210406","14.0.0-nightly.20210407","14.0.0-nightly.20210408","14.0.0-nightly.20210409","14.0.0-nightly.20210413"],"91.0.4472.33":["13.0.0-beta.21","13.0.0-beta.22","13.0.0-beta.23"],"91.0.4472.38":["13.0.0-beta.24","13.0.0-beta.25","13.0.0-beta.26","13.0.0-beta.27","13.0.0-beta.28"],"89.0.4349.0":["13.0.0-nightly.20201215","13.0.0-nightly.20201216","13.0.0-nightly.20201221","13.0.0-nightly.20201222"],"89.0.4359.0":["13.0.0-nightly.20201223","13.0.0-nightly.20210104","13.0.0-nightly.20210108","13.0.0-nightly.20210111"],"89.0.4386.0":["13.0.0-nightly.20210113","13.0.0-nightly.20210114","13.0.0-nightly.20210118","13.0.0-nightly.20210122","13.0.0-nightly.20210125"],"89.0.4389.0":["13.0.0-nightly.20210127","13.0.0-nightly.20210128","13.0.0-nightly.20210129","13.0.0-nightly.20210201","13.0.0-nightly.20210202","13.0.0-nightly.20210203","13.0.0-nightly.20210205","13.0.0-nightly.20210208","13.0.0-nightly.20210209"],"91.0.4472.69":["13.0.0","13.0.1"],"91.0.4472.77":["13.1.0","13.1.1","13.1.2"],"91.0.4472.106":["13.1.3","13.1.4"],"91.0.4472.124":["13.1.5","13.1.6","13.1.7"],"91.0.4472.164":["13.1.8","13.1.9","13.2.0","13.2.1","13.2.2","13.2.3","13.3.0","13.4.0","13.5.0","13.5.1","13.5.2","13.6.0","13.6.1","13.6.2","13.6.3","13.6.6","13.6.7","13.6.8","13.6.9"],"92.0.4511.0":["14.0.0-beta.1","14.0.0-beta.2","14.0.0-beta.3","14.0.0-nightly.20210520","14.0.0-nightly.20210523","14.0.0-nightly.20210524","15.0.0-nightly.20210527","15.0.0-nightly.20210528","15.0.0-nightly.20210531","15.0.0-nightly.20210601","15.0.0-nightly.20210602"],"93.0.4536.0":["14.0.0-beta.5","14.0.0-beta.6","14.0.0-beta.7","14.0.0-beta.8","15.0.0-nightly.20210609","15.0.0-nightly.20210610","15.0.0-nightly.20210611","15.0.0-nightly.20210614","15.0.0-nightly.20210615","15.0.0-nightly.20210616"],"93.0.4539.0":["14.0.0-beta.9","14.0.0-beta.10","15.0.0-nightly.20210617","15.0.0-nightly.20210618","15.0.0-nightly.20210621","15.0.0-nightly.20210622"],"93.0.4557.4":["14.0.0-beta.11","14.0.0-beta.12"],"93.0.4566.0":["14.0.0-beta.13","14.0.0-beta.14","14.0.0-beta.15","14.0.0-beta.16","14.0.0-beta.17","15.0.0-alpha.1","15.0.0-alpha.2","15.0.0-nightly.20210706","15.0.0-nightly.20210707","15.0.0-nightly.20210708","15.0.0-nightly.20210709","15.0.0-nightly.20210712","15.0.0-nightly.20210713","15.0.0-nightly.20210714","15.0.0-nightly.20210715","15.0.0-nightly.20210716","15.0.0-nightly.20210719","15.0.0-nightly.20210720","15.0.0-nightly.20210721","16.0.0-nightly.20210722","16.0.0-nightly.20210723","16.0.0-nightly.20210726"],"93.0.4577.15":["14.0.0-beta.18","14.0.0-beta.19","14.0.0-beta.20","14.0.0-beta.21"],"93.0.4577.25":["14.0.0-beta.22","14.0.0-beta.23"],"93.0.4577.51":["14.0.0-beta.24","14.0.0-beta.25"],"92.0.4475.0":["14.0.0-nightly.20210426","14.0.0-nightly.20210427"],"92.0.4488.0":["14.0.0-nightly.20210430","14.0.0-nightly.20210503"],"92.0.4496.0":["14.0.0-nightly.20210505"],"92.0.4498.0":["14.0.0-nightly.20210506"],"92.0.4499.0":["14.0.0-nightly.20210507","14.0.0-nightly.20210510","14.0.0-nightly.20210511","14.0.0-nightly.20210512","14.0.0-nightly.20210513"],"92.0.4505.0":["14.0.0-nightly.20210514","14.0.0-nightly.20210517","14.0.0-nightly.20210518","14.0.0-nightly.20210519"],"93.0.4577.58":["14.0.0"],"93.0.4577.63":["14.0.1"],"93.0.4577.82":["14.0.2","14.1.0","14.1.1","14.2.0","14.2.1","14.2.2","14.2.3","14.2.4","14.2.5","14.2.6","14.2.7","14.2.8","14.2.9"],"94.0.4584.0":["15.0.0-alpha.3","15.0.0-alpha.4","15.0.0-alpha.5","15.0.0-alpha.6","16.0.0-nightly.20210727","16.0.0-nightly.20210728","16.0.0-nightly.20210729","16.0.0-nightly.20210730","16.0.0-nightly.20210802","16.0.0-nightly.20210803","16.0.0-nightly.20210804","16.0.0-nightly.20210805","16.0.0-nightly.20210806","16.0.0-nightly.20210809","16.0.0-nightly.20210810","16.0.0-nightly.20210811"],"94.0.4590.2":["15.0.0-alpha.7","15.0.0-alpha.8","15.0.0-alpha.9","16.0.0-nightly.20210812","16.0.0-nightly.20210813","16.0.0-nightly.20210816","16.0.0-nightly.20210817","16.0.0-nightly.20210818","16.0.0-nightly.20210819","16.0.0-nightly.20210820","16.0.0-nightly.20210823"],"94.0.4606.12":["15.0.0-alpha.10"],"94.0.4606.20":["15.0.0-beta.1","15.0.0-beta.2"],"94.0.4606.31":["15.0.0-beta.3","15.0.0-beta.4","15.0.0-beta.5","15.0.0-beta.6","15.0.0-beta.7"],"93.0.4530.0":["15.0.0-nightly.20210603","15.0.0-nightly.20210604"],"93.0.4535.0":["15.0.0-nightly.20210608"],"93.0.4550.0":["15.0.0-nightly.20210623","15.0.0-nightly.20210624"],"93.0.4552.0":["15.0.0-nightly.20210625","15.0.0-nightly.20210628","15.0.0-nightly.20210629"],"93.0.4558.0":["15.0.0-nightly.20210630","15.0.0-nightly.20210701","15.0.0-nightly.20210702","15.0.0-nightly.20210705"],"94.0.4606.51":["15.0.0"],"94.0.4606.61":["15.1.0","15.1.1"],"94.0.4606.71":["15.1.2"],"94.0.4606.81":["15.2.0","15.3.0","15.3.1","15.3.2","15.3.3","15.3.4","15.3.5","15.3.6","15.3.7","15.4.0","15.4.1","15.4.2","15.5.0","15.5.1","15.5.2","15.5.3","15.5.4","15.5.5","15.5.6","15.5.7"],"95.0.4629.0":["16.0.0-alpha.1","16.0.0-alpha.2","16.0.0-alpha.3","16.0.0-alpha.4","16.0.0-alpha.5","16.0.0-alpha.6","16.0.0-alpha.7","16.0.0-nightly.20210902","16.0.0-nightly.20210903","16.0.0-nightly.20210906","16.0.0-nightly.20210907","16.0.0-nightly.20210908","16.0.0-nightly.20210909","16.0.0-nightly.20210910","16.0.0-nightly.20210913","16.0.0-nightly.20210914","16.0.0-nightly.20210915","16.0.0-nightly.20210916","16.0.0-nightly.20210917","16.0.0-nightly.20210920","16.0.0-nightly.20210921","16.0.0-nightly.20210922","17.0.0-nightly.20210923","17.0.0-nightly.20210924","17.0.0-nightly.20210927","17.0.0-nightly.20210928","17.0.0-nightly.20210929","17.0.0-nightly.20210930","17.0.0-nightly.20211001","17.0.0-nightly.20211004","17.0.0-nightly.20211005"],"96.0.4647.0":["16.0.0-alpha.8","16.0.0-alpha.9","16.0.0-beta.1","16.0.0-beta.2","16.0.0-beta.3","17.0.0-nightly.20211006","17.0.0-nightly.20211007","17.0.0-nightly.20211008","17.0.0-nightly.20211011","17.0.0-nightly.20211012","17.0.0-nightly.20211013","17.0.0-nightly.20211014","17.0.0-nightly.20211015","17.0.0-nightly.20211018","17.0.0-nightly.20211019","17.0.0-nightly.20211020","17.0.0-nightly.20211021"],"96.0.4664.18":["16.0.0-beta.4","16.0.0-beta.5"],"96.0.4664.27":["16.0.0-beta.6","16.0.0-beta.7"],"96.0.4664.35":["16.0.0-beta.8","16.0.0-beta.9"],"95.0.4612.5":["16.0.0-nightly.20210824","16.0.0-nightly.20210825","16.0.0-nightly.20210826","16.0.0-nightly.20210827","16.0.0-nightly.20210830","16.0.0-nightly.20210831","16.0.0-nightly.20210901"],"96.0.4664.45":["16.0.0","16.0.1"],"96.0.4664.55":["16.0.2","16.0.3","16.0.4","16.0.5"],"96.0.4664.110":["16.0.6","16.0.7","16.0.8"],"96.0.4664.174":["16.0.9","16.0.10","16.1.0","16.1.1","16.2.0","16.2.1","16.2.2","16.2.3","16.2.4","16.2.5","16.2.6","16.2.7","16.2.8"],"96.0.4664.4":["17.0.0-alpha.1","17.0.0-alpha.2","17.0.0-alpha.3","17.0.0-nightly.20211022","17.0.0-nightly.20211025","17.0.0-nightly.20211026","17.0.0-nightly.20211027","17.0.0-nightly.20211028","17.0.0-nightly.20211029","17.0.0-nightly.20211101","17.0.0-nightly.20211102","17.0.0-nightly.20211103","17.0.0-nightly.20211104","17.0.0-nightly.20211105","17.0.0-nightly.20211108","17.0.0-nightly.20211109","17.0.0-nightly.20211110","17.0.0-nightly.20211111","17.0.0-nightly.20211112","17.0.0-nightly.20211115","17.0.0-nightly.20211116","17.0.0-nightly.20211117","18.0.0-nightly.20211118","18.0.0-nightly.20211119","18.0.0-nightly.20211122","18.0.0-nightly.20211123"],"98.0.4706.0":["17.0.0-alpha.4","17.0.0-alpha.5","17.0.0-alpha.6","17.0.0-beta.1","17.0.0-beta.2","18.0.0-nightly.20211124","18.0.0-nightly.20211125","18.0.0-nightly.20211126","18.0.0-nightly.20211129","18.0.0-nightly.20211130","18.0.0-nightly.20211201","18.0.0-nightly.20211202","18.0.0-nightly.20211203","18.0.0-nightly.20211206","18.0.0-nightly.20211207","18.0.0-nightly.20211208","18.0.0-nightly.20211209","18.0.0-nightly.20211210","18.0.0-nightly.20211213","18.0.0-nightly.20211214","18.0.0-nightly.20211215","18.0.0-nightly.20211216","18.0.0-nightly.20211217","18.0.0-nightly.20211220","18.0.0-nightly.20211221","18.0.0-nightly.20211222","18.0.0-nightly.20211223","18.0.0-nightly.20211228","18.0.0-nightly.20211229","18.0.0-nightly.20211231","18.0.0-nightly.20220103","18.0.0-nightly.20220104","18.0.0-nightly.20220105","18.0.0-nightly.20220106","18.0.0-nightly.20220107","18.0.0-nightly.20220110"],"98.0.4758.9":["17.0.0-beta.3"],"98.0.4758.11":["17.0.0-beta.4","17.0.0-beta.5","17.0.0-beta.6","17.0.0-beta.7","17.0.0-beta.8","17.0.0-beta.9"],"98.0.4758.74":["17.0.0"],"98.0.4758.82":["17.0.1"],"98.0.4758.102":["17.1.0"],"98.0.4758.109":["17.1.1","17.1.2","17.2.0"],"98.0.4758.141":["17.3.0","17.3.1","17.4.0","17.4.1","17.4.2","17.4.3","17.4.4","17.4.5","17.4.6","17.4.7","17.4.8","17.4.9","17.4.10","17.4.11"],"99.0.4767.0":["18.0.0-alpha.1","18.0.0-alpha.2","18.0.0-alpha.3","18.0.0-alpha.4","18.0.0-alpha.5","18.0.0-nightly.20220111","18.0.0-nightly.20220112","18.0.0-nightly.20220113","18.0.0-nightly.20220114","18.0.0-nightly.20220117","18.0.0-nightly.20220118","18.0.0-nightly.20220119","18.0.0-nightly.20220121","18.0.0-nightly.20220124","18.0.0-nightly.20220125","18.0.0-nightly.20220127","18.0.0-nightly.20220128","18.0.0-nightly.20220131","18.0.0-nightly.20220201","19.0.0-nightly.20220202","19.0.0-nightly.20220203","19.0.0-nightly.20220204","19.0.0-nightly.20220207","19.0.0-nightly.20220208","19.0.0-nightly.20220209"],"100.0.4894.0":["18.0.0-beta.1","18.0.0-beta.2","18.0.0-beta.3","18.0.0-beta.4","18.0.0-beta.5","18.0.0-beta.6","19.0.0-nightly.20220308","19.0.0-nightly.20220309","19.0.0-nightly.20220310","19.0.0-nightly.20220311","19.0.0-nightly.20220314","19.0.0-nightly.20220315","19.0.0-nightly.20220316","19.0.0-nightly.20220317","19.0.0-nightly.20220318","19.0.0-nightly.20220321","19.0.0-nightly.20220322","19.0.0-nightly.20220323","19.0.0-nightly.20220324"],"100.0.4896.56":["18.0.0"],"100.0.4896.60":["18.0.1","18.0.2"],"100.0.4896.75":["18.0.3","18.0.4"],"100.0.4896.127":["18.1.0"],"100.0.4896.143":["18.2.0","18.2.1","18.2.2","18.2.3"],"100.0.4896.160":["18.2.4","18.3.0","18.3.1","18.3.2","18.3.3","18.3.4","18.3.5","18.3.6","18.3.7","18.3.8","18.3.9","18.3.11","18.3.12","18.3.13","18.3.14","18.3.15"],"102.0.4962.3":["19.0.0-alpha.1","19.0.0-nightly.20220328","19.0.0-nightly.20220329","20.0.0-nightly.20220330"],"102.0.4971.0":["19.0.0-alpha.2","19.0.0-alpha.3","20.0.0-nightly.20220411"],"102.0.4989.0":["19.0.0-alpha.4","19.0.0-alpha.5","20.0.0-nightly.20220414","20.0.0-nightly.20220415","20.0.0-nightly.20220418","20.0.0-nightly.20220419","20.0.0-nightly.20220420","20.0.0-nightly.20220421"],"102.0.4999.0":["19.0.0-beta.1","19.0.0-beta.2","19.0.0-beta.3","20.0.0-nightly.20220425","20.0.0-nightly.20220426","20.0.0-nightly.20220427","20.0.0-nightly.20220428","20.0.0-nightly.20220429","20.0.0-nightly.20220502","20.0.0-nightly.20220503","20.0.0-nightly.20220504","20.0.0-nightly.20220505","20.0.0-nightly.20220506","20.0.0-nightly.20220509","20.0.0-nightly.20220511","20.0.0-nightly.20220512","20.0.0-nightly.20220513","20.0.0-nightly.20220516","20.0.0-nightly.20220517"],"102.0.5005.27":["19.0.0-beta.4"],"102.0.5005.40":["19.0.0-beta.5","19.0.0-beta.6","19.0.0-beta.7"],"102.0.5005.49":["19.0.0-beta.8"],"102.0.4961.0":["19.0.0-nightly.20220325"],"102.0.5005.61":["19.0.0","19.0.1"],"102.0.5005.63":["19.0.2","19.0.3","19.0.4"],"102.0.5005.115":["19.0.5","19.0.6"],"102.0.5005.134":["19.0.7"],"102.0.5005.148":["19.0.8"],"102.0.5005.167":["19.0.9","19.0.10","19.0.11","19.0.12","19.0.13","19.0.14","19.0.15","19.0.16","19.0.17","19.1.0","19.1.1","19.1.2","19.1.3","19.1.4","19.1.5","19.1.6","19.1.7","19.1.8","19.1.9"],"103.0.5044.0":["20.0.0-alpha.1","20.0.0-nightly.20220518","20.0.0-nightly.20220519","20.0.0-nightly.20220520","20.0.0-nightly.20220523","20.0.0-nightly.20220524","21.0.0-nightly.20220526","21.0.0-nightly.20220527","21.0.0-nightly.20220530","21.0.0-nightly.20220531"],"104.0.5073.0":["20.0.0-alpha.2","20.0.0-alpha.3","20.0.0-alpha.4","20.0.0-alpha.5","20.0.0-alpha.6","20.0.0-alpha.7","20.0.0-beta.1","20.0.0-beta.2","20.0.0-beta.3","20.0.0-beta.4","20.0.0-beta.5","20.0.0-beta.6","20.0.0-beta.7","20.0.0-beta.8","21.0.0-nightly.20220602","21.0.0-nightly.20220603","21.0.0-nightly.20220606","21.0.0-nightly.20220607","21.0.0-nightly.20220608","21.0.0-nightly.20220609","21.0.0-nightly.20220610","21.0.0-nightly.20220613","21.0.0-nightly.20220614","21.0.0-nightly.20220615","21.0.0-nightly.20220616","21.0.0-nightly.20220617","21.0.0-nightly.20220620","21.0.0-nightly.20220621","21.0.0-nightly.20220622","21.0.0-nightly.20220623","21.0.0-nightly.20220624","21.0.0-nightly.20220627"],"104.0.5112.39":["20.0.0-beta.9"],"104.0.5112.48":["20.0.0-beta.10","20.0.0-beta.11","20.0.0-beta.12"],"104.0.5112.57":["20.0.0-beta.13"],"104.0.5112.65":["20.0.0"],"104.0.5112.81":["20.0.1","20.0.2","20.0.3"],"104.0.5112.102":["20.1.0","20.1.1"],"104.0.5112.114":["20.1.2","20.1.3","20.1.4"],"104.0.5112.124":["20.2.0","20.3.0","20.3.1","20.3.2","20.3.3","20.3.4","20.3.5","20.3.6","20.3.7","20.3.8","20.3.9","20.3.10","20.3.11","20.3.12"],"105.0.5187.0":["21.0.0-alpha.1","21.0.0-alpha.2","21.0.0-alpha.3","21.0.0-alpha.4","21.0.0-alpha.5","21.0.0-nightly.20220720","21.0.0-nightly.20220721","21.0.0-nightly.20220722","21.0.0-nightly.20220725","21.0.0-nightly.20220726","21.0.0-nightly.20220727","21.0.0-nightly.20220728","21.0.0-nightly.20220801","21.0.0-nightly.20220802","22.0.0-nightly.20220808","22.0.0-nightly.20220809","22.0.0-nightly.20220810","22.0.0-nightly.20220811","22.0.0-nightly.20220812","22.0.0-nightly.20220815","22.0.0-nightly.20220816","22.0.0-nightly.20220817"],"106.0.5216.0":["21.0.0-alpha.6","21.0.0-beta.1","21.0.0-beta.2","21.0.0-beta.3","21.0.0-beta.4","21.0.0-beta.5","22.0.0-nightly.20220822","22.0.0-nightly.20220823","22.0.0-nightly.20220824","22.0.0-nightly.20220825","22.0.0-nightly.20220829","22.0.0-nightly.20220830","22.0.0-nightly.20220831","22.0.0-nightly.20220901","22.0.0-nightly.20220902","22.0.0-nightly.20220905"],"106.0.5249.40":["21.0.0-beta.6","21.0.0-beta.7","21.0.0-beta.8"],"105.0.5129.0":["21.0.0-nightly.20220628","21.0.0-nightly.20220629","21.0.0-nightly.20220630","21.0.0-nightly.20220701","21.0.0-nightly.20220704","21.0.0-nightly.20220705","21.0.0-nightly.20220706","21.0.0-nightly.20220707","21.0.0-nightly.20220708","21.0.0-nightly.20220711","21.0.0-nightly.20220712","21.0.0-nightly.20220713"],"105.0.5173.0":["21.0.0-nightly.20220715","21.0.0-nightly.20220718","21.0.0-nightly.20220719"],"106.0.5249.51":["21.0.0"],"106.0.5249.61":["21.0.1"],"106.0.5249.91":["21.1.0"],"106.0.5249.103":["21.1.1"],"106.0.5249.119":["21.2.0"],"106.0.5249.165":["21.2.1"],"106.0.5249.168":["21.2.2","21.2.3"],"106.0.5249.181":["21.3.0","21.3.1"],"106.0.5249.199":["21.3.3","21.3.4","21.3.5","21.4.0","21.4.1","21.4.2"],"107.0.5286.0":["22.0.0-alpha.1","22.0.0-nightly.20220909","22.0.0-nightly.20220912","22.0.0-nightly.20220913","22.0.0-nightly.20220914","22.0.0-nightly.20220915","22.0.0-nightly.20220916","22.0.0-nightly.20220919","22.0.0-nightly.20220920","22.0.0-nightly.20220921","22.0.0-nightly.20220922","22.0.0-nightly.20220923","22.0.0-nightly.20220926","22.0.0-nightly.20220927","22.0.0-nightly.20220928","23.0.0-nightly.20220929","23.0.0-nightly.20220930","23.0.0-nightly.20221003"],"108.0.5329.0":["22.0.0-alpha.3","22.0.0-alpha.4","22.0.0-alpha.5","22.0.0-alpha.6","23.0.0-nightly.20221004","23.0.0-nightly.20221005","23.0.0-nightly.20221006","23.0.0-nightly.20221007","23.0.0-nightly.20221010","23.0.0-nightly.20221011","23.0.0-nightly.20221012","23.0.0-nightly.20221013","23.0.0-nightly.20221014","23.0.0-nightly.20221017"],"108.0.5355.0":["22.0.0-alpha.7","23.0.0-nightly.20221018","23.0.0-nightly.20221019","23.0.0-nightly.20221020","23.0.0-nightly.20221021","23.0.0-nightly.20221024","23.0.0-nightly.20221026"],"108.0.5359.10":["22.0.0-alpha.8","22.0.0-beta.1","22.0.0-beta.2","22.0.0-beta.3"],"108.0.5359.29":["22.0.0-beta.4"],"108.0.5359.40":["22.0.0-beta.5","22.0.0-beta.6"],"108.0.5359.48":["22.0.0-beta.7","22.0.0-beta.8"],"107.0.5274.0":["22.0.0-nightly.20220908"],"108.0.5359.62":["22.0.0"],"108.0.5359.125":["22.0.1"],"108.0.5359.179":["22.0.2","22.0.3","22.1.0"],"108.0.5359.215":["22.2.0","22.2.1","22.3.0","22.3.1","22.3.2"],"110.0.5415.0":["23.0.0-alpha.1","23.0.0-nightly.20221118","23.0.0-nightly.20221121","23.0.0-nightly.20221122","23.0.0-nightly.20221123","23.0.0-nightly.20221124","23.0.0-nightly.20221125","23.0.0-nightly.20221128","23.0.0-nightly.20221129","23.0.0-nightly.20221130","24.0.0-nightly.20221201","24.0.0-nightly.20221202","24.0.0-nightly.20221205"],"110.0.5451.0":["23.0.0-alpha.2","23.0.0-alpha.3","24.0.0-nightly.20221206","24.0.0-nightly.20221207","24.0.0-nightly.20221208","24.0.0-nightly.20221213","24.0.0-nightly.20221214","24.0.0-nightly.20221215","24.0.0-nightly.20221216"],"110.0.5478.5":["23.0.0-beta.1","23.0.0-beta.2","23.0.0-beta.3"],"110.0.5481.30":["23.0.0-beta.4"],"110.0.5481.38":["23.0.0-beta.5"],"110.0.5481.52":["23.0.0-beta.6","23.0.0-beta.8"],"109.0.5382.0":["23.0.0-nightly.20221027","23.0.0-nightly.20221028","23.0.0-nightly.20221031","23.0.0-nightly.20221101","23.0.0-nightly.20221102","23.0.0-nightly.20221103","23.0.0-nightly.20221104","23.0.0-nightly.20221107","23.0.0-nightly.20221108","23.0.0-nightly.20221109","23.0.0-nightly.20221110","23.0.0-nightly.20221111","23.0.0-nightly.20221114","23.0.0-nightly.20221115","23.0.0-nightly.20221116","23.0.0-nightly.20221117"],"110.0.5481.77":["23.0.0"],"110.0.5481.100":["23.1.0"],"110.0.5481.104":["23.1.1"],"110.0.5481.177":["23.1.2"],"110.0.5481.179":["23.1.3"],"111.0.5560.0":["24.0.0-alpha.1","24.0.0-alpha.2","24.0.0-alpha.3","24.0.0-alpha.4","24.0.0-alpha.5","24.0.0-alpha.6","24.0.0-alpha.7","24.0.0-nightly.20230203","24.0.0-nightly.20230206","24.0.0-nightly.20230207","24.0.0-nightly.20230208","24.0.0-nightly.20230209","25.0.0-nightly.20230210","25.0.0-nightly.20230214","25.0.0-nightly.20230215","25.0.0-nightly.20230216","25.0.0-nightly.20230217","25.0.0-nightly.20230220","25.0.0-nightly.20230221","25.0.0-nightly.20230222","25.0.0-nightly.20230223","25.0.0-nightly.20230224","25.0.0-nightly.20230227","25.0.0-nightly.20230228","25.0.0-nightly.20230301","25.0.0-nightly.20230302","25.0.0-nightly.20230303","25.0.0-nightly.20230306","25.0.0-nightly.20230307","25.0.0-nightly.20230308","25.0.0-nightly.20230309","25.0.0-nightly.20230310"],"111.0.5563.50":["24.0.0-beta.1","24.0.0-beta.2"],"111.0.5518.0":["24.0.0-nightly.20230109","24.0.0-nightly.20230110","24.0.0-nightly.20230111","24.0.0-nightly.20230112","24.0.0-nightly.20230113","24.0.0-nightly.20230116","24.0.0-nightly.20230117","24.0.0-nightly.20230118","24.0.0-nightly.20230119","24.0.0-nightly.20230120","24.0.0-nightly.20230123","24.0.0-nightly.20230124","24.0.0-nightly.20230125","24.0.0-nightly.20230126","24.0.0-nightly.20230127","24.0.0-nightly.20230131","24.0.0-nightly.20230201","24.0.0-nightly.20230202"]}
    \ No newline at end of file
    +{"39.0.2171.65":["0.20.0","0.20.1","0.20.2","0.20.3","0.20.4","0.20.5","0.20.6","0.20.7","0.20.8"],"40.0.2214.91":["0.21.0","0.21.1","0.21.2"],"41.0.2272.76":["0.21.3","0.22.1","0.22.2","0.22.3","0.23.0","0.24.0"],"42.0.2311.107":["0.25.0","0.25.1","0.25.2","0.25.3","0.26.0","0.26.1","0.27.0","0.27.1"],"43.0.2357.65":["0.27.2","0.27.3","0.28.0","0.28.1","0.28.2","0.28.3","0.29.1","0.29.2"],"44.0.2403.125":["0.30.4","0.31.0"],"45.0.2454.85":["0.31.2","0.32.2","0.32.3","0.33.0","0.33.1","0.33.2","0.33.3","0.33.4","0.33.6","0.33.7","0.33.8","0.33.9","0.34.0","0.34.1","0.34.2","0.34.3","0.34.4","0.35.1","0.35.2","0.35.3","0.35.4","0.35.5"],"47.0.2526.73":["0.36.0","0.36.2","0.36.3","0.36.4"],"47.0.2526.110":["0.36.5","0.36.6","0.36.7","0.36.8","0.36.9","0.36.10","0.36.11","0.36.12"],"49.0.2623.75":["0.37.0","0.37.1","0.37.3","0.37.4","0.37.5","0.37.6","0.37.7","0.37.8","1.0.0","1.0.1","1.0.2"],"50.0.2661.102":["1.1.0","1.1.1","1.1.2","1.1.3"],"51.0.2704.63":["1.2.0","1.2.1"],"51.0.2704.84":["1.2.2","1.2.3"],"51.0.2704.103":["1.2.4","1.2.5"],"51.0.2704.106":["1.2.6","1.2.7","1.2.8"],"52.0.2743.82":["1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.9","1.3.10","1.3.13","1.3.14","1.3.15"],"53.0.2785.113":["1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5"],"53.0.2785.143":["1.4.6","1.4.7","1.4.8","1.4.10","1.4.11","1.4.13","1.4.14","1.4.15","1.4.16"],"54.0.2840.51":["1.4.12"],"54.0.2840.101":["1.5.0","1.5.1"],"56.0.2924.87":["1.6.0","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.6.6","1.6.7","1.6.8","1.6.9","1.6.10","1.6.11","1.6.12","1.6.13","1.6.14","1.6.15","1.6.16","1.6.17","1.6.18"],"58.0.3029.110":["1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.7.10","1.7.11","1.7.12","1.7.13","1.7.14","1.7.15","1.7.16"],"59.0.3071.115":["1.8.0","1.8.1","1.8.2-beta.1","1.8.2-beta.2","1.8.2-beta.3","1.8.2-beta.4","1.8.2-beta.5","1.8.2","1.8.3","1.8.4","1.8.5","1.8.6","1.8.7","1.8.8"],"61.0.3163.100":["2.0.0-beta.1","2.0.0-beta.2","2.0.0-beta.3","2.0.0-beta.4","2.0.0-beta.5","2.0.0-beta.6","2.0.0-beta.7","2.0.0-beta.8","2.0.0","2.0.1","2.0.2","2.0.3","2.0.4","2.0.5","2.0.6","2.0.7","2.0.8-nightly.20180819","2.0.8-nightly.20180820","2.0.8","2.0.9","2.0.10","2.0.11","2.0.12","2.0.13","2.0.14","2.0.15","2.0.16","2.0.17","2.0.18","2.1.0-unsupported.20180809"],"66.0.3359.181":["3.0.0-beta.1","3.0.0-beta.2","3.0.0-beta.3","3.0.0-beta.4","3.0.0-beta.5","3.0.0-beta.6","3.0.0-beta.7","3.0.0-beta.8","3.0.0-beta.9","3.0.0-beta.10","3.0.0-beta.11","3.0.0-beta.12","3.0.0-beta.13","3.0.0-nightly.20180818","3.0.0-nightly.20180821","3.0.0-nightly.20180823","3.0.0-nightly.20180904","3.0.0","3.0.1","3.0.2","3.0.3","3.0.4","3.0.5","3.0.6","3.0.7","3.0.8","3.0.9","3.0.10","3.0.11","3.0.12","3.0.13","3.0.14","3.0.15","3.0.16","3.1.0-beta.1","3.1.0-beta.2","3.1.0-beta.3","3.1.0-beta.4","3.1.0-beta.5","3.1.0","3.1.1","3.1.2","3.1.3","3.1.4","3.1.5","3.1.6","3.1.7","3.1.8","3.1.9","3.1.10","3.1.11","3.1.12","3.1.13","4.0.0-nightly.20180817","4.0.0-nightly.20180819","4.0.0-nightly.20180821"],"69.0.3497.106":["4.0.0-beta.1","4.0.0-beta.2","4.0.0-beta.3","4.0.0-beta.4","4.0.0-beta.5","4.0.0-beta.6","4.0.0-beta.7","4.0.0-beta.8","4.0.0-beta.9","4.0.0-beta.10","4.0.0-beta.11","4.0.0-nightly.20181010","4.0.0","4.0.1","4.0.2","4.0.3","4.0.4","4.0.5","4.0.6"],"67.0.3396.99":["4.0.0-nightly.20180929"],"68.0.3440.128":["4.0.0-nightly.20181006"],"69.0.3497.128":["4.0.7","4.0.8","4.1.0","4.1.1","4.1.2","4.1.3","4.1.4","4.1.5","4.2.0","4.2.1","4.2.2","4.2.3","4.2.4","4.2.5","4.2.6","4.2.7","4.2.8","4.2.9","4.2.10","4.2.11","4.2.12"],"72.0.3626.52":["5.0.0-beta.1","5.0.0-beta.2","6.0.0-nightly.20190123"],"73.0.3683.27":["5.0.0-beta.3"],"73.0.3683.54":["5.0.0-beta.4"],"73.0.3683.61":["5.0.0-beta.5"],"73.0.3683.84":["5.0.0-beta.6"],"73.0.3683.94":["5.0.0-beta.7"],"73.0.3683.104":["5.0.0-beta.8"],"73.0.3683.117":["5.0.0-beta.9"],"70.0.3538.110":["5.0.0-nightly.20190107"],"71.0.3578.98":["5.0.0-nightly.20190121","5.0.0-nightly.20190122"],"73.0.3683.119":["5.0.0"],"73.0.3683.121":["5.0.1","5.0.2","5.0.3","5.0.4","5.0.5","5.0.6","5.0.7","5.0.8","5.0.9","5.0.10","5.0.11","5.0.12","5.0.13"],"76.0.3774.1":["6.0.0-beta.1"],"76.0.3783.1":["6.0.0-beta.2","6.0.0-beta.3","6.0.0-beta.4"],"76.0.3805.4":["6.0.0-beta.5"],"76.0.3809.3":["6.0.0-beta.6"],"76.0.3809.22":["6.0.0-beta.7"],"76.0.3809.26":["6.0.0-beta.8","6.0.0-beta.9"],"76.0.3809.37":["6.0.0-beta.10"],"76.0.3809.42":["6.0.0-beta.11"],"76.0.3809.54":["6.0.0-beta.12"],"76.0.3809.60":["6.0.0-beta.13"],"76.0.3809.68":["6.0.0-beta.14"],"76.0.3809.74":["6.0.0-beta.15"],"72.0.3626.107":["6.0.0-nightly.20190212"],"72.0.3626.110":["6.0.0-nightly.20190213"],"74.0.3724.8":["6.0.0-nightly.20190311"],"76.0.3809.88":["6.0.0"],"76.0.3809.102":["6.0.1"],"76.0.3809.110":["6.0.2"],"76.0.3809.126":["6.0.3"],"76.0.3809.131":["6.0.4"],"76.0.3809.136":["6.0.5"],"76.0.3809.138":["6.0.6"],"76.0.3809.139":["6.0.7"],"76.0.3809.146":["6.0.8","6.0.9","6.0.10","6.0.11","6.0.12","6.1.0","6.1.1","6.1.2","6.1.3","6.1.4","6.1.5","6.1.6","6.1.7","6.1.8","6.1.9","6.1.10","6.1.11","6.1.12"],"78.0.3866.0":["7.0.0-beta.1","7.0.0-beta.2","7.0.0-beta.3","7.0.0-nightly.20190727","7.0.0-nightly.20190728","7.0.0-nightly.20190729","7.0.0-nightly.20190730","7.0.0-nightly.20190731","8.0.0-nightly.20190801","8.0.0-nightly.20190802"],"78.0.3896.6":["7.0.0-beta.4"],"78.0.3905.1":["7.0.0-beta.5","7.0.0-beta.6","7.0.0-beta.7","7.0.0"],"76.0.3784.0":["7.0.0-nightly.20190521"],"76.0.3806.0":["7.0.0-nightly.20190529","7.0.0-nightly.20190530","7.0.0-nightly.20190531","7.0.0-nightly.20190602","7.0.0-nightly.20190603"],"77.0.3814.0":["7.0.0-nightly.20190604"],"77.0.3815.0":["7.0.0-nightly.20190605","7.0.0-nightly.20190606","7.0.0-nightly.20190607","7.0.0-nightly.20190608","7.0.0-nightly.20190609","7.0.0-nightly.20190611","7.0.0-nightly.20190612","7.0.0-nightly.20190613","7.0.0-nightly.20190615","7.0.0-nightly.20190616","7.0.0-nightly.20190618","7.0.0-nightly.20190619","7.0.0-nightly.20190622","7.0.0-nightly.20190623","7.0.0-nightly.20190624","7.0.0-nightly.20190627","7.0.0-nightly.20190629","7.0.0-nightly.20190630","7.0.0-nightly.20190701","7.0.0-nightly.20190702"],"77.0.3843.0":["7.0.0-nightly.20190704","7.0.0-nightly.20190705"],"77.0.3848.0":["7.0.0-nightly.20190719","7.0.0-nightly.20190720","7.0.0-nightly.20190721"],"77.0.3864.0":["7.0.0-nightly.20190726"],"78.0.3904.92":["7.0.1"],"78.0.3904.94":["7.1.0"],"78.0.3904.99":["7.1.1"],"78.0.3904.113":["7.1.2"],"78.0.3904.126":["7.1.3"],"78.0.3904.130":["7.1.4","7.1.5","7.1.6","7.1.7","7.1.8","7.1.9","7.1.10","7.1.11","7.1.12","7.1.13","7.1.14","7.2.0","7.2.1","7.2.2","7.2.3","7.2.4","7.3.0","7.3.1","7.3.2","7.3.3"],"79.0.3931.0":["8.0.0-beta.1","8.0.0-beta.2","8.0.0-nightly.20191019","8.0.0-nightly.20191020","8.0.0-nightly.20191021","8.0.0-nightly.20191023"],"80.0.3955.0":["8.0.0-beta.3","8.0.0-beta.4"],"80.0.3987.14":["8.0.0-beta.5"],"80.0.3987.51":["8.0.0-beta.6"],"80.0.3987.59":["8.0.0-beta.7"],"80.0.3987.75":["8.0.0-beta.8","8.0.0-beta.9"],"78.0.3871.0":["8.0.0-nightly.20190803","8.0.0-nightly.20190806","8.0.0-nightly.20190807","8.0.0-nightly.20190808","8.0.0-nightly.20190809","8.0.0-nightly.20190810","8.0.0-nightly.20190811","8.0.0-nightly.20190812","8.0.0-nightly.20190813","8.0.0-nightly.20190814","8.0.0-nightly.20190815"],"78.0.3881.0":["8.0.0-nightly.20190816","8.0.0-nightly.20190817","8.0.0-nightly.20190818","8.0.0-nightly.20190819","8.0.0-nightly.20190820"],"78.0.3892.0":["8.0.0-nightly.20190824","8.0.0-nightly.20190825","8.0.0-nightly.20190827","8.0.0-nightly.20190828","8.0.0-nightly.20190830","8.0.0-nightly.20190901","8.0.0-nightly.20190902","8.0.0-nightly.20190907","8.0.0-nightly.20190909","8.0.0-nightly.20190910","8.0.0-nightly.20190911","8.0.0-nightly.20190912","8.0.0-nightly.20190913","8.0.0-nightly.20190914","8.0.0-nightly.20190915","8.0.0-nightly.20190917"],"79.0.3915.0":["8.0.0-nightly.20190919","8.0.0-nightly.20190920"],"79.0.3919.0":["8.0.0-nightly.20190922","8.0.0-nightly.20190923","8.0.0-nightly.20190924","8.0.0-nightly.20190926","8.0.0-nightly.20190928","8.0.0-nightly.20190929","8.0.0-nightly.20190930","8.0.0-nightly.20191001","8.0.0-nightly.20191004","8.0.0-nightly.20191005","8.0.0-nightly.20191006","8.0.0-nightly.20191009","8.0.0-nightly.20191011","8.0.0-nightly.20191012","8.0.0-nightly.20191017"],"80.0.3952.0":["8.0.0-nightly.20191101","8.0.0-nightly.20191103","8.0.0-nightly.20191105"],"80.0.3987.86":["8.0.0","8.0.1","8.0.2"],"80.0.3987.134":["8.0.3"],"80.0.3987.137":["8.1.0"],"80.0.3987.141":["8.1.1"],"80.0.3987.158":["8.2.0"],"80.0.3987.163":["8.2.1","8.2.2","8.2.3","8.5.3","8.5.4","8.5.5"],"80.0.3987.165":["8.2.4","8.2.5","8.3.0","8.3.1","8.3.2","8.3.3","8.3.4","8.4.0","8.4.1","8.5.0","8.5.1","8.5.2"],"82.0.4048.0":["9.0.0-beta.1","9.0.0-beta.2","9.0.0-beta.3","9.0.0-beta.4","9.0.0-beta.5"],"82.0.4058.2":["9.0.0-beta.6","9.0.0-beta.7","9.0.0-beta.9"],"82.0.4085.10":["9.0.0-beta.10"],"82.0.4085.14":["9.0.0-beta.11","9.0.0-beta.12","9.0.0-beta.13"],"82.0.4085.27":["9.0.0-beta.14"],"83.0.4102.3":["9.0.0-beta.15","9.0.0-beta.16"],"83.0.4103.14":["9.0.0-beta.17"],"83.0.4103.16":["9.0.0-beta.18"],"83.0.4103.24":["9.0.0-beta.19"],"83.0.4103.26":["9.0.0-beta.20","9.0.0-beta.21"],"83.0.4103.34":["9.0.0-beta.22"],"83.0.4103.44":["9.0.0-beta.23"],"83.0.4103.45":["9.0.0-beta.24"],"80.0.3954.0":["9.0.0-nightly.20191121","9.0.0-nightly.20191122","9.0.0-nightly.20191123","9.0.0-nightly.20191124","9.0.0-nightly.20191126","9.0.0-nightly.20191128","9.0.0-nightly.20191129","9.0.0-nightly.20191130","9.0.0-nightly.20191201","9.0.0-nightly.20191202","9.0.0-nightly.20191203","9.0.0-nightly.20191204","9.0.0-nightly.20191205","9.0.0-nightly.20191210"],"81.0.3994.0":["9.0.0-nightly.20191220","9.0.0-nightly.20191221","9.0.0-nightly.20191222","9.0.0-nightly.20191223","9.0.0-nightly.20191224","9.0.0-nightly.20191225","9.0.0-nightly.20191226","9.0.0-nightly.20191228","9.0.0-nightly.20191229","9.0.0-nightly.20191230","9.0.0-nightly.20191231","9.0.0-nightly.20200101","9.0.0-nightly.20200103","9.0.0-nightly.20200104","9.0.0-nightly.20200105","9.0.0-nightly.20200106","9.0.0-nightly.20200108","9.0.0-nightly.20200109","9.0.0-nightly.20200110","9.0.0-nightly.20200111","9.0.0-nightly.20200113","9.0.0-nightly.20200115","9.0.0-nightly.20200116","9.0.0-nightly.20200117"],"81.0.4030.0":["9.0.0-nightly.20200119","9.0.0-nightly.20200121"],"83.0.4103.64":["9.0.0"],"83.0.4103.94":["9.0.1","9.0.2"],"83.0.4103.100":["9.0.3"],"83.0.4103.104":["9.0.4"],"83.0.4103.119":["9.0.5"],"83.0.4103.122":["9.1.0","9.1.1","9.1.2","9.2.0","9.2.1","9.3.0","9.3.1","9.3.2","9.3.3","9.3.4","9.3.5","9.4.0","9.4.1","9.4.2","9.4.3","9.4.4"],"84.0.4129.0":["10.0.0-beta.1","10.0.0-beta.2","10.0.0-nightly.20200501","10.0.0-nightly.20200504","10.0.0-nightly.20200505","10.0.0-nightly.20200506","10.0.0-nightly.20200507","10.0.0-nightly.20200508","10.0.0-nightly.20200511","10.0.0-nightly.20200512","10.0.0-nightly.20200513","10.0.0-nightly.20200514","10.0.0-nightly.20200515","10.0.0-nightly.20200518","10.0.0-nightly.20200519","10.0.0-nightly.20200520","10.0.0-nightly.20200521","11.0.0-nightly.20200525","11.0.0-nightly.20200526"],"85.0.4161.2":["10.0.0-beta.3","10.0.0-beta.4"],"85.0.4181.1":["10.0.0-beta.8","10.0.0-beta.9"],"85.0.4183.19":["10.0.0-beta.10"],"85.0.4183.20":["10.0.0-beta.11"],"85.0.4183.26":["10.0.0-beta.12"],"85.0.4183.39":["10.0.0-beta.13","10.0.0-beta.14","10.0.0-beta.15","10.0.0-beta.17","10.0.0-beta.19","10.0.0-beta.20","10.0.0-beta.21"],"85.0.4183.70":["10.0.0-beta.23"],"85.0.4183.78":["10.0.0-beta.24"],"85.0.4183.80":["10.0.0-beta.25"],"82.0.4050.0":["10.0.0-nightly.20200209","10.0.0-nightly.20200210","10.0.0-nightly.20200211","10.0.0-nightly.20200216","10.0.0-nightly.20200217","10.0.0-nightly.20200218","10.0.0-nightly.20200221","10.0.0-nightly.20200222","10.0.0-nightly.20200223","10.0.0-nightly.20200226","10.0.0-nightly.20200303"],"82.0.4076.0":["10.0.0-nightly.20200304","10.0.0-nightly.20200305","10.0.0-nightly.20200306","10.0.0-nightly.20200309","10.0.0-nightly.20200310"],"82.0.4083.0":["10.0.0-nightly.20200311"],"83.0.4086.0":["10.0.0-nightly.20200316"],"83.0.4087.0":["10.0.0-nightly.20200317","10.0.0-nightly.20200318","10.0.0-nightly.20200320","10.0.0-nightly.20200323","10.0.0-nightly.20200324","10.0.0-nightly.20200325","10.0.0-nightly.20200326","10.0.0-nightly.20200327","10.0.0-nightly.20200330","10.0.0-nightly.20200331","10.0.0-nightly.20200401","10.0.0-nightly.20200402","10.0.0-nightly.20200403","10.0.0-nightly.20200406"],"83.0.4095.0":["10.0.0-nightly.20200408","10.0.0-nightly.20200410","10.0.0-nightly.20200413"],"84.0.4114.0":["10.0.0-nightly.20200414"],"84.0.4115.0":["10.0.0-nightly.20200415","10.0.0-nightly.20200416","10.0.0-nightly.20200417"],"84.0.4121.0":["10.0.0-nightly.20200422","10.0.0-nightly.20200423"],"84.0.4125.0":["10.0.0-nightly.20200427","10.0.0-nightly.20200428","10.0.0-nightly.20200429","10.0.0-nightly.20200430"],"85.0.4183.84":["10.0.0"],"85.0.4183.86":["10.0.1"],"85.0.4183.87":["10.1.0"],"85.0.4183.93":["10.1.1"],"85.0.4183.98":["10.1.2"],"85.0.4183.121":["10.1.3","10.1.4","10.1.5","10.1.6","10.1.7","10.2.0","10.3.0","10.3.1","10.3.2","10.4.0","10.4.1","10.4.2","10.4.3","10.4.4","10.4.5","10.4.6","10.4.7"],"86.0.4234.0":["11.0.0-beta.1","11.0.0-beta.3","11.0.0-beta.4","11.0.0-beta.5","11.0.0-beta.6","11.0.0-beta.7","11.0.0-nightly.20200822","11.0.0-nightly.20200824","11.0.0-nightly.20200825","11.0.0-nightly.20200826","12.0.0-nightly.20200827","12.0.0-nightly.20200831","12.0.0-nightly.20200902","12.0.0-nightly.20200903","12.0.0-nightly.20200907","12.0.0-nightly.20200910","12.0.0-nightly.20200911","12.0.0-nightly.20200914"],"87.0.4251.1":["11.0.0-beta.8","11.0.0-beta.9","11.0.0-beta.11"],"87.0.4280.11":["11.0.0-beta.12","11.0.0-beta.13"],"87.0.4280.27":["11.0.0-beta.16","11.0.0-beta.17","11.0.0-beta.18","11.0.0-beta.19"],"87.0.4280.40":["11.0.0-beta.20"],"87.0.4280.47":["11.0.0-beta.22","11.0.0-beta.23"],"85.0.4156.0":["11.0.0-nightly.20200529"],"85.0.4162.0":["11.0.0-nightly.20200602","11.0.0-nightly.20200603","11.0.0-nightly.20200604","11.0.0-nightly.20200609","11.0.0-nightly.20200610","11.0.0-nightly.20200611","11.0.0-nightly.20200615","11.0.0-nightly.20200616","11.0.0-nightly.20200617","11.0.0-nightly.20200618","11.0.0-nightly.20200619"],"85.0.4179.0":["11.0.0-nightly.20200701","11.0.0-nightly.20200702","11.0.0-nightly.20200703","11.0.0-nightly.20200706","11.0.0-nightly.20200707","11.0.0-nightly.20200708","11.0.0-nightly.20200709"],"86.0.4203.0":["11.0.0-nightly.20200716","11.0.0-nightly.20200717","11.0.0-nightly.20200720","11.0.0-nightly.20200721"],"86.0.4209.0":["11.0.0-nightly.20200723","11.0.0-nightly.20200724","11.0.0-nightly.20200729","11.0.0-nightly.20200730","11.0.0-nightly.20200731","11.0.0-nightly.20200803","11.0.0-nightly.20200804","11.0.0-nightly.20200805","11.0.0-nightly.20200811","11.0.0-nightly.20200812"],"87.0.4280.60":["11.0.0","11.0.1"],"87.0.4280.67":["11.0.2","11.0.3","11.0.4"],"87.0.4280.88":["11.0.5","11.1.0","11.1.1"],"87.0.4280.141":["11.2.0","11.2.1","11.2.2","11.2.3","11.3.0","11.4.0","11.4.1","11.4.2","11.4.3","11.4.4","11.4.5","11.4.6","11.4.7","11.4.8","11.4.9","11.4.10","11.4.11","11.4.12","11.5.0"],"89.0.4328.0":["12.0.0-beta.1","12.0.0-beta.3","12.0.0-beta.4","12.0.0-beta.5","12.0.0-beta.6","12.0.0-beta.7","12.0.0-beta.8","12.0.0-beta.9","12.0.0-beta.10","12.0.0-beta.11","12.0.0-beta.12","12.0.0-beta.14","13.0.0-nightly.20201119","13.0.0-nightly.20201123","13.0.0-nightly.20201124","13.0.0-nightly.20201126","13.0.0-nightly.20201127","13.0.0-nightly.20201130","13.0.0-nightly.20201201","13.0.0-nightly.20201202","13.0.0-nightly.20201203","13.0.0-nightly.20201204","13.0.0-nightly.20201207","13.0.0-nightly.20201208","13.0.0-nightly.20201209","13.0.0-nightly.20201210","13.0.0-nightly.20201211","13.0.0-nightly.20201214"],"89.0.4348.1":["12.0.0-beta.16","12.0.0-beta.18","12.0.0-beta.19","12.0.0-beta.20"],"89.0.4388.2":["12.0.0-beta.21","12.0.0-beta.22","12.0.0-beta.23","12.0.0-beta.24","12.0.0-beta.25","12.0.0-beta.26"],"89.0.4389.23":["12.0.0-beta.27","12.0.0-beta.28","12.0.0-beta.29"],"89.0.4389.58":["12.0.0-beta.30","12.0.0-beta.31"],"87.0.4268.0":["12.0.0-nightly.20201002","12.0.0-nightly.20201007","12.0.0-nightly.20201009","12.0.0-nightly.20201012","12.0.0-nightly.20201013","12.0.0-nightly.20201014","12.0.0-nightly.20201015"],"88.0.4292.0":["12.0.0-nightly.20201023","12.0.0-nightly.20201026"],"88.0.4306.0":["12.0.0-nightly.20201030","12.0.0-nightly.20201102","12.0.0-nightly.20201103","12.0.0-nightly.20201104","12.0.0-nightly.20201105","12.0.0-nightly.20201106","12.0.0-nightly.20201111","12.0.0-nightly.20201112"],"88.0.4324.0":["12.0.0-nightly.20201116"],"89.0.4389.69":["12.0.0"],"89.0.4389.82":["12.0.1"],"89.0.4389.90":["12.0.2"],"89.0.4389.114":["12.0.3","12.0.4"],"89.0.4389.128":["12.0.5","12.0.6","12.0.7","12.0.8","12.0.9","12.0.10","12.0.11","12.0.12","12.0.13","12.0.14","12.0.15","12.0.16","12.0.17","12.0.18","12.1.0","12.1.1","12.1.2","12.2.0","12.2.1","12.2.2","12.2.3"],"90.0.4402.0":["13.0.0-beta.2","13.0.0-beta.3","13.0.0-nightly.20210210","13.0.0-nightly.20210211","13.0.0-nightly.20210212","13.0.0-nightly.20210216","13.0.0-nightly.20210217","13.0.0-nightly.20210218","13.0.0-nightly.20210219","13.0.0-nightly.20210222","13.0.0-nightly.20210225","13.0.0-nightly.20210226","13.0.0-nightly.20210301","13.0.0-nightly.20210302","13.0.0-nightly.20210303","14.0.0-nightly.20210304"],"90.0.4415.0":["13.0.0-beta.4","13.0.0-beta.5","13.0.0-beta.6","13.0.0-beta.7","13.0.0-beta.8","13.0.0-beta.9","13.0.0-beta.10","13.0.0-beta.11","13.0.0-beta.12","13.0.0-beta.13","14.0.0-nightly.20210305","14.0.0-nightly.20210308","14.0.0-nightly.20210309","14.0.0-nightly.20210311","14.0.0-nightly.20210315","14.0.0-nightly.20210316","14.0.0-nightly.20210317","14.0.0-nightly.20210318","14.0.0-nightly.20210319","14.0.0-nightly.20210323","14.0.0-nightly.20210324","14.0.0-nightly.20210325","14.0.0-nightly.20210326","14.0.0-nightly.20210329","14.0.0-nightly.20210330"],"91.0.4448.0":["13.0.0-beta.14","13.0.0-beta.16","13.0.0-beta.17","13.0.0-beta.18","13.0.0-beta.20","14.0.0-nightly.20210331","14.0.0-nightly.20210401","14.0.0-nightly.20210402","14.0.0-nightly.20210406","14.0.0-nightly.20210407","14.0.0-nightly.20210408","14.0.0-nightly.20210409","14.0.0-nightly.20210413"],"91.0.4472.33":["13.0.0-beta.21","13.0.0-beta.22","13.0.0-beta.23"],"91.0.4472.38":["13.0.0-beta.24","13.0.0-beta.25","13.0.0-beta.26","13.0.0-beta.27","13.0.0-beta.28"],"89.0.4349.0":["13.0.0-nightly.20201215","13.0.0-nightly.20201216","13.0.0-nightly.20201221","13.0.0-nightly.20201222"],"89.0.4359.0":["13.0.0-nightly.20201223","13.0.0-nightly.20210104","13.0.0-nightly.20210108","13.0.0-nightly.20210111"],"89.0.4386.0":["13.0.0-nightly.20210113","13.0.0-nightly.20210114","13.0.0-nightly.20210118","13.0.0-nightly.20210122","13.0.0-nightly.20210125"],"89.0.4389.0":["13.0.0-nightly.20210127","13.0.0-nightly.20210128","13.0.0-nightly.20210129","13.0.0-nightly.20210201","13.0.0-nightly.20210202","13.0.0-nightly.20210203","13.0.0-nightly.20210205","13.0.0-nightly.20210208","13.0.0-nightly.20210209"],"91.0.4472.69":["13.0.0","13.0.1"],"91.0.4472.77":["13.1.0","13.1.1","13.1.2"],"91.0.4472.106":["13.1.3","13.1.4"],"91.0.4472.124":["13.1.5","13.1.6","13.1.7"],"91.0.4472.164":["13.1.8","13.1.9","13.2.0","13.2.1","13.2.2","13.2.3","13.3.0","13.4.0","13.5.0","13.5.1","13.5.2","13.6.0","13.6.1","13.6.2","13.6.3","13.6.6","13.6.7","13.6.8","13.6.9"],"92.0.4511.0":["14.0.0-beta.1","14.0.0-beta.2","14.0.0-beta.3","14.0.0-nightly.20210520","14.0.0-nightly.20210523","14.0.0-nightly.20210524","15.0.0-nightly.20210527","15.0.0-nightly.20210528","15.0.0-nightly.20210531","15.0.0-nightly.20210601","15.0.0-nightly.20210602"],"93.0.4536.0":["14.0.0-beta.5","14.0.0-beta.6","14.0.0-beta.7","14.0.0-beta.8","15.0.0-nightly.20210609","15.0.0-nightly.20210610","15.0.0-nightly.20210611","15.0.0-nightly.20210614","15.0.0-nightly.20210615","15.0.0-nightly.20210616"],"93.0.4539.0":["14.0.0-beta.9","14.0.0-beta.10","15.0.0-nightly.20210617","15.0.0-nightly.20210618","15.0.0-nightly.20210621","15.0.0-nightly.20210622"],"93.0.4557.4":["14.0.0-beta.11","14.0.0-beta.12"],"93.0.4566.0":["14.0.0-beta.13","14.0.0-beta.14","14.0.0-beta.15","14.0.0-beta.16","14.0.0-beta.17","15.0.0-alpha.1","15.0.0-alpha.2","15.0.0-nightly.20210706","15.0.0-nightly.20210707","15.0.0-nightly.20210708","15.0.0-nightly.20210709","15.0.0-nightly.20210712","15.0.0-nightly.20210713","15.0.0-nightly.20210714","15.0.0-nightly.20210715","15.0.0-nightly.20210716","15.0.0-nightly.20210719","15.0.0-nightly.20210720","15.0.0-nightly.20210721","16.0.0-nightly.20210722","16.0.0-nightly.20210723","16.0.0-nightly.20210726"],"93.0.4577.15":["14.0.0-beta.18","14.0.0-beta.19","14.0.0-beta.20","14.0.0-beta.21"],"93.0.4577.25":["14.0.0-beta.22","14.0.0-beta.23"],"93.0.4577.51":["14.0.0-beta.24","14.0.0-beta.25"],"92.0.4475.0":["14.0.0-nightly.20210426","14.0.0-nightly.20210427"],"92.0.4488.0":["14.0.0-nightly.20210430","14.0.0-nightly.20210503"],"92.0.4496.0":["14.0.0-nightly.20210505"],"92.0.4498.0":["14.0.0-nightly.20210506"],"92.0.4499.0":["14.0.0-nightly.20210507","14.0.0-nightly.20210510","14.0.0-nightly.20210511","14.0.0-nightly.20210512","14.0.0-nightly.20210513"],"92.0.4505.0":["14.0.0-nightly.20210514","14.0.0-nightly.20210517","14.0.0-nightly.20210518","14.0.0-nightly.20210519"],"93.0.4577.58":["14.0.0"],"93.0.4577.63":["14.0.1"],"93.0.4577.82":["14.0.2","14.1.0","14.1.1","14.2.0","14.2.1","14.2.2","14.2.3","14.2.4","14.2.5","14.2.6","14.2.7","14.2.8","14.2.9"],"94.0.4584.0":["15.0.0-alpha.3","15.0.0-alpha.4","15.0.0-alpha.5","15.0.0-alpha.6","16.0.0-nightly.20210727","16.0.0-nightly.20210728","16.0.0-nightly.20210729","16.0.0-nightly.20210730","16.0.0-nightly.20210802","16.0.0-nightly.20210803","16.0.0-nightly.20210804","16.0.0-nightly.20210805","16.0.0-nightly.20210806","16.0.0-nightly.20210809","16.0.0-nightly.20210810","16.0.0-nightly.20210811"],"94.0.4590.2":["15.0.0-alpha.7","15.0.0-alpha.8","15.0.0-alpha.9","16.0.0-nightly.20210812","16.0.0-nightly.20210813","16.0.0-nightly.20210816","16.0.0-nightly.20210817","16.0.0-nightly.20210818","16.0.0-nightly.20210819","16.0.0-nightly.20210820","16.0.0-nightly.20210823"],"94.0.4606.12":["15.0.0-alpha.10"],"94.0.4606.20":["15.0.0-beta.1","15.0.0-beta.2"],"94.0.4606.31":["15.0.0-beta.3","15.0.0-beta.4","15.0.0-beta.5","15.0.0-beta.6","15.0.0-beta.7"],"93.0.4530.0":["15.0.0-nightly.20210603","15.0.0-nightly.20210604"],"93.0.4535.0":["15.0.0-nightly.20210608"],"93.0.4550.0":["15.0.0-nightly.20210623","15.0.0-nightly.20210624"],"93.0.4552.0":["15.0.0-nightly.20210625","15.0.0-nightly.20210628","15.0.0-nightly.20210629"],"93.0.4558.0":["15.0.0-nightly.20210630","15.0.0-nightly.20210701","15.0.0-nightly.20210702","15.0.0-nightly.20210705"],"94.0.4606.51":["15.0.0"],"94.0.4606.61":["15.1.0","15.1.1"],"94.0.4606.71":["15.1.2"],"94.0.4606.81":["15.2.0","15.3.0","15.3.1","15.3.2","15.3.3","15.3.4","15.3.5","15.3.6","15.3.7","15.4.0","15.4.1","15.4.2","15.5.0","15.5.1","15.5.2","15.5.3","15.5.4","15.5.5","15.5.6","15.5.7"],"95.0.4629.0":["16.0.0-alpha.1","16.0.0-alpha.2","16.0.0-alpha.3","16.0.0-alpha.4","16.0.0-alpha.5","16.0.0-alpha.6","16.0.0-alpha.7","16.0.0-nightly.20210902","16.0.0-nightly.20210903","16.0.0-nightly.20210906","16.0.0-nightly.20210907","16.0.0-nightly.20210908","16.0.0-nightly.20210909","16.0.0-nightly.20210910","16.0.0-nightly.20210913","16.0.0-nightly.20210914","16.0.0-nightly.20210915","16.0.0-nightly.20210916","16.0.0-nightly.20210917","16.0.0-nightly.20210920","16.0.0-nightly.20210921","16.0.0-nightly.20210922","17.0.0-nightly.20210923","17.0.0-nightly.20210924","17.0.0-nightly.20210927","17.0.0-nightly.20210928","17.0.0-nightly.20210929","17.0.0-nightly.20210930","17.0.0-nightly.20211001","17.0.0-nightly.20211004","17.0.0-nightly.20211005"],"96.0.4647.0":["16.0.0-alpha.8","16.0.0-alpha.9","16.0.0-beta.1","16.0.0-beta.2","16.0.0-beta.3","17.0.0-nightly.20211006","17.0.0-nightly.20211007","17.0.0-nightly.20211008","17.0.0-nightly.20211011","17.0.0-nightly.20211012","17.0.0-nightly.20211013","17.0.0-nightly.20211014","17.0.0-nightly.20211015","17.0.0-nightly.20211018","17.0.0-nightly.20211019","17.0.0-nightly.20211020","17.0.0-nightly.20211021"],"96.0.4664.18":["16.0.0-beta.4","16.0.0-beta.5"],"96.0.4664.27":["16.0.0-beta.6","16.0.0-beta.7"],"96.0.4664.35":["16.0.0-beta.8","16.0.0-beta.9"],"95.0.4612.5":["16.0.0-nightly.20210824","16.0.0-nightly.20210825","16.0.0-nightly.20210826","16.0.0-nightly.20210827","16.0.0-nightly.20210830","16.0.0-nightly.20210831","16.0.0-nightly.20210901"],"96.0.4664.45":["16.0.0","16.0.1"],"96.0.4664.55":["16.0.2","16.0.3","16.0.4","16.0.5"],"96.0.4664.110":["16.0.6","16.0.7","16.0.8"],"96.0.4664.174":["16.0.9","16.0.10","16.1.0","16.1.1","16.2.0","16.2.1","16.2.2","16.2.3","16.2.4","16.2.5","16.2.6","16.2.7","16.2.8"],"96.0.4664.4":["17.0.0-alpha.1","17.0.0-alpha.2","17.0.0-alpha.3","17.0.0-nightly.20211022","17.0.0-nightly.20211025","17.0.0-nightly.20211026","17.0.0-nightly.20211027","17.0.0-nightly.20211028","17.0.0-nightly.20211029","17.0.0-nightly.20211101","17.0.0-nightly.20211102","17.0.0-nightly.20211103","17.0.0-nightly.20211104","17.0.0-nightly.20211105","17.0.0-nightly.20211108","17.0.0-nightly.20211109","17.0.0-nightly.20211110","17.0.0-nightly.20211111","17.0.0-nightly.20211112","17.0.0-nightly.20211115","17.0.0-nightly.20211116","17.0.0-nightly.20211117","18.0.0-nightly.20211118","18.0.0-nightly.20211119","18.0.0-nightly.20211122","18.0.0-nightly.20211123"],"98.0.4706.0":["17.0.0-alpha.4","17.0.0-alpha.5","17.0.0-alpha.6","17.0.0-beta.1","17.0.0-beta.2","18.0.0-nightly.20211124","18.0.0-nightly.20211125","18.0.0-nightly.20211126","18.0.0-nightly.20211129","18.0.0-nightly.20211130","18.0.0-nightly.20211201","18.0.0-nightly.20211202","18.0.0-nightly.20211203","18.0.0-nightly.20211206","18.0.0-nightly.20211207","18.0.0-nightly.20211208","18.0.0-nightly.20211209","18.0.0-nightly.20211210","18.0.0-nightly.20211213","18.0.0-nightly.20211214","18.0.0-nightly.20211215","18.0.0-nightly.20211216","18.0.0-nightly.20211217","18.0.0-nightly.20211220","18.0.0-nightly.20211221","18.0.0-nightly.20211222","18.0.0-nightly.20211223","18.0.0-nightly.20211228","18.0.0-nightly.20211229","18.0.0-nightly.20211231","18.0.0-nightly.20220103","18.0.0-nightly.20220104","18.0.0-nightly.20220105","18.0.0-nightly.20220106","18.0.0-nightly.20220107","18.0.0-nightly.20220110"],"98.0.4758.9":["17.0.0-beta.3"],"98.0.4758.11":["17.0.0-beta.4","17.0.0-beta.5","17.0.0-beta.6","17.0.0-beta.7","17.0.0-beta.8","17.0.0-beta.9"],"98.0.4758.74":["17.0.0"],"98.0.4758.82":["17.0.1"],"98.0.4758.102":["17.1.0"],"98.0.4758.109":["17.1.1","17.1.2","17.2.0"],"98.0.4758.141":["17.3.0","17.3.1","17.4.0","17.4.1","17.4.2","17.4.3","17.4.4","17.4.5","17.4.6","17.4.7","17.4.8","17.4.9","17.4.10","17.4.11"],"99.0.4767.0":["18.0.0-alpha.1","18.0.0-alpha.2","18.0.0-alpha.3","18.0.0-alpha.4","18.0.0-alpha.5","18.0.0-nightly.20220111","18.0.0-nightly.20220112","18.0.0-nightly.20220113","18.0.0-nightly.20220114","18.0.0-nightly.20220117","18.0.0-nightly.20220118","18.0.0-nightly.20220119","18.0.0-nightly.20220121","18.0.0-nightly.20220124","18.0.0-nightly.20220125","18.0.0-nightly.20220127","18.0.0-nightly.20220128","18.0.0-nightly.20220131","18.0.0-nightly.20220201","19.0.0-nightly.20220202","19.0.0-nightly.20220203","19.0.0-nightly.20220204","19.0.0-nightly.20220207","19.0.0-nightly.20220208","19.0.0-nightly.20220209"],"100.0.4894.0":["18.0.0-beta.1","18.0.0-beta.2","18.0.0-beta.3","18.0.0-beta.4","18.0.0-beta.5","18.0.0-beta.6","19.0.0-nightly.20220308","19.0.0-nightly.20220309","19.0.0-nightly.20220310","19.0.0-nightly.20220311","19.0.0-nightly.20220314","19.0.0-nightly.20220315","19.0.0-nightly.20220316","19.0.0-nightly.20220317","19.0.0-nightly.20220318","19.0.0-nightly.20220321","19.0.0-nightly.20220322","19.0.0-nightly.20220323","19.0.0-nightly.20220324"],"100.0.4896.56":["18.0.0"],"100.0.4896.60":["18.0.1","18.0.2"],"100.0.4896.75":["18.0.3","18.0.4"],"100.0.4896.127":["18.1.0"],"100.0.4896.143":["18.2.0","18.2.1","18.2.2","18.2.3"],"100.0.4896.160":["18.2.4","18.3.0","18.3.1","18.3.2","18.3.3","18.3.4","18.3.5","18.3.6","18.3.7","18.3.8","18.3.9","18.3.11","18.3.12","18.3.13","18.3.14","18.3.15"],"102.0.4962.3":["19.0.0-alpha.1","19.0.0-nightly.20220328","19.0.0-nightly.20220329","20.0.0-nightly.20220330"],"102.0.4971.0":["19.0.0-alpha.2","19.0.0-alpha.3","20.0.0-nightly.20220411"],"102.0.4989.0":["19.0.0-alpha.4","19.0.0-alpha.5","20.0.0-nightly.20220414","20.0.0-nightly.20220415","20.0.0-nightly.20220418","20.0.0-nightly.20220419","20.0.0-nightly.20220420","20.0.0-nightly.20220421"],"102.0.4999.0":["19.0.0-beta.1","19.0.0-beta.2","19.0.0-beta.3","20.0.0-nightly.20220425","20.0.0-nightly.20220426","20.0.0-nightly.20220427","20.0.0-nightly.20220428","20.0.0-nightly.20220429","20.0.0-nightly.20220502","20.0.0-nightly.20220503","20.0.0-nightly.20220504","20.0.0-nightly.20220505","20.0.0-nightly.20220506","20.0.0-nightly.20220509","20.0.0-nightly.20220511","20.0.0-nightly.20220512","20.0.0-nightly.20220513","20.0.0-nightly.20220516","20.0.0-nightly.20220517"],"102.0.5005.27":["19.0.0-beta.4"],"102.0.5005.40":["19.0.0-beta.5","19.0.0-beta.6","19.0.0-beta.7"],"102.0.5005.49":["19.0.0-beta.8"],"102.0.4961.0":["19.0.0-nightly.20220325"],"102.0.5005.61":["19.0.0","19.0.1"],"102.0.5005.63":["19.0.2","19.0.3","19.0.4"],"102.0.5005.115":["19.0.5","19.0.6"],"102.0.5005.134":["19.0.7"],"102.0.5005.148":["19.0.8"],"102.0.5005.167":["19.0.9","19.0.10","19.0.11","19.0.12","19.0.13","19.0.14","19.0.15","19.0.16","19.0.17","19.1.0","19.1.1","19.1.2","19.1.3","19.1.4","19.1.5","19.1.6","19.1.7","19.1.8","19.1.9"],"103.0.5044.0":["20.0.0-alpha.1","20.0.0-nightly.20220518","20.0.0-nightly.20220519","20.0.0-nightly.20220520","20.0.0-nightly.20220523","20.0.0-nightly.20220524","21.0.0-nightly.20220526","21.0.0-nightly.20220527","21.0.0-nightly.20220530","21.0.0-nightly.20220531"],"104.0.5073.0":["20.0.0-alpha.2","20.0.0-alpha.3","20.0.0-alpha.4","20.0.0-alpha.5","20.0.0-alpha.6","20.0.0-alpha.7","20.0.0-beta.1","20.0.0-beta.2","20.0.0-beta.3","20.0.0-beta.4","20.0.0-beta.5","20.0.0-beta.6","20.0.0-beta.7","20.0.0-beta.8","21.0.0-nightly.20220602","21.0.0-nightly.20220603","21.0.0-nightly.20220606","21.0.0-nightly.20220607","21.0.0-nightly.20220608","21.0.0-nightly.20220609","21.0.0-nightly.20220610","21.0.0-nightly.20220613","21.0.0-nightly.20220614","21.0.0-nightly.20220615","21.0.0-nightly.20220616","21.0.0-nightly.20220617","21.0.0-nightly.20220620","21.0.0-nightly.20220621","21.0.0-nightly.20220622","21.0.0-nightly.20220623","21.0.0-nightly.20220624","21.0.0-nightly.20220627"],"104.0.5112.39":["20.0.0-beta.9"],"104.0.5112.48":["20.0.0-beta.10","20.0.0-beta.11","20.0.0-beta.12"],"104.0.5112.57":["20.0.0-beta.13"],"104.0.5112.65":["20.0.0"],"104.0.5112.81":["20.0.1","20.0.2","20.0.3"],"104.0.5112.102":["20.1.0","20.1.1"],"104.0.5112.114":["20.1.2","20.1.3","20.1.4"],"104.0.5112.124":["20.2.0","20.3.0","20.3.1","20.3.2","20.3.3","20.3.4","20.3.5","20.3.6","20.3.7","20.3.8","20.3.9","20.3.10","20.3.11","20.3.12"],"105.0.5187.0":["21.0.0-alpha.1","21.0.0-alpha.2","21.0.0-alpha.3","21.0.0-alpha.4","21.0.0-alpha.5","21.0.0-nightly.20220720","21.0.0-nightly.20220721","21.0.0-nightly.20220722","21.0.0-nightly.20220725","21.0.0-nightly.20220726","21.0.0-nightly.20220727","21.0.0-nightly.20220728","21.0.0-nightly.20220801","21.0.0-nightly.20220802","22.0.0-nightly.20220808","22.0.0-nightly.20220809","22.0.0-nightly.20220810","22.0.0-nightly.20220811","22.0.0-nightly.20220812","22.0.0-nightly.20220815","22.0.0-nightly.20220816","22.0.0-nightly.20220817"],"106.0.5216.0":["21.0.0-alpha.6","21.0.0-beta.1","21.0.0-beta.2","21.0.0-beta.3","21.0.0-beta.4","21.0.0-beta.5","22.0.0-nightly.20220822","22.0.0-nightly.20220823","22.0.0-nightly.20220824","22.0.0-nightly.20220825","22.0.0-nightly.20220829","22.0.0-nightly.20220830","22.0.0-nightly.20220831","22.0.0-nightly.20220901","22.0.0-nightly.20220902","22.0.0-nightly.20220905"],"106.0.5249.40":["21.0.0-beta.6","21.0.0-beta.7","21.0.0-beta.8"],"105.0.5129.0":["21.0.0-nightly.20220628","21.0.0-nightly.20220629","21.0.0-nightly.20220630","21.0.0-nightly.20220701","21.0.0-nightly.20220704","21.0.0-nightly.20220705","21.0.0-nightly.20220706","21.0.0-nightly.20220707","21.0.0-nightly.20220708","21.0.0-nightly.20220711","21.0.0-nightly.20220712","21.0.0-nightly.20220713"],"105.0.5173.0":["21.0.0-nightly.20220715","21.0.0-nightly.20220718","21.0.0-nightly.20220719"],"106.0.5249.51":["21.0.0"],"106.0.5249.61":["21.0.1"],"106.0.5249.91":["21.1.0"],"106.0.5249.103":["21.1.1"],"106.0.5249.119":["21.2.0"],"106.0.5249.165":["21.2.1"],"106.0.5249.168":["21.2.2","21.2.3"],"106.0.5249.181":["21.3.0","21.3.1"],"106.0.5249.199":["21.3.3","21.3.4","21.3.5","21.4.0","21.4.1","21.4.2","21.4.3"],"107.0.5286.0":["22.0.0-alpha.1","22.0.0-nightly.20220909","22.0.0-nightly.20220912","22.0.0-nightly.20220913","22.0.0-nightly.20220914","22.0.0-nightly.20220915","22.0.0-nightly.20220916","22.0.0-nightly.20220919","22.0.0-nightly.20220920","22.0.0-nightly.20220921","22.0.0-nightly.20220922","22.0.0-nightly.20220923","22.0.0-nightly.20220926","22.0.0-nightly.20220927","22.0.0-nightly.20220928","23.0.0-nightly.20220929","23.0.0-nightly.20220930","23.0.0-nightly.20221003"],"108.0.5329.0":["22.0.0-alpha.3","22.0.0-alpha.4","22.0.0-alpha.5","22.0.0-alpha.6","23.0.0-nightly.20221004","23.0.0-nightly.20221005","23.0.0-nightly.20221006","23.0.0-nightly.20221007","23.0.0-nightly.20221010","23.0.0-nightly.20221011","23.0.0-nightly.20221012","23.0.0-nightly.20221013","23.0.0-nightly.20221014","23.0.0-nightly.20221017"],"108.0.5355.0":["22.0.0-alpha.7","23.0.0-nightly.20221018","23.0.0-nightly.20221019","23.0.0-nightly.20221020","23.0.0-nightly.20221021","23.0.0-nightly.20221024","23.0.0-nightly.20221026"],"108.0.5359.10":["22.0.0-alpha.8","22.0.0-beta.1","22.0.0-beta.2","22.0.0-beta.3"],"108.0.5359.29":["22.0.0-beta.4"],"108.0.5359.40":["22.0.0-beta.5","22.0.0-beta.6"],"108.0.5359.48":["22.0.0-beta.7","22.0.0-beta.8"],"107.0.5274.0":["22.0.0-nightly.20220908"],"108.0.5359.62":["22.0.0"],"108.0.5359.125":["22.0.1"],"108.0.5359.179":["22.0.2","22.0.3","22.1.0"],"108.0.5359.215":["22.2.0","22.2.1","22.3.0","22.3.1","22.3.2","22.3.3","22.3.4","22.3.5"],"110.0.5415.0":["23.0.0-alpha.1","23.0.0-nightly.20221118","23.0.0-nightly.20221121","23.0.0-nightly.20221122","23.0.0-nightly.20221123","23.0.0-nightly.20221124","23.0.0-nightly.20221125","23.0.0-nightly.20221128","23.0.0-nightly.20221129","23.0.0-nightly.20221130","24.0.0-nightly.20221201","24.0.0-nightly.20221202","24.0.0-nightly.20221205"],"110.0.5451.0":["23.0.0-alpha.2","23.0.0-alpha.3","24.0.0-nightly.20221206","24.0.0-nightly.20221207","24.0.0-nightly.20221208","24.0.0-nightly.20221213","24.0.0-nightly.20221214","24.0.0-nightly.20221215","24.0.0-nightly.20221216"],"110.0.5478.5":["23.0.0-beta.1","23.0.0-beta.2","23.0.0-beta.3"],"110.0.5481.30":["23.0.0-beta.4"],"110.0.5481.38":["23.0.0-beta.5"],"110.0.5481.52":["23.0.0-beta.6","23.0.0-beta.8"],"109.0.5382.0":["23.0.0-nightly.20221027","23.0.0-nightly.20221028","23.0.0-nightly.20221031","23.0.0-nightly.20221101","23.0.0-nightly.20221102","23.0.0-nightly.20221103","23.0.0-nightly.20221104","23.0.0-nightly.20221107","23.0.0-nightly.20221108","23.0.0-nightly.20221109","23.0.0-nightly.20221110","23.0.0-nightly.20221111","23.0.0-nightly.20221114","23.0.0-nightly.20221115","23.0.0-nightly.20221116","23.0.0-nightly.20221117"],"110.0.5481.77":["23.0.0"],"110.0.5481.100":["23.1.0"],"110.0.5481.104":["23.1.1"],"110.0.5481.177":["23.1.2"],"110.0.5481.179":["23.1.3"],"110.0.5481.192":["23.1.4","23.2.0"],"110.0.5481.208":["23.2.1"],"111.0.5560.0":["24.0.0-alpha.1","24.0.0-alpha.2","24.0.0-alpha.3","24.0.0-alpha.4","24.0.0-alpha.5","24.0.0-alpha.6","24.0.0-alpha.7","24.0.0-nightly.20230203","24.0.0-nightly.20230206","24.0.0-nightly.20230207","24.0.0-nightly.20230208","24.0.0-nightly.20230209","25.0.0-nightly.20230210","25.0.0-nightly.20230214","25.0.0-nightly.20230215","25.0.0-nightly.20230216","25.0.0-nightly.20230217","25.0.0-nightly.20230220","25.0.0-nightly.20230221","25.0.0-nightly.20230222","25.0.0-nightly.20230223","25.0.0-nightly.20230224","25.0.0-nightly.20230227","25.0.0-nightly.20230228","25.0.0-nightly.20230301","25.0.0-nightly.20230302","25.0.0-nightly.20230303","25.0.0-nightly.20230306","25.0.0-nightly.20230307","25.0.0-nightly.20230308","25.0.0-nightly.20230309","25.0.0-nightly.20230310"],"111.0.5563.50":["24.0.0-beta.1","24.0.0-beta.2"],"112.0.5615.20":["24.0.0-beta.3","24.0.0-beta.4"],"112.0.5615.29":["24.0.0-beta.5"],"112.0.5615.39":["24.0.0-beta.6","24.0.0-beta.7"],"111.0.5518.0":["24.0.0-nightly.20230109","24.0.0-nightly.20230110","24.0.0-nightly.20230111","24.0.0-nightly.20230112","24.0.0-nightly.20230113","24.0.0-nightly.20230116","24.0.0-nightly.20230117","24.0.0-nightly.20230118","24.0.0-nightly.20230119","24.0.0-nightly.20230120","24.0.0-nightly.20230123","24.0.0-nightly.20230124","24.0.0-nightly.20230125","24.0.0-nightly.20230126","24.0.0-nightly.20230127","24.0.0-nightly.20230131","24.0.0-nightly.20230201","24.0.0-nightly.20230202"],"113.0.5636.0":["25.0.0-nightly.20230314"],"113.0.5651.0":["25.0.0-nightly.20230315"],"113.0.5653.0":["25.0.0-nightly.20230317"],"113.0.5660.0":["25.0.0-nightly.20230320"],"113.0.5664.0":["25.0.0-nightly.20230321"],"113.0.5666.0":["25.0.0-nightly.20230322"],"113.0.5668.0":["25.0.0-nightly.20230323"],"113.0.5670.0":["25.0.0-nightly.20230324","25.0.0-nightly.20230327","25.0.0-nightly.20230328","25.0.0-nightly.20230329","25.0.0-nightly.20230330"]}
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js
    index 188383e49db234..747748d71fddc0 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.js
    @@ -1608,6 +1608,7 @@ module.exports = {
     	"21.4.0": "106.0.5249.199",
     	"21.4.1": "106.0.5249.199",
     	"21.4.2": "106.0.5249.199",
    +	"21.4.3": "106.0.5249.199",
     	"22.0.0-alpha.1": "107.0.5286.0",
     	"22.0.0-alpha.3": "108.0.5329.0",
     	"22.0.0-alpha.4": "108.0.5329.0",
    @@ -1666,6 +1667,9 @@ module.exports = {
     	"22.3.0": "108.0.5359.215",
     	"22.3.1": "108.0.5359.215",
     	"22.3.2": "108.0.5359.215",
    +	"22.3.3": "108.0.5359.215",
    +	"22.3.4": "108.0.5359.215",
    +	"22.3.5": "108.0.5359.215",
     	"23.0.0-alpha.1": "110.0.5415.0",
     	"23.0.0-alpha.2": "110.0.5451.0",
     	"23.0.0-alpha.3": "110.0.5451.0",
    @@ -1725,6 +1729,9 @@ module.exports = {
     	"23.1.1": "110.0.5481.104",
     	"23.1.2": "110.0.5481.177",
     	"23.1.3": "110.0.5481.179",
    +	"23.1.4": "110.0.5481.192",
    +	"23.2.0": "110.0.5481.192",
    +	"23.2.1": "110.0.5481.208",
     	"24.0.0-alpha.1": "111.0.5560.0",
     	"24.0.0-alpha.2": "111.0.5560.0",
     	"24.0.0-alpha.3": "111.0.5560.0",
    @@ -1734,6 +1741,11 @@ module.exports = {
     	"24.0.0-alpha.7": "111.0.5560.0",
     	"24.0.0-beta.1": "111.0.5563.50",
     	"24.0.0-beta.2": "111.0.5563.50",
    +	"24.0.0-beta.3": "112.0.5615.20",
    +	"24.0.0-beta.4": "112.0.5615.20",
    +	"24.0.0-beta.5": "112.0.5615.29",
    +	"24.0.0-beta.6": "112.0.5615.39",
    +	"24.0.0-beta.7": "112.0.5615.39",
     	"24.0.0-nightly.20221201": "110.0.5415.0",
     	"24.0.0-nightly.20221202": "110.0.5415.0",
     	"24.0.0-nightly.20221205": "110.0.5415.0",
    @@ -1786,5 +1798,17 @@ module.exports = {
     	"25.0.0-nightly.20230307": "111.0.5560.0",
     	"25.0.0-nightly.20230308": "111.0.5560.0",
     	"25.0.0-nightly.20230309": "111.0.5560.0",
    -	"25.0.0-nightly.20230310": "111.0.5560.0"
    +	"25.0.0-nightly.20230310": "111.0.5560.0",
    +	"25.0.0-nightly.20230314": "113.0.5636.0",
    +	"25.0.0-nightly.20230315": "113.0.5651.0",
    +	"25.0.0-nightly.20230317": "113.0.5653.0",
    +	"25.0.0-nightly.20230320": "113.0.5660.0",
    +	"25.0.0-nightly.20230321": "113.0.5664.0",
    +	"25.0.0-nightly.20230322": "113.0.5666.0",
    +	"25.0.0-nightly.20230323": "113.0.5668.0",
    +	"25.0.0-nightly.20230324": "113.0.5670.0",
    +	"25.0.0-nightly.20230327": "113.0.5670.0",
    +	"25.0.0-nightly.20230328": "113.0.5670.0",
    +	"25.0.0-nightly.20230329": "113.0.5670.0",
    +	"25.0.0-nightly.20230330": "113.0.5670.0"
     };
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json
    index 518bd5bf1e3c29..593cf9401bba9d 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/full-versions.json
    @@ -1 +1 @@
    -{"0.20.0":"39.0.2171.65","0.20.1":"39.0.2171.65","0.20.2":"39.0.2171.65","0.20.3":"39.0.2171.65","0.20.4":"39.0.2171.65","0.20.5":"39.0.2171.65","0.20.6":"39.0.2171.65","0.20.7":"39.0.2171.65","0.20.8":"39.0.2171.65","0.21.0":"40.0.2214.91","0.21.1":"40.0.2214.91","0.21.2":"40.0.2214.91","0.21.3":"41.0.2272.76","0.22.1":"41.0.2272.76","0.22.2":"41.0.2272.76","0.22.3":"41.0.2272.76","0.23.0":"41.0.2272.76","0.24.0":"41.0.2272.76","0.25.0":"42.0.2311.107","0.25.1":"42.0.2311.107","0.25.2":"42.0.2311.107","0.25.3":"42.0.2311.107","0.26.0":"42.0.2311.107","0.26.1":"42.0.2311.107","0.27.0":"42.0.2311.107","0.27.1":"42.0.2311.107","0.27.2":"43.0.2357.65","0.27.3":"43.0.2357.65","0.28.0":"43.0.2357.65","0.28.1":"43.0.2357.65","0.28.2":"43.0.2357.65","0.28.3":"43.0.2357.65","0.29.1":"43.0.2357.65","0.29.2":"43.0.2357.65","0.30.4":"44.0.2403.125","0.31.0":"44.0.2403.125","0.31.2":"45.0.2454.85","0.32.2":"45.0.2454.85","0.32.3":"45.0.2454.85","0.33.0":"45.0.2454.85","0.33.1":"45.0.2454.85","0.33.2":"45.0.2454.85","0.33.3":"45.0.2454.85","0.33.4":"45.0.2454.85","0.33.6":"45.0.2454.85","0.33.7":"45.0.2454.85","0.33.8":"45.0.2454.85","0.33.9":"45.0.2454.85","0.34.0":"45.0.2454.85","0.34.1":"45.0.2454.85","0.34.2":"45.0.2454.85","0.34.3":"45.0.2454.85","0.34.4":"45.0.2454.85","0.35.1":"45.0.2454.85","0.35.2":"45.0.2454.85","0.35.3":"45.0.2454.85","0.35.4":"45.0.2454.85","0.35.5":"45.0.2454.85","0.36.0":"47.0.2526.73","0.36.2":"47.0.2526.73","0.36.3":"47.0.2526.73","0.36.4":"47.0.2526.73","0.36.5":"47.0.2526.110","0.36.6":"47.0.2526.110","0.36.7":"47.0.2526.110","0.36.8":"47.0.2526.110","0.36.9":"47.0.2526.110","0.36.10":"47.0.2526.110","0.36.11":"47.0.2526.110","0.36.12":"47.0.2526.110","0.37.0":"49.0.2623.75","0.37.1":"49.0.2623.75","0.37.3":"49.0.2623.75","0.37.4":"49.0.2623.75","0.37.5":"49.0.2623.75","0.37.6":"49.0.2623.75","0.37.7":"49.0.2623.75","0.37.8":"49.0.2623.75","1.0.0":"49.0.2623.75","1.0.1":"49.0.2623.75","1.0.2":"49.0.2623.75","1.1.0":"50.0.2661.102","1.1.1":"50.0.2661.102","1.1.2":"50.0.2661.102","1.1.3":"50.0.2661.102","1.2.0":"51.0.2704.63","1.2.1":"51.0.2704.63","1.2.2":"51.0.2704.84","1.2.3":"51.0.2704.84","1.2.4":"51.0.2704.103","1.2.5":"51.0.2704.103","1.2.6":"51.0.2704.106","1.2.7":"51.0.2704.106","1.2.8":"51.0.2704.106","1.3.0":"52.0.2743.82","1.3.1":"52.0.2743.82","1.3.2":"52.0.2743.82","1.3.3":"52.0.2743.82","1.3.4":"52.0.2743.82","1.3.5":"52.0.2743.82","1.3.6":"52.0.2743.82","1.3.7":"52.0.2743.82","1.3.9":"52.0.2743.82","1.3.10":"52.0.2743.82","1.3.13":"52.0.2743.82","1.3.14":"52.0.2743.82","1.3.15":"52.0.2743.82","1.4.0":"53.0.2785.113","1.4.1":"53.0.2785.113","1.4.2":"53.0.2785.113","1.4.3":"53.0.2785.113","1.4.4":"53.0.2785.113","1.4.5":"53.0.2785.113","1.4.6":"53.0.2785.143","1.4.7":"53.0.2785.143","1.4.8":"53.0.2785.143","1.4.10":"53.0.2785.143","1.4.11":"53.0.2785.143","1.4.12":"54.0.2840.51","1.4.13":"53.0.2785.143","1.4.14":"53.0.2785.143","1.4.15":"53.0.2785.143","1.4.16":"53.0.2785.143","1.5.0":"54.0.2840.101","1.5.1":"54.0.2840.101","1.6.0":"56.0.2924.87","1.6.1":"56.0.2924.87","1.6.2":"56.0.2924.87","1.6.3":"56.0.2924.87","1.6.4":"56.0.2924.87","1.6.5":"56.0.2924.87","1.6.6":"56.0.2924.87","1.6.7":"56.0.2924.87","1.6.8":"56.0.2924.87","1.6.9":"56.0.2924.87","1.6.10":"56.0.2924.87","1.6.11":"56.0.2924.87","1.6.12":"56.0.2924.87","1.6.13":"56.0.2924.87","1.6.14":"56.0.2924.87","1.6.15":"56.0.2924.87","1.6.16":"56.0.2924.87","1.6.17":"56.0.2924.87","1.6.18":"56.0.2924.87","1.7.0":"58.0.3029.110","1.7.1":"58.0.3029.110","1.7.2":"58.0.3029.110","1.7.3":"58.0.3029.110","1.7.4":"58.0.3029.110","1.7.5":"58.0.3029.110","1.7.6":"58.0.3029.110","1.7.7":"58.0.3029.110","1.7.8":"58.0.3029.110","1.7.9":"58.0.3029.110","1.7.10":"58.0.3029.110","1.7.11":"58.0.3029.110","1.7.12":"58.0.3029.110","1.7.13":"58.0.3029.110","1.7.14":"58.0.3029.110","1.7.15":"58.0.3029.110","1.7.16":"58.0.3029.110","1.8.0":"59.0.3071.115","1.8.1":"59.0.3071.115","1.8.2-beta.1":"59.0.3071.115","1.8.2-beta.2":"59.0.3071.115","1.8.2-beta.3":"59.0.3071.115","1.8.2-beta.4":"59.0.3071.115","1.8.2-beta.5":"59.0.3071.115","1.8.2":"59.0.3071.115","1.8.3":"59.0.3071.115","1.8.4":"59.0.3071.115","1.8.5":"59.0.3071.115","1.8.6":"59.0.3071.115","1.8.7":"59.0.3071.115","1.8.8":"59.0.3071.115","2.0.0-beta.1":"61.0.3163.100","2.0.0-beta.2":"61.0.3163.100","2.0.0-beta.3":"61.0.3163.100","2.0.0-beta.4":"61.0.3163.100","2.0.0-beta.5":"61.0.3163.100","2.0.0-beta.6":"61.0.3163.100","2.0.0-beta.7":"61.0.3163.100","2.0.0-beta.8":"61.0.3163.100","2.0.0":"61.0.3163.100","2.0.1":"61.0.3163.100","2.0.2":"61.0.3163.100","2.0.3":"61.0.3163.100","2.0.4":"61.0.3163.100","2.0.5":"61.0.3163.100","2.0.6":"61.0.3163.100","2.0.7":"61.0.3163.100","2.0.8-nightly.20180819":"61.0.3163.100","2.0.8-nightly.20180820":"61.0.3163.100","2.0.8":"61.0.3163.100","2.0.9":"61.0.3163.100","2.0.10":"61.0.3163.100","2.0.11":"61.0.3163.100","2.0.12":"61.0.3163.100","2.0.13":"61.0.3163.100","2.0.14":"61.0.3163.100","2.0.15":"61.0.3163.100","2.0.16":"61.0.3163.100","2.0.17":"61.0.3163.100","2.0.18":"61.0.3163.100","2.1.0-unsupported.20180809":"61.0.3163.100","3.0.0-beta.1":"66.0.3359.181","3.0.0-beta.2":"66.0.3359.181","3.0.0-beta.3":"66.0.3359.181","3.0.0-beta.4":"66.0.3359.181","3.0.0-beta.5":"66.0.3359.181","3.0.0-beta.6":"66.0.3359.181","3.0.0-beta.7":"66.0.3359.181","3.0.0-beta.8":"66.0.3359.181","3.0.0-beta.9":"66.0.3359.181","3.0.0-beta.10":"66.0.3359.181","3.0.0-beta.11":"66.0.3359.181","3.0.0-beta.12":"66.0.3359.181","3.0.0-beta.13":"66.0.3359.181","3.0.0-nightly.20180818":"66.0.3359.181","3.0.0-nightly.20180821":"66.0.3359.181","3.0.0-nightly.20180823":"66.0.3359.181","3.0.0-nightly.20180904":"66.0.3359.181","3.0.0":"66.0.3359.181","3.0.1":"66.0.3359.181","3.0.2":"66.0.3359.181","3.0.3":"66.0.3359.181","3.0.4":"66.0.3359.181","3.0.5":"66.0.3359.181","3.0.6":"66.0.3359.181","3.0.7":"66.0.3359.181","3.0.8":"66.0.3359.181","3.0.9":"66.0.3359.181","3.0.10":"66.0.3359.181","3.0.11":"66.0.3359.181","3.0.12":"66.0.3359.181","3.0.13":"66.0.3359.181","3.0.14":"66.0.3359.181","3.0.15":"66.0.3359.181","3.0.16":"66.0.3359.181","3.1.0-beta.1":"66.0.3359.181","3.1.0-beta.2":"66.0.3359.181","3.1.0-beta.3":"66.0.3359.181","3.1.0-beta.4":"66.0.3359.181","3.1.0-beta.5":"66.0.3359.181","3.1.0":"66.0.3359.181","3.1.1":"66.0.3359.181","3.1.2":"66.0.3359.181","3.1.3":"66.0.3359.181","3.1.4":"66.0.3359.181","3.1.5":"66.0.3359.181","3.1.6":"66.0.3359.181","3.1.7":"66.0.3359.181","3.1.8":"66.0.3359.181","3.1.9":"66.0.3359.181","3.1.10":"66.0.3359.181","3.1.11":"66.0.3359.181","3.1.12":"66.0.3359.181","3.1.13":"66.0.3359.181","4.0.0-beta.1":"69.0.3497.106","4.0.0-beta.2":"69.0.3497.106","4.0.0-beta.3":"69.0.3497.106","4.0.0-beta.4":"69.0.3497.106","4.0.0-beta.5":"69.0.3497.106","4.0.0-beta.6":"69.0.3497.106","4.0.0-beta.7":"69.0.3497.106","4.0.0-beta.8":"69.0.3497.106","4.0.0-beta.9":"69.0.3497.106","4.0.0-beta.10":"69.0.3497.106","4.0.0-beta.11":"69.0.3497.106","4.0.0-nightly.20180817":"66.0.3359.181","4.0.0-nightly.20180819":"66.0.3359.181","4.0.0-nightly.20180821":"66.0.3359.181","4.0.0-nightly.20180929":"67.0.3396.99","4.0.0-nightly.20181006":"68.0.3440.128","4.0.0-nightly.20181010":"69.0.3497.106","4.0.0":"69.0.3497.106","4.0.1":"69.0.3497.106","4.0.2":"69.0.3497.106","4.0.3":"69.0.3497.106","4.0.4":"69.0.3497.106","4.0.5":"69.0.3497.106","4.0.6":"69.0.3497.106","4.0.7":"69.0.3497.128","4.0.8":"69.0.3497.128","4.1.0":"69.0.3497.128","4.1.1":"69.0.3497.128","4.1.2":"69.0.3497.128","4.1.3":"69.0.3497.128","4.1.4":"69.0.3497.128","4.1.5":"69.0.3497.128","4.2.0":"69.0.3497.128","4.2.1":"69.0.3497.128","4.2.2":"69.0.3497.128","4.2.3":"69.0.3497.128","4.2.4":"69.0.3497.128","4.2.5":"69.0.3497.128","4.2.6":"69.0.3497.128","4.2.7":"69.0.3497.128","4.2.8":"69.0.3497.128","4.2.9":"69.0.3497.128","4.2.10":"69.0.3497.128","4.2.11":"69.0.3497.128","4.2.12":"69.0.3497.128","5.0.0-beta.1":"72.0.3626.52","5.0.0-beta.2":"72.0.3626.52","5.0.0-beta.3":"73.0.3683.27","5.0.0-beta.4":"73.0.3683.54","5.0.0-beta.5":"73.0.3683.61","5.0.0-beta.6":"73.0.3683.84","5.0.0-beta.7":"73.0.3683.94","5.0.0-beta.8":"73.0.3683.104","5.0.0-beta.9":"73.0.3683.117","5.0.0-nightly.20190107":"70.0.3538.110","5.0.0-nightly.20190121":"71.0.3578.98","5.0.0-nightly.20190122":"71.0.3578.98","5.0.0":"73.0.3683.119","5.0.1":"73.0.3683.121","5.0.2":"73.0.3683.121","5.0.3":"73.0.3683.121","5.0.4":"73.0.3683.121","5.0.5":"73.0.3683.121","5.0.6":"73.0.3683.121","5.0.7":"73.0.3683.121","5.0.8":"73.0.3683.121","5.0.9":"73.0.3683.121","5.0.10":"73.0.3683.121","5.0.11":"73.0.3683.121","5.0.12":"73.0.3683.121","5.0.13":"73.0.3683.121","6.0.0-beta.1":"76.0.3774.1","6.0.0-beta.2":"76.0.3783.1","6.0.0-beta.3":"76.0.3783.1","6.0.0-beta.4":"76.0.3783.1","6.0.0-beta.5":"76.0.3805.4","6.0.0-beta.6":"76.0.3809.3","6.0.0-beta.7":"76.0.3809.22","6.0.0-beta.8":"76.0.3809.26","6.0.0-beta.9":"76.0.3809.26","6.0.0-beta.10":"76.0.3809.37","6.0.0-beta.11":"76.0.3809.42","6.0.0-beta.12":"76.0.3809.54","6.0.0-beta.13":"76.0.3809.60","6.0.0-beta.14":"76.0.3809.68","6.0.0-beta.15":"76.0.3809.74","6.0.0-nightly.20190123":"72.0.3626.52","6.0.0-nightly.20190212":"72.0.3626.107","6.0.0-nightly.20190213":"72.0.3626.110","6.0.0-nightly.20190311":"74.0.3724.8","6.0.0":"76.0.3809.88","6.0.1":"76.0.3809.102","6.0.2":"76.0.3809.110","6.0.3":"76.0.3809.126","6.0.4":"76.0.3809.131","6.0.5":"76.0.3809.136","6.0.6":"76.0.3809.138","6.0.7":"76.0.3809.139","6.0.8":"76.0.3809.146","6.0.9":"76.0.3809.146","6.0.10":"76.0.3809.146","6.0.11":"76.0.3809.146","6.0.12":"76.0.3809.146","6.1.0":"76.0.3809.146","6.1.1":"76.0.3809.146","6.1.2":"76.0.3809.146","6.1.3":"76.0.3809.146","6.1.4":"76.0.3809.146","6.1.5":"76.0.3809.146","6.1.6":"76.0.3809.146","6.1.7":"76.0.3809.146","6.1.8":"76.0.3809.146","6.1.9":"76.0.3809.146","6.1.10":"76.0.3809.146","6.1.11":"76.0.3809.146","6.1.12":"76.0.3809.146","7.0.0-beta.1":"78.0.3866.0","7.0.0-beta.2":"78.0.3866.0","7.0.0-beta.3":"78.0.3866.0","7.0.0-beta.4":"78.0.3896.6","7.0.0-beta.5":"78.0.3905.1","7.0.0-beta.6":"78.0.3905.1","7.0.0-beta.7":"78.0.3905.1","7.0.0-nightly.20190521":"76.0.3784.0","7.0.0-nightly.20190529":"76.0.3806.0","7.0.0-nightly.20190530":"76.0.3806.0","7.0.0-nightly.20190531":"76.0.3806.0","7.0.0-nightly.20190602":"76.0.3806.0","7.0.0-nightly.20190603":"76.0.3806.0","7.0.0-nightly.20190604":"77.0.3814.0","7.0.0-nightly.20190605":"77.0.3815.0","7.0.0-nightly.20190606":"77.0.3815.0","7.0.0-nightly.20190607":"77.0.3815.0","7.0.0-nightly.20190608":"77.0.3815.0","7.0.0-nightly.20190609":"77.0.3815.0","7.0.0-nightly.20190611":"77.0.3815.0","7.0.0-nightly.20190612":"77.0.3815.0","7.0.0-nightly.20190613":"77.0.3815.0","7.0.0-nightly.20190615":"77.0.3815.0","7.0.0-nightly.20190616":"77.0.3815.0","7.0.0-nightly.20190618":"77.0.3815.0","7.0.0-nightly.20190619":"77.0.3815.0","7.0.0-nightly.20190622":"77.0.3815.0","7.0.0-nightly.20190623":"77.0.3815.0","7.0.0-nightly.20190624":"77.0.3815.0","7.0.0-nightly.20190627":"77.0.3815.0","7.0.0-nightly.20190629":"77.0.3815.0","7.0.0-nightly.20190630":"77.0.3815.0","7.0.0-nightly.20190701":"77.0.3815.0","7.0.0-nightly.20190702":"77.0.3815.0","7.0.0-nightly.20190704":"77.0.3843.0","7.0.0-nightly.20190705":"77.0.3843.0","7.0.0-nightly.20190719":"77.0.3848.0","7.0.0-nightly.20190720":"77.0.3848.0","7.0.0-nightly.20190721":"77.0.3848.0","7.0.0-nightly.20190726":"77.0.3864.0","7.0.0-nightly.20190727":"78.0.3866.0","7.0.0-nightly.20190728":"78.0.3866.0","7.0.0-nightly.20190729":"78.0.3866.0","7.0.0-nightly.20190730":"78.0.3866.0","7.0.0-nightly.20190731":"78.0.3866.0","7.0.0":"78.0.3905.1","7.0.1":"78.0.3904.92","7.1.0":"78.0.3904.94","7.1.1":"78.0.3904.99","7.1.2":"78.0.3904.113","7.1.3":"78.0.3904.126","7.1.4":"78.0.3904.130","7.1.5":"78.0.3904.130","7.1.6":"78.0.3904.130","7.1.7":"78.0.3904.130","7.1.8":"78.0.3904.130","7.1.9":"78.0.3904.130","7.1.10":"78.0.3904.130","7.1.11":"78.0.3904.130","7.1.12":"78.0.3904.130","7.1.13":"78.0.3904.130","7.1.14":"78.0.3904.130","7.2.0":"78.0.3904.130","7.2.1":"78.0.3904.130","7.2.2":"78.0.3904.130","7.2.3":"78.0.3904.130","7.2.4":"78.0.3904.130","7.3.0":"78.0.3904.130","7.3.1":"78.0.3904.130","7.3.2":"78.0.3904.130","7.3.3":"78.0.3904.130","8.0.0-beta.1":"79.0.3931.0","8.0.0-beta.2":"79.0.3931.0","8.0.0-beta.3":"80.0.3955.0","8.0.0-beta.4":"80.0.3955.0","8.0.0-beta.5":"80.0.3987.14","8.0.0-beta.6":"80.0.3987.51","8.0.0-beta.7":"80.0.3987.59","8.0.0-beta.8":"80.0.3987.75","8.0.0-beta.9":"80.0.3987.75","8.0.0-nightly.20190801":"78.0.3866.0","8.0.0-nightly.20190802":"78.0.3866.0","8.0.0-nightly.20190803":"78.0.3871.0","8.0.0-nightly.20190806":"78.0.3871.0","8.0.0-nightly.20190807":"78.0.3871.0","8.0.0-nightly.20190808":"78.0.3871.0","8.0.0-nightly.20190809":"78.0.3871.0","8.0.0-nightly.20190810":"78.0.3871.0","8.0.0-nightly.20190811":"78.0.3871.0","8.0.0-nightly.20190812":"78.0.3871.0","8.0.0-nightly.20190813":"78.0.3871.0","8.0.0-nightly.20190814":"78.0.3871.0","8.0.0-nightly.20190815":"78.0.3871.0","8.0.0-nightly.20190816":"78.0.3881.0","8.0.0-nightly.20190817":"78.0.3881.0","8.0.0-nightly.20190818":"78.0.3881.0","8.0.0-nightly.20190819":"78.0.3881.0","8.0.0-nightly.20190820":"78.0.3881.0","8.0.0-nightly.20190824":"78.0.3892.0","8.0.0-nightly.20190825":"78.0.3892.0","8.0.0-nightly.20190827":"78.0.3892.0","8.0.0-nightly.20190828":"78.0.3892.0","8.0.0-nightly.20190830":"78.0.3892.0","8.0.0-nightly.20190901":"78.0.3892.0","8.0.0-nightly.20190902":"78.0.3892.0","8.0.0-nightly.20190907":"78.0.3892.0","8.0.0-nightly.20190909":"78.0.3892.0","8.0.0-nightly.20190910":"78.0.3892.0","8.0.0-nightly.20190911":"78.0.3892.0","8.0.0-nightly.20190912":"78.0.3892.0","8.0.0-nightly.20190913":"78.0.3892.0","8.0.0-nightly.20190914":"78.0.3892.0","8.0.0-nightly.20190915":"78.0.3892.0","8.0.0-nightly.20190917":"78.0.3892.0","8.0.0-nightly.20190919":"79.0.3915.0","8.0.0-nightly.20190920":"79.0.3915.0","8.0.0-nightly.20190922":"79.0.3919.0","8.0.0-nightly.20190923":"79.0.3919.0","8.0.0-nightly.20190924":"79.0.3919.0","8.0.0-nightly.20190926":"79.0.3919.0","8.0.0-nightly.20190928":"79.0.3919.0","8.0.0-nightly.20190929":"79.0.3919.0","8.0.0-nightly.20190930":"79.0.3919.0","8.0.0-nightly.20191001":"79.0.3919.0","8.0.0-nightly.20191004":"79.0.3919.0","8.0.0-nightly.20191005":"79.0.3919.0","8.0.0-nightly.20191006":"79.0.3919.0","8.0.0-nightly.20191009":"79.0.3919.0","8.0.0-nightly.20191011":"79.0.3919.0","8.0.0-nightly.20191012":"79.0.3919.0","8.0.0-nightly.20191017":"79.0.3919.0","8.0.0-nightly.20191019":"79.0.3931.0","8.0.0-nightly.20191020":"79.0.3931.0","8.0.0-nightly.20191021":"79.0.3931.0","8.0.0-nightly.20191023":"79.0.3931.0","8.0.0-nightly.20191101":"80.0.3952.0","8.0.0-nightly.20191103":"80.0.3952.0","8.0.0-nightly.20191105":"80.0.3952.0","8.0.0":"80.0.3987.86","8.0.1":"80.0.3987.86","8.0.2":"80.0.3987.86","8.0.3":"80.0.3987.134","8.1.0":"80.0.3987.137","8.1.1":"80.0.3987.141","8.2.0":"80.0.3987.158","8.2.1":"80.0.3987.163","8.2.2":"80.0.3987.163","8.2.3":"80.0.3987.163","8.2.4":"80.0.3987.165","8.2.5":"80.0.3987.165","8.3.0":"80.0.3987.165","8.3.1":"80.0.3987.165","8.3.2":"80.0.3987.165","8.3.3":"80.0.3987.165","8.3.4":"80.0.3987.165","8.4.0":"80.0.3987.165","8.4.1":"80.0.3987.165","8.5.0":"80.0.3987.165","8.5.1":"80.0.3987.165","8.5.2":"80.0.3987.165","8.5.3":"80.0.3987.163","8.5.4":"80.0.3987.163","8.5.5":"80.0.3987.163","9.0.0-beta.1":"82.0.4048.0","9.0.0-beta.2":"82.0.4048.0","9.0.0-beta.3":"82.0.4048.0","9.0.0-beta.4":"82.0.4048.0","9.0.0-beta.5":"82.0.4048.0","9.0.0-beta.6":"82.0.4058.2","9.0.0-beta.7":"82.0.4058.2","9.0.0-beta.9":"82.0.4058.2","9.0.0-beta.10":"82.0.4085.10","9.0.0-beta.11":"82.0.4085.14","9.0.0-beta.12":"82.0.4085.14","9.0.0-beta.13":"82.0.4085.14","9.0.0-beta.14":"82.0.4085.27","9.0.0-beta.15":"83.0.4102.3","9.0.0-beta.16":"83.0.4102.3","9.0.0-beta.17":"83.0.4103.14","9.0.0-beta.18":"83.0.4103.16","9.0.0-beta.19":"83.0.4103.24","9.0.0-beta.20":"83.0.4103.26","9.0.0-beta.21":"83.0.4103.26","9.0.0-beta.22":"83.0.4103.34","9.0.0-beta.23":"83.0.4103.44","9.0.0-beta.24":"83.0.4103.45","9.0.0-nightly.20191121":"80.0.3954.0","9.0.0-nightly.20191122":"80.0.3954.0","9.0.0-nightly.20191123":"80.0.3954.0","9.0.0-nightly.20191124":"80.0.3954.0","9.0.0-nightly.20191126":"80.0.3954.0","9.0.0-nightly.20191128":"80.0.3954.0","9.0.0-nightly.20191129":"80.0.3954.0","9.0.0-nightly.20191130":"80.0.3954.0","9.0.0-nightly.20191201":"80.0.3954.0","9.0.0-nightly.20191202":"80.0.3954.0","9.0.0-nightly.20191203":"80.0.3954.0","9.0.0-nightly.20191204":"80.0.3954.0","9.0.0-nightly.20191205":"80.0.3954.0","9.0.0-nightly.20191210":"80.0.3954.0","9.0.0-nightly.20191220":"81.0.3994.0","9.0.0-nightly.20191221":"81.0.3994.0","9.0.0-nightly.20191222":"81.0.3994.0","9.0.0-nightly.20191223":"81.0.3994.0","9.0.0-nightly.20191224":"81.0.3994.0","9.0.0-nightly.20191225":"81.0.3994.0","9.0.0-nightly.20191226":"81.0.3994.0","9.0.0-nightly.20191228":"81.0.3994.0","9.0.0-nightly.20191229":"81.0.3994.0","9.0.0-nightly.20191230":"81.0.3994.0","9.0.0-nightly.20191231":"81.0.3994.0","9.0.0-nightly.20200101":"81.0.3994.0","9.0.0-nightly.20200103":"81.0.3994.0","9.0.0-nightly.20200104":"81.0.3994.0","9.0.0-nightly.20200105":"81.0.3994.0","9.0.0-nightly.20200106":"81.0.3994.0","9.0.0-nightly.20200108":"81.0.3994.0","9.0.0-nightly.20200109":"81.0.3994.0","9.0.0-nightly.20200110":"81.0.3994.0","9.0.0-nightly.20200111":"81.0.3994.0","9.0.0-nightly.20200113":"81.0.3994.0","9.0.0-nightly.20200115":"81.0.3994.0","9.0.0-nightly.20200116":"81.0.3994.0","9.0.0-nightly.20200117":"81.0.3994.0","9.0.0-nightly.20200119":"81.0.4030.0","9.0.0-nightly.20200121":"81.0.4030.0","9.0.0":"83.0.4103.64","9.0.1":"83.0.4103.94","9.0.2":"83.0.4103.94","9.0.3":"83.0.4103.100","9.0.4":"83.0.4103.104","9.0.5":"83.0.4103.119","9.1.0":"83.0.4103.122","9.1.1":"83.0.4103.122","9.1.2":"83.0.4103.122","9.2.0":"83.0.4103.122","9.2.1":"83.0.4103.122","9.3.0":"83.0.4103.122","9.3.1":"83.0.4103.122","9.3.2":"83.0.4103.122","9.3.3":"83.0.4103.122","9.3.4":"83.0.4103.122","9.3.5":"83.0.4103.122","9.4.0":"83.0.4103.122","9.4.1":"83.0.4103.122","9.4.2":"83.0.4103.122","9.4.3":"83.0.4103.122","9.4.4":"83.0.4103.122","10.0.0-beta.1":"84.0.4129.0","10.0.0-beta.2":"84.0.4129.0","10.0.0-beta.3":"85.0.4161.2","10.0.0-beta.4":"85.0.4161.2","10.0.0-beta.8":"85.0.4181.1","10.0.0-beta.9":"85.0.4181.1","10.0.0-beta.10":"85.0.4183.19","10.0.0-beta.11":"85.0.4183.20","10.0.0-beta.12":"85.0.4183.26","10.0.0-beta.13":"85.0.4183.39","10.0.0-beta.14":"85.0.4183.39","10.0.0-beta.15":"85.0.4183.39","10.0.0-beta.17":"85.0.4183.39","10.0.0-beta.19":"85.0.4183.39","10.0.0-beta.20":"85.0.4183.39","10.0.0-beta.21":"85.0.4183.39","10.0.0-beta.23":"85.0.4183.70","10.0.0-beta.24":"85.0.4183.78","10.0.0-beta.25":"85.0.4183.80","10.0.0-nightly.20200209":"82.0.4050.0","10.0.0-nightly.20200210":"82.0.4050.0","10.0.0-nightly.20200211":"82.0.4050.0","10.0.0-nightly.20200216":"82.0.4050.0","10.0.0-nightly.20200217":"82.0.4050.0","10.0.0-nightly.20200218":"82.0.4050.0","10.0.0-nightly.20200221":"82.0.4050.0","10.0.0-nightly.20200222":"82.0.4050.0","10.0.0-nightly.20200223":"82.0.4050.0","10.0.0-nightly.20200226":"82.0.4050.0","10.0.0-nightly.20200303":"82.0.4050.0","10.0.0-nightly.20200304":"82.0.4076.0","10.0.0-nightly.20200305":"82.0.4076.0","10.0.0-nightly.20200306":"82.0.4076.0","10.0.0-nightly.20200309":"82.0.4076.0","10.0.0-nightly.20200310":"82.0.4076.0","10.0.0-nightly.20200311":"82.0.4083.0","10.0.0-nightly.20200316":"83.0.4086.0","10.0.0-nightly.20200317":"83.0.4087.0","10.0.0-nightly.20200318":"83.0.4087.0","10.0.0-nightly.20200320":"83.0.4087.0","10.0.0-nightly.20200323":"83.0.4087.0","10.0.0-nightly.20200324":"83.0.4087.0","10.0.0-nightly.20200325":"83.0.4087.0","10.0.0-nightly.20200326":"83.0.4087.0","10.0.0-nightly.20200327":"83.0.4087.0","10.0.0-nightly.20200330":"83.0.4087.0","10.0.0-nightly.20200331":"83.0.4087.0","10.0.0-nightly.20200401":"83.0.4087.0","10.0.0-nightly.20200402":"83.0.4087.0","10.0.0-nightly.20200403":"83.0.4087.0","10.0.0-nightly.20200406":"83.0.4087.0","10.0.0-nightly.20200408":"83.0.4095.0","10.0.0-nightly.20200410":"83.0.4095.0","10.0.0-nightly.20200413":"83.0.4095.0","10.0.0-nightly.20200414":"84.0.4114.0","10.0.0-nightly.20200415":"84.0.4115.0","10.0.0-nightly.20200416":"84.0.4115.0","10.0.0-nightly.20200417":"84.0.4115.0","10.0.0-nightly.20200422":"84.0.4121.0","10.0.0-nightly.20200423":"84.0.4121.0","10.0.0-nightly.20200427":"84.0.4125.0","10.0.0-nightly.20200428":"84.0.4125.0","10.0.0-nightly.20200429":"84.0.4125.0","10.0.0-nightly.20200430":"84.0.4125.0","10.0.0-nightly.20200501":"84.0.4129.0","10.0.0-nightly.20200504":"84.0.4129.0","10.0.0-nightly.20200505":"84.0.4129.0","10.0.0-nightly.20200506":"84.0.4129.0","10.0.0-nightly.20200507":"84.0.4129.0","10.0.0-nightly.20200508":"84.0.4129.0","10.0.0-nightly.20200511":"84.0.4129.0","10.0.0-nightly.20200512":"84.0.4129.0","10.0.0-nightly.20200513":"84.0.4129.0","10.0.0-nightly.20200514":"84.0.4129.0","10.0.0-nightly.20200515":"84.0.4129.0","10.0.0-nightly.20200518":"84.0.4129.0","10.0.0-nightly.20200519":"84.0.4129.0","10.0.0-nightly.20200520":"84.0.4129.0","10.0.0-nightly.20200521":"84.0.4129.0","10.0.0":"85.0.4183.84","10.0.1":"85.0.4183.86","10.1.0":"85.0.4183.87","10.1.1":"85.0.4183.93","10.1.2":"85.0.4183.98","10.1.3":"85.0.4183.121","10.1.4":"85.0.4183.121","10.1.5":"85.0.4183.121","10.1.6":"85.0.4183.121","10.1.7":"85.0.4183.121","10.2.0":"85.0.4183.121","10.3.0":"85.0.4183.121","10.3.1":"85.0.4183.121","10.3.2":"85.0.4183.121","10.4.0":"85.0.4183.121","10.4.1":"85.0.4183.121","10.4.2":"85.0.4183.121","10.4.3":"85.0.4183.121","10.4.4":"85.0.4183.121","10.4.5":"85.0.4183.121","10.4.6":"85.0.4183.121","10.4.7":"85.0.4183.121","11.0.0-beta.1":"86.0.4234.0","11.0.0-beta.3":"86.0.4234.0","11.0.0-beta.4":"86.0.4234.0","11.0.0-beta.5":"86.0.4234.0","11.0.0-beta.6":"86.0.4234.0","11.0.0-beta.7":"86.0.4234.0","11.0.0-beta.8":"87.0.4251.1","11.0.0-beta.9":"87.0.4251.1","11.0.0-beta.11":"87.0.4251.1","11.0.0-beta.12":"87.0.4280.11","11.0.0-beta.13":"87.0.4280.11","11.0.0-beta.16":"87.0.4280.27","11.0.0-beta.17":"87.0.4280.27","11.0.0-beta.18":"87.0.4280.27","11.0.0-beta.19":"87.0.4280.27","11.0.0-beta.20":"87.0.4280.40","11.0.0-beta.22":"87.0.4280.47","11.0.0-beta.23":"87.0.4280.47","11.0.0-nightly.20200525":"84.0.4129.0","11.0.0-nightly.20200526":"84.0.4129.0","11.0.0-nightly.20200529":"85.0.4156.0","11.0.0-nightly.20200602":"85.0.4162.0","11.0.0-nightly.20200603":"85.0.4162.0","11.0.0-nightly.20200604":"85.0.4162.0","11.0.0-nightly.20200609":"85.0.4162.0","11.0.0-nightly.20200610":"85.0.4162.0","11.0.0-nightly.20200611":"85.0.4162.0","11.0.0-nightly.20200615":"85.0.4162.0","11.0.0-nightly.20200616":"85.0.4162.0","11.0.0-nightly.20200617":"85.0.4162.0","11.0.0-nightly.20200618":"85.0.4162.0","11.0.0-nightly.20200619":"85.0.4162.0","11.0.0-nightly.20200701":"85.0.4179.0","11.0.0-nightly.20200702":"85.0.4179.0","11.0.0-nightly.20200703":"85.0.4179.0","11.0.0-nightly.20200706":"85.0.4179.0","11.0.0-nightly.20200707":"85.0.4179.0","11.0.0-nightly.20200708":"85.0.4179.0","11.0.0-nightly.20200709":"85.0.4179.0","11.0.0-nightly.20200716":"86.0.4203.0","11.0.0-nightly.20200717":"86.0.4203.0","11.0.0-nightly.20200720":"86.0.4203.0","11.0.0-nightly.20200721":"86.0.4203.0","11.0.0-nightly.20200723":"86.0.4209.0","11.0.0-nightly.20200724":"86.0.4209.0","11.0.0-nightly.20200729":"86.0.4209.0","11.0.0-nightly.20200730":"86.0.4209.0","11.0.0-nightly.20200731":"86.0.4209.0","11.0.0-nightly.20200803":"86.0.4209.0","11.0.0-nightly.20200804":"86.0.4209.0","11.0.0-nightly.20200805":"86.0.4209.0","11.0.0-nightly.20200811":"86.0.4209.0","11.0.0-nightly.20200812":"86.0.4209.0","11.0.0-nightly.20200822":"86.0.4234.0","11.0.0-nightly.20200824":"86.0.4234.0","11.0.0-nightly.20200825":"86.0.4234.0","11.0.0-nightly.20200826":"86.0.4234.0","11.0.0":"87.0.4280.60","11.0.1":"87.0.4280.60","11.0.2":"87.0.4280.67","11.0.3":"87.0.4280.67","11.0.4":"87.0.4280.67","11.0.5":"87.0.4280.88","11.1.0":"87.0.4280.88","11.1.1":"87.0.4280.88","11.2.0":"87.0.4280.141","11.2.1":"87.0.4280.141","11.2.2":"87.0.4280.141","11.2.3":"87.0.4280.141","11.3.0":"87.0.4280.141","11.4.0":"87.0.4280.141","11.4.1":"87.0.4280.141","11.4.2":"87.0.4280.141","11.4.3":"87.0.4280.141","11.4.4":"87.0.4280.141","11.4.5":"87.0.4280.141","11.4.6":"87.0.4280.141","11.4.7":"87.0.4280.141","11.4.8":"87.0.4280.141","11.4.9":"87.0.4280.141","11.4.10":"87.0.4280.141","11.4.11":"87.0.4280.141","11.4.12":"87.0.4280.141","11.5.0":"87.0.4280.141","12.0.0-beta.1":"89.0.4328.0","12.0.0-beta.3":"89.0.4328.0","12.0.0-beta.4":"89.0.4328.0","12.0.0-beta.5":"89.0.4328.0","12.0.0-beta.6":"89.0.4328.0","12.0.0-beta.7":"89.0.4328.0","12.0.0-beta.8":"89.0.4328.0","12.0.0-beta.9":"89.0.4328.0","12.0.0-beta.10":"89.0.4328.0","12.0.0-beta.11":"89.0.4328.0","12.0.0-beta.12":"89.0.4328.0","12.0.0-beta.14":"89.0.4328.0","12.0.0-beta.16":"89.0.4348.1","12.0.0-beta.18":"89.0.4348.1","12.0.0-beta.19":"89.0.4348.1","12.0.0-beta.20":"89.0.4348.1","12.0.0-beta.21":"89.0.4388.2","12.0.0-beta.22":"89.0.4388.2","12.0.0-beta.23":"89.0.4388.2","12.0.0-beta.24":"89.0.4388.2","12.0.0-beta.25":"89.0.4388.2","12.0.0-beta.26":"89.0.4388.2","12.0.0-beta.27":"89.0.4389.23","12.0.0-beta.28":"89.0.4389.23","12.0.0-beta.29":"89.0.4389.23","12.0.0-beta.30":"89.0.4389.58","12.0.0-beta.31":"89.0.4389.58","12.0.0-nightly.20200827":"86.0.4234.0","12.0.0-nightly.20200831":"86.0.4234.0","12.0.0-nightly.20200902":"86.0.4234.0","12.0.0-nightly.20200903":"86.0.4234.0","12.0.0-nightly.20200907":"86.0.4234.0","12.0.0-nightly.20200910":"86.0.4234.0","12.0.0-nightly.20200911":"86.0.4234.0","12.0.0-nightly.20200914":"86.0.4234.0","12.0.0-nightly.20201002":"87.0.4268.0","12.0.0-nightly.20201007":"87.0.4268.0","12.0.0-nightly.20201009":"87.0.4268.0","12.0.0-nightly.20201012":"87.0.4268.0","12.0.0-nightly.20201013":"87.0.4268.0","12.0.0-nightly.20201014":"87.0.4268.0","12.0.0-nightly.20201015":"87.0.4268.0","12.0.0-nightly.20201023":"88.0.4292.0","12.0.0-nightly.20201026":"88.0.4292.0","12.0.0-nightly.20201030":"88.0.4306.0","12.0.0-nightly.20201102":"88.0.4306.0","12.0.0-nightly.20201103":"88.0.4306.0","12.0.0-nightly.20201104":"88.0.4306.0","12.0.0-nightly.20201105":"88.0.4306.0","12.0.0-nightly.20201106":"88.0.4306.0","12.0.0-nightly.20201111":"88.0.4306.0","12.0.0-nightly.20201112":"88.0.4306.0","12.0.0-nightly.20201116":"88.0.4324.0","12.0.0":"89.0.4389.69","12.0.1":"89.0.4389.82","12.0.2":"89.0.4389.90","12.0.3":"89.0.4389.114","12.0.4":"89.0.4389.114","12.0.5":"89.0.4389.128","12.0.6":"89.0.4389.128","12.0.7":"89.0.4389.128","12.0.8":"89.0.4389.128","12.0.9":"89.0.4389.128","12.0.10":"89.0.4389.128","12.0.11":"89.0.4389.128","12.0.12":"89.0.4389.128","12.0.13":"89.0.4389.128","12.0.14":"89.0.4389.128","12.0.15":"89.0.4389.128","12.0.16":"89.0.4389.128","12.0.17":"89.0.4389.128","12.0.18":"89.0.4389.128","12.1.0":"89.0.4389.128","12.1.1":"89.0.4389.128","12.1.2":"89.0.4389.128","12.2.0":"89.0.4389.128","12.2.1":"89.0.4389.128","12.2.2":"89.0.4389.128","12.2.3":"89.0.4389.128","13.0.0-beta.2":"90.0.4402.0","13.0.0-beta.3":"90.0.4402.0","13.0.0-beta.4":"90.0.4415.0","13.0.0-beta.5":"90.0.4415.0","13.0.0-beta.6":"90.0.4415.0","13.0.0-beta.7":"90.0.4415.0","13.0.0-beta.8":"90.0.4415.0","13.0.0-beta.9":"90.0.4415.0","13.0.0-beta.10":"90.0.4415.0","13.0.0-beta.11":"90.0.4415.0","13.0.0-beta.12":"90.0.4415.0","13.0.0-beta.13":"90.0.4415.0","13.0.0-beta.14":"91.0.4448.0","13.0.0-beta.16":"91.0.4448.0","13.0.0-beta.17":"91.0.4448.0","13.0.0-beta.18":"91.0.4448.0","13.0.0-beta.20":"91.0.4448.0","13.0.0-beta.21":"91.0.4472.33","13.0.0-beta.22":"91.0.4472.33","13.0.0-beta.23":"91.0.4472.33","13.0.0-beta.24":"91.0.4472.38","13.0.0-beta.25":"91.0.4472.38","13.0.0-beta.26":"91.0.4472.38","13.0.0-beta.27":"91.0.4472.38","13.0.0-beta.28":"91.0.4472.38","13.0.0-nightly.20201119":"89.0.4328.0","13.0.0-nightly.20201123":"89.0.4328.0","13.0.0-nightly.20201124":"89.0.4328.0","13.0.0-nightly.20201126":"89.0.4328.0","13.0.0-nightly.20201127":"89.0.4328.0","13.0.0-nightly.20201130":"89.0.4328.0","13.0.0-nightly.20201201":"89.0.4328.0","13.0.0-nightly.20201202":"89.0.4328.0","13.0.0-nightly.20201203":"89.0.4328.0","13.0.0-nightly.20201204":"89.0.4328.0","13.0.0-nightly.20201207":"89.0.4328.0","13.0.0-nightly.20201208":"89.0.4328.0","13.0.0-nightly.20201209":"89.0.4328.0","13.0.0-nightly.20201210":"89.0.4328.0","13.0.0-nightly.20201211":"89.0.4328.0","13.0.0-nightly.20201214":"89.0.4328.0","13.0.0-nightly.20201215":"89.0.4349.0","13.0.0-nightly.20201216":"89.0.4349.0","13.0.0-nightly.20201221":"89.0.4349.0","13.0.0-nightly.20201222":"89.0.4349.0","13.0.0-nightly.20201223":"89.0.4359.0","13.0.0-nightly.20210104":"89.0.4359.0","13.0.0-nightly.20210108":"89.0.4359.0","13.0.0-nightly.20210111":"89.0.4359.0","13.0.0-nightly.20210113":"89.0.4386.0","13.0.0-nightly.20210114":"89.0.4386.0","13.0.0-nightly.20210118":"89.0.4386.0","13.0.0-nightly.20210122":"89.0.4386.0","13.0.0-nightly.20210125":"89.0.4386.0","13.0.0-nightly.20210127":"89.0.4389.0","13.0.0-nightly.20210128":"89.0.4389.0","13.0.0-nightly.20210129":"89.0.4389.0","13.0.0-nightly.20210201":"89.0.4389.0","13.0.0-nightly.20210202":"89.0.4389.0","13.0.0-nightly.20210203":"89.0.4389.0","13.0.0-nightly.20210205":"89.0.4389.0","13.0.0-nightly.20210208":"89.0.4389.0","13.0.0-nightly.20210209":"89.0.4389.0","13.0.0-nightly.20210210":"90.0.4402.0","13.0.0-nightly.20210211":"90.0.4402.0","13.0.0-nightly.20210212":"90.0.4402.0","13.0.0-nightly.20210216":"90.0.4402.0","13.0.0-nightly.20210217":"90.0.4402.0","13.0.0-nightly.20210218":"90.0.4402.0","13.0.0-nightly.20210219":"90.0.4402.0","13.0.0-nightly.20210222":"90.0.4402.0","13.0.0-nightly.20210225":"90.0.4402.0","13.0.0-nightly.20210226":"90.0.4402.0","13.0.0-nightly.20210301":"90.0.4402.0","13.0.0-nightly.20210302":"90.0.4402.0","13.0.0-nightly.20210303":"90.0.4402.0","13.0.0":"91.0.4472.69","13.0.1":"91.0.4472.69","13.1.0":"91.0.4472.77","13.1.1":"91.0.4472.77","13.1.2":"91.0.4472.77","13.1.3":"91.0.4472.106","13.1.4":"91.0.4472.106","13.1.5":"91.0.4472.124","13.1.6":"91.0.4472.124","13.1.7":"91.0.4472.124","13.1.8":"91.0.4472.164","13.1.9":"91.0.4472.164","13.2.0":"91.0.4472.164","13.2.1":"91.0.4472.164","13.2.2":"91.0.4472.164","13.2.3":"91.0.4472.164","13.3.0":"91.0.4472.164","13.4.0":"91.0.4472.164","13.5.0":"91.0.4472.164","13.5.1":"91.0.4472.164","13.5.2":"91.0.4472.164","13.6.0":"91.0.4472.164","13.6.1":"91.0.4472.164","13.6.2":"91.0.4472.164","13.6.3":"91.0.4472.164","13.6.6":"91.0.4472.164","13.6.7":"91.0.4472.164","13.6.8":"91.0.4472.164","13.6.9":"91.0.4472.164","14.0.0-beta.1":"92.0.4511.0","14.0.0-beta.2":"92.0.4511.0","14.0.0-beta.3":"92.0.4511.0","14.0.0-beta.5":"93.0.4536.0","14.0.0-beta.6":"93.0.4536.0","14.0.0-beta.7":"93.0.4536.0","14.0.0-beta.8":"93.0.4536.0","14.0.0-beta.9":"93.0.4539.0","14.0.0-beta.10":"93.0.4539.0","14.0.0-beta.11":"93.0.4557.4","14.0.0-beta.12":"93.0.4557.4","14.0.0-beta.13":"93.0.4566.0","14.0.0-beta.14":"93.0.4566.0","14.0.0-beta.15":"93.0.4566.0","14.0.0-beta.16":"93.0.4566.0","14.0.0-beta.17":"93.0.4566.0","14.0.0-beta.18":"93.0.4577.15","14.0.0-beta.19":"93.0.4577.15","14.0.0-beta.20":"93.0.4577.15","14.0.0-beta.21":"93.0.4577.15","14.0.0-beta.22":"93.0.4577.25","14.0.0-beta.23":"93.0.4577.25","14.0.0-beta.24":"93.0.4577.51","14.0.0-beta.25":"93.0.4577.51","14.0.0-nightly.20210304":"90.0.4402.0","14.0.0-nightly.20210305":"90.0.4415.0","14.0.0-nightly.20210308":"90.0.4415.0","14.0.0-nightly.20210309":"90.0.4415.0","14.0.0-nightly.20210311":"90.0.4415.0","14.0.0-nightly.20210315":"90.0.4415.0","14.0.0-nightly.20210316":"90.0.4415.0","14.0.0-nightly.20210317":"90.0.4415.0","14.0.0-nightly.20210318":"90.0.4415.0","14.0.0-nightly.20210319":"90.0.4415.0","14.0.0-nightly.20210323":"90.0.4415.0","14.0.0-nightly.20210324":"90.0.4415.0","14.0.0-nightly.20210325":"90.0.4415.0","14.0.0-nightly.20210326":"90.0.4415.0","14.0.0-nightly.20210329":"90.0.4415.0","14.0.0-nightly.20210330":"90.0.4415.0","14.0.0-nightly.20210331":"91.0.4448.0","14.0.0-nightly.20210401":"91.0.4448.0","14.0.0-nightly.20210402":"91.0.4448.0","14.0.0-nightly.20210406":"91.0.4448.0","14.0.0-nightly.20210407":"91.0.4448.0","14.0.0-nightly.20210408":"91.0.4448.0","14.0.0-nightly.20210409":"91.0.4448.0","14.0.0-nightly.20210413":"91.0.4448.0","14.0.0-nightly.20210426":"92.0.4475.0","14.0.0-nightly.20210427":"92.0.4475.0","14.0.0-nightly.20210430":"92.0.4488.0","14.0.0-nightly.20210503":"92.0.4488.0","14.0.0-nightly.20210505":"92.0.4496.0","14.0.0-nightly.20210506":"92.0.4498.0","14.0.0-nightly.20210507":"92.0.4499.0","14.0.0-nightly.20210510":"92.0.4499.0","14.0.0-nightly.20210511":"92.0.4499.0","14.0.0-nightly.20210512":"92.0.4499.0","14.0.0-nightly.20210513":"92.0.4499.0","14.0.0-nightly.20210514":"92.0.4505.0","14.0.0-nightly.20210517":"92.0.4505.0","14.0.0-nightly.20210518":"92.0.4505.0","14.0.0-nightly.20210519":"92.0.4505.0","14.0.0-nightly.20210520":"92.0.4511.0","14.0.0-nightly.20210523":"92.0.4511.0","14.0.0-nightly.20210524":"92.0.4511.0","14.0.0":"93.0.4577.58","14.0.1":"93.0.4577.63","14.0.2":"93.0.4577.82","14.1.0":"93.0.4577.82","14.1.1":"93.0.4577.82","14.2.0":"93.0.4577.82","14.2.1":"93.0.4577.82","14.2.2":"93.0.4577.82","14.2.3":"93.0.4577.82","14.2.4":"93.0.4577.82","14.2.5":"93.0.4577.82","14.2.6":"93.0.4577.82","14.2.7":"93.0.4577.82","14.2.8":"93.0.4577.82","14.2.9":"93.0.4577.82","15.0.0-alpha.1":"93.0.4566.0","15.0.0-alpha.2":"93.0.4566.0","15.0.0-alpha.3":"94.0.4584.0","15.0.0-alpha.4":"94.0.4584.0","15.0.0-alpha.5":"94.0.4584.0","15.0.0-alpha.6":"94.0.4584.0","15.0.0-alpha.7":"94.0.4590.2","15.0.0-alpha.8":"94.0.4590.2","15.0.0-alpha.9":"94.0.4590.2","15.0.0-alpha.10":"94.0.4606.12","15.0.0-beta.1":"94.0.4606.20","15.0.0-beta.2":"94.0.4606.20","15.0.0-beta.3":"94.0.4606.31","15.0.0-beta.4":"94.0.4606.31","15.0.0-beta.5":"94.0.4606.31","15.0.0-beta.6":"94.0.4606.31","15.0.0-beta.7":"94.0.4606.31","15.0.0-nightly.20210527":"92.0.4511.0","15.0.0-nightly.20210528":"92.0.4511.0","15.0.0-nightly.20210531":"92.0.4511.0","15.0.0-nightly.20210601":"92.0.4511.0","15.0.0-nightly.20210602":"92.0.4511.0","15.0.0-nightly.20210603":"93.0.4530.0","15.0.0-nightly.20210604":"93.0.4530.0","15.0.0-nightly.20210608":"93.0.4535.0","15.0.0-nightly.20210609":"93.0.4536.0","15.0.0-nightly.20210610":"93.0.4536.0","15.0.0-nightly.20210611":"93.0.4536.0","15.0.0-nightly.20210614":"93.0.4536.0","15.0.0-nightly.20210615":"93.0.4536.0","15.0.0-nightly.20210616":"93.0.4536.0","15.0.0-nightly.20210617":"93.0.4539.0","15.0.0-nightly.20210618":"93.0.4539.0","15.0.0-nightly.20210621":"93.0.4539.0","15.0.0-nightly.20210622":"93.0.4539.0","15.0.0-nightly.20210623":"93.0.4550.0","15.0.0-nightly.20210624":"93.0.4550.0","15.0.0-nightly.20210625":"93.0.4552.0","15.0.0-nightly.20210628":"93.0.4552.0","15.0.0-nightly.20210629":"93.0.4552.0","15.0.0-nightly.20210630":"93.0.4558.0","15.0.0-nightly.20210701":"93.0.4558.0","15.0.0-nightly.20210702":"93.0.4558.0","15.0.0-nightly.20210705":"93.0.4558.0","15.0.0-nightly.20210706":"93.0.4566.0","15.0.0-nightly.20210707":"93.0.4566.0","15.0.0-nightly.20210708":"93.0.4566.0","15.0.0-nightly.20210709":"93.0.4566.0","15.0.0-nightly.20210712":"93.0.4566.0","15.0.0-nightly.20210713":"93.0.4566.0","15.0.0-nightly.20210714":"93.0.4566.0","15.0.0-nightly.20210715":"93.0.4566.0","15.0.0-nightly.20210716":"93.0.4566.0","15.0.0-nightly.20210719":"93.0.4566.0","15.0.0-nightly.20210720":"93.0.4566.0","15.0.0-nightly.20210721":"93.0.4566.0","15.0.0":"94.0.4606.51","15.1.0":"94.0.4606.61","15.1.1":"94.0.4606.61","15.1.2":"94.0.4606.71","15.2.0":"94.0.4606.81","15.3.0":"94.0.4606.81","15.3.1":"94.0.4606.81","15.3.2":"94.0.4606.81","15.3.3":"94.0.4606.81","15.3.4":"94.0.4606.81","15.3.5":"94.0.4606.81","15.3.6":"94.0.4606.81","15.3.7":"94.0.4606.81","15.4.0":"94.0.4606.81","15.4.1":"94.0.4606.81","15.4.2":"94.0.4606.81","15.5.0":"94.0.4606.81","15.5.1":"94.0.4606.81","15.5.2":"94.0.4606.81","15.5.3":"94.0.4606.81","15.5.4":"94.0.4606.81","15.5.5":"94.0.4606.81","15.5.6":"94.0.4606.81","15.5.7":"94.0.4606.81","16.0.0-alpha.1":"95.0.4629.0","16.0.0-alpha.2":"95.0.4629.0","16.0.0-alpha.3":"95.0.4629.0","16.0.0-alpha.4":"95.0.4629.0","16.0.0-alpha.5":"95.0.4629.0","16.0.0-alpha.6":"95.0.4629.0","16.0.0-alpha.7":"95.0.4629.0","16.0.0-alpha.8":"96.0.4647.0","16.0.0-alpha.9":"96.0.4647.0","16.0.0-beta.1":"96.0.4647.0","16.0.0-beta.2":"96.0.4647.0","16.0.0-beta.3":"96.0.4647.0","16.0.0-beta.4":"96.0.4664.18","16.0.0-beta.5":"96.0.4664.18","16.0.0-beta.6":"96.0.4664.27","16.0.0-beta.7":"96.0.4664.27","16.0.0-beta.8":"96.0.4664.35","16.0.0-beta.9":"96.0.4664.35","16.0.0-nightly.20210722":"93.0.4566.0","16.0.0-nightly.20210723":"93.0.4566.0","16.0.0-nightly.20210726":"93.0.4566.0","16.0.0-nightly.20210727":"94.0.4584.0","16.0.0-nightly.20210728":"94.0.4584.0","16.0.0-nightly.20210729":"94.0.4584.0","16.0.0-nightly.20210730":"94.0.4584.0","16.0.0-nightly.20210802":"94.0.4584.0","16.0.0-nightly.20210803":"94.0.4584.0","16.0.0-nightly.20210804":"94.0.4584.0","16.0.0-nightly.20210805":"94.0.4584.0","16.0.0-nightly.20210806":"94.0.4584.0","16.0.0-nightly.20210809":"94.0.4584.0","16.0.0-nightly.20210810":"94.0.4584.0","16.0.0-nightly.20210811":"94.0.4584.0","16.0.0-nightly.20210812":"94.0.4590.2","16.0.0-nightly.20210813":"94.0.4590.2","16.0.0-nightly.20210816":"94.0.4590.2","16.0.0-nightly.20210817":"94.0.4590.2","16.0.0-nightly.20210818":"94.0.4590.2","16.0.0-nightly.20210819":"94.0.4590.2","16.0.0-nightly.20210820":"94.0.4590.2","16.0.0-nightly.20210823":"94.0.4590.2","16.0.0-nightly.20210824":"95.0.4612.5","16.0.0-nightly.20210825":"95.0.4612.5","16.0.0-nightly.20210826":"95.0.4612.5","16.0.0-nightly.20210827":"95.0.4612.5","16.0.0-nightly.20210830":"95.0.4612.5","16.0.0-nightly.20210831":"95.0.4612.5","16.0.0-nightly.20210901":"95.0.4612.5","16.0.0-nightly.20210902":"95.0.4629.0","16.0.0-nightly.20210903":"95.0.4629.0","16.0.0-nightly.20210906":"95.0.4629.0","16.0.0-nightly.20210907":"95.0.4629.0","16.0.0-nightly.20210908":"95.0.4629.0","16.0.0-nightly.20210909":"95.0.4629.0","16.0.0-nightly.20210910":"95.0.4629.0","16.0.0-nightly.20210913":"95.0.4629.0","16.0.0-nightly.20210914":"95.0.4629.0","16.0.0-nightly.20210915":"95.0.4629.0","16.0.0-nightly.20210916":"95.0.4629.0","16.0.0-nightly.20210917":"95.0.4629.0","16.0.0-nightly.20210920":"95.0.4629.0","16.0.0-nightly.20210921":"95.0.4629.0","16.0.0-nightly.20210922":"95.0.4629.0","16.0.0":"96.0.4664.45","16.0.1":"96.0.4664.45","16.0.2":"96.0.4664.55","16.0.3":"96.0.4664.55","16.0.4":"96.0.4664.55","16.0.5":"96.0.4664.55","16.0.6":"96.0.4664.110","16.0.7":"96.0.4664.110","16.0.8":"96.0.4664.110","16.0.9":"96.0.4664.174","16.0.10":"96.0.4664.174","16.1.0":"96.0.4664.174","16.1.1":"96.0.4664.174","16.2.0":"96.0.4664.174","16.2.1":"96.0.4664.174","16.2.2":"96.0.4664.174","16.2.3":"96.0.4664.174","16.2.4":"96.0.4664.174","16.2.5":"96.0.4664.174","16.2.6":"96.0.4664.174","16.2.7":"96.0.4664.174","16.2.8":"96.0.4664.174","17.0.0-alpha.1":"96.0.4664.4","17.0.0-alpha.2":"96.0.4664.4","17.0.0-alpha.3":"96.0.4664.4","17.0.0-alpha.4":"98.0.4706.0","17.0.0-alpha.5":"98.0.4706.0","17.0.0-alpha.6":"98.0.4706.0","17.0.0-beta.1":"98.0.4706.0","17.0.0-beta.2":"98.0.4706.0","17.0.0-beta.3":"98.0.4758.9","17.0.0-beta.4":"98.0.4758.11","17.0.0-beta.5":"98.0.4758.11","17.0.0-beta.6":"98.0.4758.11","17.0.0-beta.7":"98.0.4758.11","17.0.0-beta.8":"98.0.4758.11","17.0.0-beta.9":"98.0.4758.11","17.0.0-nightly.20210923":"95.0.4629.0","17.0.0-nightly.20210924":"95.0.4629.0","17.0.0-nightly.20210927":"95.0.4629.0","17.0.0-nightly.20210928":"95.0.4629.0","17.0.0-nightly.20210929":"95.0.4629.0","17.0.0-nightly.20210930":"95.0.4629.0","17.0.0-nightly.20211001":"95.0.4629.0","17.0.0-nightly.20211004":"95.0.4629.0","17.0.0-nightly.20211005":"95.0.4629.0","17.0.0-nightly.20211006":"96.0.4647.0","17.0.0-nightly.20211007":"96.0.4647.0","17.0.0-nightly.20211008":"96.0.4647.0","17.0.0-nightly.20211011":"96.0.4647.0","17.0.0-nightly.20211012":"96.0.4647.0","17.0.0-nightly.20211013":"96.0.4647.0","17.0.0-nightly.20211014":"96.0.4647.0","17.0.0-nightly.20211015":"96.0.4647.0","17.0.0-nightly.20211018":"96.0.4647.0","17.0.0-nightly.20211019":"96.0.4647.0","17.0.0-nightly.20211020":"96.0.4647.0","17.0.0-nightly.20211021":"96.0.4647.0","17.0.0-nightly.20211022":"96.0.4664.4","17.0.0-nightly.20211025":"96.0.4664.4","17.0.0-nightly.20211026":"96.0.4664.4","17.0.0-nightly.20211027":"96.0.4664.4","17.0.0-nightly.20211028":"96.0.4664.4","17.0.0-nightly.20211029":"96.0.4664.4","17.0.0-nightly.20211101":"96.0.4664.4","17.0.0-nightly.20211102":"96.0.4664.4","17.0.0-nightly.20211103":"96.0.4664.4","17.0.0-nightly.20211104":"96.0.4664.4","17.0.0-nightly.20211105":"96.0.4664.4","17.0.0-nightly.20211108":"96.0.4664.4","17.0.0-nightly.20211109":"96.0.4664.4","17.0.0-nightly.20211110":"96.0.4664.4","17.0.0-nightly.20211111":"96.0.4664.4","17.0.0-nightly.20211112":"96.0.4664.4","17.0.0-nightly.20211115":"96.0.4664.4","17.0.0-nightly.20211116":"96.0.4664.4","17.0.0-nightly.20211117":"96.0.4664.4","17.0.0":"98.0.4758.74","17.0.1":"98.0.4758.82","17.1.0":"98.0.4758.102","17.1.1":"98.0.4758.109","17.1.2":"98.0.4758.109","17.2.0":"98.0.4758.109","17.3.0":"98.0.4758.141","17.3.1":"98.0.4758.141","17.4.0":"98.0.4758.141","17.4.1":"98.0.4758.141","17.4.2":"98.0.4758.141","17.4.3":"98.0.4758.141","17.4.4":"98.0.4758.141","17.4.5":"98.0.4758.141","17.4.6":"98.0.4758.141","17.4.7":"98.0.4758.141","17.4.8":"98.0.4758.141","17.4.9":"98.0.4758.141","17.4.10":"98.0.4758.141","17.4.11":"98.0.4758.141","18.0.0-alpha.1":"99.0.4767.0","18.0.0-alpha.2":"99.0.4767.0","18.0.0-alpha.3":"99.0.4767.0","18.0.0-alpha.4":"99.0.4767.0","18.0.0-alpha.5":"99.0.4767.0","18.0.0-beta.1":"100.0.4894.0","18.0.0-beta.2":"100.0.4894.0","18.0.0-beta.3":"100.0.4894.0","18.0.0-beta.4":"100.0.4894.0","18.0.0-beta.5":"100.0.4894.0","18.0.0-beta.6":"100.0.4894.0","18.0.0-nightly.20211118":"96.0.4664.4","18.0.0-nightly.20211119":"96.0.4664.4","18.0.0-nightly.20211122":"96.0.4664.4","18.0.0-nightly.20211123":"96.0.4664.4","18.0.0-nightly.20211124":"98.0.4706.0","18.0.0-nightly.20211125":"98.0.4706.0","18.0.0-nightly.20211126":"98.0.4706.0","18.0.0-nightly.20211129":"98.0.4706.0","18.0.0-nightly.20211130":"98.0.4706.0","18.0.0-nightly.20211201":"98.0.4706.0","18.0.0-nightly.20211202":"98.0.4706.0","18.0.0-nightly.20211203":"98.0.4706.0","18.0.0-nightly.20211206":"98.0.4706.0","18.0.0-nightly.20211207":"98.0.4706.0","18.0.0-nightly.20211208":"98.0.4706.0","18.0.0-nightly.20211209":"98.0.4706.0","18.0.0-nightly.20211210":"98.0.4706.0","18.0.0-nightly.20211213":"98.0.4706.0","18.0.0-nightly.20211214":"98.0.4706.0","18.0.0-nightly.20211215":"98.0.4706.0","18.0.0-nightly.20211216":"98.0.4706.0","18.0.0-nightly.20211217":"98.0.4706.0","18.0.0-nightly.20211220":"98.0.4706.0","18.0.0-nightly.20211221":"98.0.4706.0","18.0.0-nightly.20211222":"98.0.4706.0","18.0.0-nightly.20211223":"98.0.4706.0","18.0.0-nightly.20211228":"98.0.4706.0","18.0.0-nightly.20211229":"98.0.4706.0","18.0.0-nightly.20211231":"98.0.4706.0","18.0.0-nightly.20220103":"98.0.4706.0","18.0.0-nightly.20220104":"98.0.4706.0","18.0.0-nightly.20220105":"98.0.4706.0","18.0.0-nightly.20220106":"98.0.4706.0","18.0.0-nightly.20220107":"98.0.4706.0","18.0.0-nightly.20220110":"98.0.4706.0","18.0.0-nightly.20220111":"99.0.4767.0","18.0.0-nightly.20220112":"99.0.4767.0","18.0.0-nightly.20220113":"99.0.4767.0","18.0.0-nightly.20220114":"99.0.4767.0","18.0.0-nightly.20220117":"99.0.4767.0","18.0.0-nightly.20220118":"99.0.4767.0","18.0.0-nightly.20220119":"99.0.4767.0","18.0.0-nightly.20220121":"99.0.4767.0","18.0.0-nightly.20220124":"99.0.4767.0","18.0.0-nightly.20220125":"99.0.4767.0","18.0.0-nightly.20220127":"99.0.4767.0","18.0.0-nightly.20220128":"99.0.4767.0","18.0.0-nightly.20220131":"99.0.4767.0","18.0.0-nightly.20220201":"99.0.4767.0","18.0.0":"100.0.4896.56","18.0.1":"100.0.4896.60","18.0.2":"100.0.4896.60","18.0.3":"100.0.4896.75","18.0.4":"100.0.4896.75","18.1.0":"100.0.4896.127","18.2.0":"100.0.4896.143","18.2.1":"100.0.4896.143","18.2.2":"100.0.4896.143","18.2.3":"100.0.4896.143","18.2.4":"100.0.4896.160","18.3.0":"100.0.4896.160","18.3.1":"100.0.4896.160","18.3.2":"100.0.4896.160","18.3.3":"100.0.4896.160","18.3.4":"100.0.4896.160","18.3.5":"100.0.4896.160","18.3.6":"100.0.4896.160","18.3.7":"100.0.4896.160","18.3.8":"100.0.4896.160","18.3.9":"100.0.4896.160","18.3.11":"100.0.4896.160","18.3.12":"100.0.4896.160","18.3.13":"100.0.4896.160","18.3.14":"100.0.4896.160","18.3.15":"100.0.4896.160","19.0.0-alpha.1":"102.0.4962.3","19.0.0-alpha.2":"102.0.4971.0","19.0.0-alpha.3":"102.0.4971.0","19.0.0-alpha.4":"102.0.4989.0","19.0.0-alpha.5":"102.0.4989.0","19.0.0-beta.1":"102.0.4999.0","19.0.0-beta.2":"102.0.4999.0","19.0.0-beta.3":"102.0.4999.0","19.0.0-beta.4":"102.0.5005.27","19.0.0-beta.5":"102.0.5005.40","19.0.0-beta.6":"102.0.5005.40","19.0.0-beta.7":"102.0.5005.40","19.0.0-beta.8":"102.0.5005.49","19.0.0-nightly.20220202":"99.0.4767.0","19.0.0-nightly.20220203":"99.0.4767.0","19.0.0-nightly.20220204":"99.0.4767.0","19.0.0-nightly.20220207":"99.0.4767.0","19.0.0-nightly.20220208":"99.0.4767.0","19.0.0-nightly.20220209":"99.0.4767.0","19.0.0-nightly.20220308":"100.0.4894.0","19.0.0-nightly.20220309":"100.0.4894.0","19.0.0-nightly.20220310":"100.0.4894.0","19.0.0-nightly.20220311":"100.0.4894.0","19.0.0-nightly.20220314":"100.0.4894.0","19.0.0-nightly.20220315":"100.0.4894.0","19.0.0-nightly.20220316":"100.0.4894.0","19.0.0-nightly.20220317":"100.0.4894.0","19.0.0-nightly.20220318":"100.0.4894.0","19.0.0-nightly.20220321":"100.0.4894.0","19.0.0-nightly.20220322":"100.0.4894.0","19.0.0-nightly.20220323":"100.0.4894.0","19.0.0-nightly.20220324":"100.0.4894.0","19.0.0-nightly.20220325":"102.0.4961.0","19.0.0-nightly.20220328":"102.0.4962.3","19.0.0-nightly.20220329":"102.0.4962.3","19.0.0":"102.0.5005.61","19.0.1":"102.0.5005.61","19.0.2":"102.0.5005.63","19.0.3":"102.0.5005.63","19.0.4":"102.0.5005.63","19.0.5":"102.0.5005.115","19.0.6":"102.0.5005.115","19.0.7":"102.0.5005.134","19.0.8":"102.0.5005.148","19.0.9":"102.0.5005.167","19.0.10":"102.0.5005.167","19.0.11":"102.0.5005.167","19.0.12":"102.0.5005.167","19.0.13":"102.0.5005.167","19.0.14":"102.0.5005.167","19.0.15":"102.0.5005.167","19.0.16":"102.0.5005.167","19.0.17":"102.0.5005.167","19.1.0":"102.0.5005.167","19.1.1":"102.0.5005.167","19.1.2":"102.0.5005.167","19.1.3":"102.0.5005.167","19.1.4":"102.0.5005.167","19.1.5":"102.0.5005.167","19.1.6":"102.0.5005.167","19.1.7":"102.0.5005.167","19.1.8":"102.0.5005.167","19.1.9":"102.0.5005.167","20.0.0-alpha.1":"103.0.5044.0","20.0.0-alpha.2":"104.0.5073.0","20.0.0-alpha.3":"104.0.5073.0","20.0.0-alpha.4":"104.0.5073.0","20.0.0-alpha.5":"104.0.5073.0","20.0.0-alpha.6":"104.0.5073.0","20.0.0-alpha.7":"104.0.5073.0","20.0.0-beta.1":"104.0.5073.0","20.0.0-beta.2":"104.0.5073.0","20.0.0-beta.3":"104.0.5073.0","20.0.0-beta.4":"104.0.5073.0","20.0.0-beta.5":"104.0.5073.0","20.0.0-beta.6":"104.0.5073.0","20.0.0-beta.7":"104.0.5073.0","20.0.0-beta.8":"104.0.5073.0","20.0.0-beta.9":"104.0.5112.39","20.0.0-beta.10":"104.0.5112.48","20.0.0-beta.11":"104.0.5112.48","20.0.0-beta.12":"104.0.5112.48","20.0.0-beta.13":"104.0.5112.57","20.0.0-nightly.20220330":"102.0.4962.3","20.0.0-nightly.20220411":"102.0.4971.0","20.0.0-nightly.20220414":"102.0.4989.0","20.0.0-nightly.20220415":"102.0.4989.0","20.0.0-nightly.20220418":"102.0.4989.0","20.0.0-nightly.20220419":"102.0.4989.0","20.0.0-nightly.20220420":"102.0.4989.0","20.0.0-nightly.20220421":"102.0.4989.0","20.0.0-nightly.20220425":"102.0.4999.0","20.0.0-nightly.20220426":"102.0.4999.0","20.0.0-nightly.20220427":"102.0.4999.0","20.0.0-nightly.20220428":"102.0.4999.0","20.0.0-nightly.20220429":"102.0.4999.0","20.0.0-nightly.20220502":"102.0.4999.0","20.0.0-nightly.20220503":"102.0.4999.0","20.0.0-nightly.20220504":"102.0.4999.0","20.0.0-nightly.20220505":"102.0.4999.0","20.0.0-nightly.20220506":"102.0.4999.0","20.0.0-nightly.20220509":"102.0.4999.0","20.0.0-nightly.20220511":"102.0.4999.0","20.0.0-nightly.20220512":"102.0.4999.0","20.0.0-nightly.20220513":"102.0.4999.0","20.0.0-nightly.20220516":"102.0.4999.0","20.0.0-nightly.20220517":"102.0.4999.0","20.0.0-nightly.20220518":"103.0.5044.0","20.0.0-nightly.20220519":"103.0.5044.0","20.0.0-nightly.20220520":"103.0.5044.0","20.0.0-nightly.20220523":"103.0.5044.0","20.0.0-nightly.20220524":"103.0.5044.0","20.0.0":"104.0.5112.65","20.0.1":"104.0.5112.81","20.0.2":"104.0.5112.81","20.0.3":"104.0.5112.81","20.1.0":"104.0.5112.102","20.1.1":"104.0.5112.102","20.1.2":"104.0.5112.114","20.1.3":"104.0.5112.114","20.1.4":"104.0.5112.114","20.2.0":"104.0.5112.124","20.3.0":"104.0.5112.124","20.3.1":"104.0.5112.124","20.3.2":"104.0.5112.124","20.3.3":"104.0.5112.124","20.3.4":"104.0.5112.124","20.3.5":"104.0.5112.124","20.3.6":"104.0.5112.124","20.3.7":"104.0.5112.124","20.3.8":"104.0.5112.124","20.3.9":"104.0.5112.124","20.3.10":"104.0.5112.124","20.3.11":"104.0.5112.124","20.3.12":"104.0.5112.124","21.0.0-alpha.1":"105.0.5187.0","21.0.0-alpha.2":"105.0.5187.0","21.0.0-alpha.3":"105.0.5187.0","21.0.0-alpha.4":"105.0.5187.0","21.0.0-alpha.5":"105.0.5187.0","21.0.0-alpha.6":"106.0.5216.0","21.0.0-beta.1":"106.0.5216.0","21.0.0-beta.2":"106.0.5216.0","21.0.0-beta.3":"106.0.5216.0","21.0.0-beta.4":"106.0.5216.0","21.0.0-beta.5":"106.0.5216.0","21.0.0-beta.6":"106.0.5249.40","21.0.0-beta.7":"106.0.5249.40","21.0.0-beta.8":"106.0.5249.40","21.0.0-nightly.20220526":"103.0.5044.0","21.0.0-nightly.20220527":"103.0.5044.0","21.0.0-nightly.20220530":"103.0.5044.0","21.0.0-nightly.20220531":"103.0.5044.0","21.0.0-nightly.20220602":"104.0.5073.0","21.0.0-nightly.20220603":"104.0.5073.0","21.0.0-nightly.20220606":"104.0.5073.0","21.0.0-nightly.20220607":"104.0.5073.0","21.0.0-nightly.20220608":"104.0.5073.0","21.0.0-nightly.20220609":"104.0.5073.0","21.0.0-nightly.20220610":"104.0.5073.0","21.0.0-nightly.20220613":"104.0.5073.0","21.0.0-nightly.20220614":"104.0.5073.0","21.0.0-nightly.20220615":"104.0.5073.0","21.0.0-nightly.20220616":"104.0.5073.0","21.0.0-nightly.20220617":"104.0.5073.0","21.0.0-nightly.20220620":"104.0.5073.0","21.0.0-nightly.20220621":"104.0.5073.0","21.0.0-nightly.20220622":"104.0.5073.0","21.0.0-nightly.20220623":"104.0.5073.0","21.0.0-nightly.20220624":"104.0.5073.0","21.0.0-nightly.20220627":"104.0.5073.0","21.0.0-nightly.20220628":"105.0.5129.0","21.0.0-nightly.20220629":"105.0.5129.0","21.0.0-nightly.20220630":"105.0.5129.0","21.0.0-nightly.20220701":"105.0.5129.0","21.0.0-nightly.20220704":"105.0.5129.0","21.0.0-nightly.20220705":"105.0.5129.0","21.0.0-nightly.20220706":"105.0.5129.0","21.0.0-nightly.20220707":"105.0.5129.0","21.0.0-nightly.20220708":"105.0.5129.0","21.0.0-nightly.20220711":"105.0.5129.0","21.0.0-nightly.20220712":"105.0.5129.0","21.0.0-nightly.20220713":"105.0.5129.0","21.0.0-nightly.20220715":"105.0.5173.0","21.0.0-nightly.20220718":"105.0.5173.0","21.0.0-nightly.20220719":"105.0.5173.0","21.0.0-nightly.20220720":"105.0.5187.0","21.0.0-nightly.20220721":"105.0.5187.0","21.0.0-nightly.20220722":"105.0.5187.0","21.0.0-nightly.20220725":"105.0.5187.0","21.0.0-nightly.20220726":"105.0.5187.0","21.0.0-nightly.20220727":"105.0.5187.0","21.0.0-nightly.20220728":"105.0.5187.0","21.0.0-nightly.20220801":"105.0.5187.0","21.0.0-nightly.20220802":"105.0.5187.0","21.0.0":"106.0.5249.51","21.0.1":"106.0.5249.61","21.1.0":"106.0.5249.91","21.1.1":"106.0.5249.103","21.2.0":"106.0.5249.119","21.2.1":"106.0.5249.165","21.2.2":"106.0.5249.168","21.2.3":"106.0.5249.168","21.3.0":"106.0.5249.181","21.3.1":"106.0.5249.181","21.3.3":"106.0.5249.199","21.3.4":"106.0.5249.199","21.3.5":"106.0.5249.199","21.4.0":"106.0.5249.199","21.4.1":"106.0.5249.199","21.4.2":"106.0.5249.199","22.0.0-alpha.1":"107.0.5286.0","22.0.0-alpha.3":"108.0.5329.0","22.0.0-alpha.4":"108.0.5329.0","22.0.0-alpha.5":"108.0.5329.0","22.0.0-alpha.6":"108.0.5329.0","22.0.0-alpha.7":"108.0.5355.0","22.0.0-alpha.8":"108.0.5359.10","22.0.0-beta.1":"108.0.5359.10","22.0.0-beta.2":"108.0.5359.10","22.0.0-beta.3":"108.0.5359.10","22.0.0-beta.4":"108.0.5359.29","22.0.0-beta.5":"108.0.5359.40","22.0.0-beta.6":"108.0.5359.40","22.0.0-beta.7":"108.0.5359.48","22.0.0-beta.8":"108.0.5359.48","22.0.0-nightly.20220808":"105.0.5187.0","22.0.0-nightly.20220809":"105.0.5187.0","22.0.0-nightly.20220810":"105.0.5187.0","22.0.0-nightly.20220811":"105.0.5187.0","22.0.0-nightly.20220812":"105.0.5187.0","22.0.0-nightly.20220815":"105.0.5187.0","22.0.0-nightly.20220816":"105.0.5187.0","22.0.0-nightly.20220817":"105.0.5187.0","22.0.0-nightly.20220822":"106.0.5216.0","22.0.0-nightly.20220823":"106.0.5216.0","22.0.0-nightly.20220824":"106.0.5216.0","22.0.0-nightly.20220825":"106.0.5216.0","22.0.0-nightly.20220829":"106.0.5216.0","22.0.0-nightly.20220830":"106.0.5216.0","22.0.0-nightly.20220831":"106.0.5216.0","22.0.0-nightly.20220901":"106.0.5216.0","22.0.0-nightly.20220902":"106.0.5216.0","22.0.0-nightly.20220905":"106.0.5216.0","22.0.0-nightly.20220908":"107.0.5274.0","22.0.0-nightly.20220909":"107.0.5286.0","22.0.0-nightly.20220912":"107.0.5286.0","22.0.0-nightly.20220913":"107.0.5286.0","22.0.0-nightly.20220914":"107.0.5286.0","22.0.0-nightly.20220915":"107.0.5286.0","22.0.0-nightly.20220916":"107.0.5286.0","22.0.0-nightly.20220919":"107.0.5286.0","22.0.0-nightly.20220920":"107.0.5286.0","22.0.0-nightly.20220921":"107.0.5286.0","22.0.0-nightly.20220922":"107.0.5286.0","22.0.0-nightly.20220923":"107.0.5286.0","22.0.0-nightly.20220926":"107.0.5286.0","22.0.0-nightly.20220927":"107.0.5286.0","22.0.0-nightly.20220928":"107.0.5286.0","22.0.0":"108.0.5359.62","22.0.1":"108.0.5359.125","22.0.2":"108.0.5359.179","22.0.3":"108.0.5359.179","22.1.0":"108.0.5359.179","22.2.0":"108.0.5359.215","22.2.1":"108.0.5359.215","22.3.0":"108.0.5359.215","22.3.1":"108.0.5359.215","22.3.2":"108.0.5359.215","23.0.0-alpha.1":"110.0.5415.0","23.0.0-alpha.2":"110.0.5451.0","23.0.0-alpha.3":"110.0.5451.0","23.0.0-beta.1":"110.0.5478.5","23.0.0-beta.2":"110.0.5478.5","23.0.0-beta.3":"110.0.5478.5","23.0.0-beta.4":"110.0.5481.30","23.0.0-beta.5":"110.0.5481.38","23.0.0-beta.6":"110.0.5481.52","23.0.0-beta.8":"110.0.5481.52","23.0.0-nightly.20220929":"107.0.5286.0","23.0.0-nightly.20220930":"107.0.5286.0","23.0.0-nightly.20221003":"107.0.5286.0","23.0.0-nightly.20221004":"108.0.5329.0","23.0.0-nightly.20221005":"108.0.5329.0","23.0.0-nightly.20221006":"108.0.5329.0","23.0.0-nightly.20221007":"108.0.5329.0","23.0.0-nightly.20221010":"108.0.5329.0","23.0.0-nightly.20221011":"108.0.5329.0","23.0.0-nightly.20221012":"108.0.5329.0","23.0.0-nightly.20221013":"108.0.5329.0","23.0.0-nightly.20221014":"108.0.5329.0","23.0.0-nightly.20221017":"108.0.5329.0","23.0.0-nightly.20221018":"108.0.5355.0","23.0.0-nightly.20221019":"108.0.5355.0","23.0.0-nightly.20221020":"108.0.5355.0","23.0.0-nightly.20221021":"108.0.5355.0","23.0.0-nightly.20221024":"108.0.5355.0","23.0.0-nightly.20221026":"108.0.5355.0","23.0.0-nightly.20221027":"109.0.5382.0","23.0.0-nightly.20221028":"109.0.5382.0","23.0.0-nightly.20221031":"109.0.5382.0","23.0.0-nightly.20221101":"109.0.5382.0","23.0.0-nightly.20221102":"109.0.5382.0","23.0.0-nightly.20221103":"109.0.5382.0","23.0.0-nightly.20221104":"109.0.5382.0","23.0.0-nightly.20221107":"109.0.5382.0","23.0.0-nightly.20221108":"109.0.5382.0","23.0.0-nightly.20221109":"109.0.5382.0","23.0.0-nightly.20221110":"109.0.5382.0","23.0.0-nightly.20221111":"109.0.5382.0","23.0.0-nightly.20221114":"109.0.5382.0","23.0.0-nightly.20221115":"109.0.5382.0","23.0.0-nightly.20221116":"109.0.5382.0","23.0.0-nightly.20221117":"109.0.5382.0","23.0.0-nightly.20221118":"110.0.5415.0","23.0.0-nightly.20221121":"110.0.5415.0","23.0.0-nightly.20221122":"110.0.5415.0","23.0.0-nightly.20221123":"110.0.5415.0","23.0.0-nightly.20221124":"110.0.5415.0","23.0.0-nightly.20221125":"110.0.5415.0","23.0.0-nightly.20221128":"110.0.5415.0","23.0.0-nightly.20221129":"110.0.5415.0","23.0.0-nightly.20221130":"110.0.5415.0","23.0.0":"110.0.5481.77","23.1.0":"110.0.5481.100","23.1.1":"110.0.5481.104","23.1.2":"110.0.5481.177","23.1.3":"110.0.5481.179","24.0.0-alpha.1":"111.0.5560.0","24.0.0-alpha.2":"111.0.5560.0","24.0.0-alpha.3":"111.0.5560.0","24.0.0-alpha.4":"111.0.5560.0","24.0.0-alpha.5":"111.0.5560.0","24.0.0-alpha.6":"111.0.5560.0","24.0.0-alpha.7":"111.0.5560.0","24.0.0-beta.1":"111.0.5563.50","24.0.0-beta.2":"111.0.5563.50","24.0.0-nightly.20221201":"110.0.5415.0","24.0.0-nightly.20221202":"110.0.5415.0","24.0.0-nightly.20221205":"110.0.5415.0","24.0.0-nightly.20221206":"110.0.5451.0","24.0.0-nightly.20221207":"110.0.5451.0","24.0.0-nightly.20221208":"110.0.5451.0","24.0.0-nightly.20221213":"110.0.5451.0","24.0.0-nightly.20221214":"110.0.5451.0","24.0.0-nightly.20221215":"110.0.5451.0","24.0.0-nightly.20221216":"110.0.5451.0","24.0.0-nightly.20230109":"111.0.5518.0","24.0.0-nightly.20230110":"111.0.5518.0","24.0.0-nightly.20230111":"111.0.5518.0","24.0.0-nightly.20230112":"111.0.5518.0","24.0.0-nightly.20230113":"111.0.5518.0","24.0.0-nightly.20230116":"111.0.5518.0","24.0.0-nightly.20230117":"111.0.5518.0","24.0.0-nightly.20230118":"111.0.5518.0","24.0.0-nightly.20230119":"111.0.5518.0","24.0.0-nightly.20230120":"111.0.5518.0","24.0.0-nightly.20230123":"111.0.5518.0","24.0.0-nightly.20230124":"111.0.5518.0","24.0.0-nightly.20230125":"111.0.5518.0","24.0.0-nightly.20230126":"111.0.5518.0","24.0.0-nightly.20230127":"111.0.5518.0","24.0.0-nightly.20230131":"111.0.5518.0","24.0.0-nightly.20230201":"111.0.5518.0","24.0.0-nightly.20230202":"111.0.5518.0","24.0.0-nightly.20230203":"111.0.5560.0","24.0.0-nightly.20230206":"111.0.5560.0","24.0.0-nightly.20230207":"111.0.5560.0","24.0.0-nightly.20230208":"111.0.5560.0","24.0.0-nightly.20230209":"111.0.5560.0","25.0.0-nightly.20230210":"111.0.5560.0","25.0.0-nightly.20230214":"111.0.5560.0","25.0.0-nightly.20230215":"111.0.5560.0","25.0.0-nightly.20230216":"111.0.5560.0","25.0.0-nightly.20230217":"111.0.5560.0","25.0.0-nightly.20230220":"111.0.5560.0","25.0.0-nightly.20230221":"111.0.5560.0","25.0.0-nightly.20230222":"111.0.5560.0","25.0.0-nightly.20230223":"111.0.5560.0","25.0.0-nightly.20230224":"111.0.5560.0","25.0.0-nightly.20230227":"111.0.5560.0","25.0.0-nightly.20230228":"111.0.5560.0","25.0.0-nightly.20230301":"111.0.5560.0","25.0.0-nightly.20230302":"111.0.5560.0","25.0.0-nightly.20230303":"111.0.5560.0","25.0.0-nightly.20230306":"111.0.5560.0","25.0.0-nightly.20230307":"111.0.5560.0","25.0.0-nightly.20230308":"111.0.5560.0","25.0.0-nightly.20230309":"111.0.5560.0","25.0.0-nightly.20230310":"111.0.5560.0"}
    \ No newline at end of file
    +{"0.20.0":"39.0.2171.65","0.20.1":"39.0.2171.65","0.20.2":"39.0.2171.65","0.20.3":"39.0.2171.65","0.20.4":"39.0.2171.65","0.20.5":"39.0.2171.65","0.20.6":"39.0.2171.65","0.20.7":"39.0.2171.65","0.20.8":"39.0.2171.65","0.21.0":"40.0.2214.91","0.21.1":"40.0.2214.91","0.21.2":"40.0.2214.91","0.21.3":"41.0.2272.76","0.22.1":"41.0.2272.76","0.22.2":"41.0.2272.76","0.22.3":"41.0.2272.76","0.23.0":"41.0.2272.76","0.24.0":"41.0.2272.76","0.25.0":"42.0.2311.107","0.25.1":"42.0.2311.107","0.25.2":"42.0.2311.107","0.25.3":"42.0.2311.107","0.26.0":"42.0.2311.107","0.26.1":"42.0.2311.107","0.27.0":"42.0.2311.107","0.27.1":"42.0.2311.107","0.27.2":"43.0.2357.65","0.27.3":"43.0.2357.65","0.28.0":"43.0.2357.65","0.28.1":"43.0.2357.65","0.28.2":"43.0.2357.65","0.28.3":"43.0.2357.65","0.29.1":"43.0.2357.65","0.29.2":"43.0.2357.65","0.30.4":"44.0.2403.125","0.31.0":"44.0.2403.125","0.31.2":"45.0.2454.85","0.32.2":"45.0.2454.85","0.32.3":"45.0.2454.85","0.33.0":"45.0.2454.85","0.33.1":"45.0.2454.85","0.33.2":"45.0.2454.85","0.33.3":"45.0.2454.85","0.33.4":"45.0.2454.85","0.33.6":"45.0.2454.85","0.33.7":"45.0.2454.85","0.33.8":"45.0.2454.85","0.33.9":"45.0.2454.85","0.34.0":"45.0.2454.85","0.34.1":"45.0.2454.85","0.34.2":"45.0.2454.85","0.34.3":"45.0.2454.85","0.34.4":"45.0.2454.85","0.35.1":"45.0.2454.85","0.35.2":"45.0.2454.85","0.35.3":"45.0.2454.85","0.35.4":"45.0.2454.85","0.35.5":"45.0.2454.85","0.36.0":"47.0.2526.73","0.36.2":"47.0.2526.73","0.36.3":"47.0.2526.73","0.36.4":"47.0.2526.73","0.36.5":"47.0.2526.110","0.36.6":"47.0.2526.110","0.36.7":"47.0.2526.110","0.36.8":"47.0.2526.110","0.36.9":"47.0.2526.110","0.36.10":"47.0.2526.110","0.36.11":"47.0.2526.110","0.36.12":"47.0.2526.110","0.37.0":"49.0.2623.75","0.37.1":"49.0.2623.75","0.37.3":"49.0.2623.75","0.37.4":"49.0.2623.75","0.37.5":"49.0.2623.75","0.37.6":"49.0.2623.75","0.37.7":"49.0.2623.75","0.37.8":"49.0.2623.75","1.0.0":"49.0.2623.75","1.0.1":"49.0.2623.75","1.0.2":"49.0.2623.75","1.1.0":"50.0.2661.102","1.1.1":"50.0.2661.102","1.1.2":"50.0.2661.102","1.1.3":"50.0.2661.102","1.2.0":"51.0.2704.63","1.2.1":"51.0.2704.63","1.2.2":"51.0.2704.84","1.2.3":"51.0.2704.84","1.2.4":"51.0.2704.103","1.2.5":"51.0.2704.103","1.2.6":"51.0.2704.106","1.2.7":"51.0.2704.106","1.2.8":"51.0.2704.106","1.3.0":"52.0.2743.82","1.3.1":"52.0.2743.82","1.3.2":"52.0.2743.82","1.3.3":"52.0.2743.82","1.3.4":"52.0.2743.82","1.3.5":"52.0.2743.82","1.3.6":"52.0.2743.82","1.3.7":"52.0.2743.82","1.3.9":"52.0.2743.82","1.3.10":"52.0.2743.82","1.3.13":"52.0.2743.82","1.3.14":"52.0.2743.82","1.3.15":"52.0.2743.82","1.4.0":"53.0.2785.113","1.4.1":"53.0.2785.113","1.4.2":"53.0.2785.113","1.4.3":"53.0.2785.113","1.4.4":"53.0.2785.113","1.4.5":"53.0.2785.113","1.4.6":"53.0.2785.143","1.4.7":"53.0.2785.143","1.4.8":"53.0.2785.143","1.4.10":"53.0.2785.143","1.4.11":"53.0.2785.143","1.4.12":"54.0.2840.51","1.4.13":"53.0.2785.143","1.4.14":"53.0.2785.143","1.4.15":"53.0.2785.143","1.4.16":"53.0.2785.143","1.5.0":"54.0.2840.101","1.5.1":"54.0.2840.101","1.6.0":"56.0.2924.87","1.6.1":"56.0.2924.87","1.6.2":"56.0.2924.87","1.6.3":"56.0.2924.87","1.6.4":"56.0.2924.87","1.6.5":"56.0.2924.87","1.6.6":"56.0.2924.87","1.6.7":"56.0.2924.87","1.6.8":"56.0.2924.87","1.6.9":"56.0.2924.87","1.6.10":"56.0.2924.87","1.6.11":"56.0.2924.87","1.6.12":"56.0.2924.87","1.6.13":"56.0.2924.87","1.6.14":"56.0.2924.87","1.6.15":"56.0.2924.87","1.6.16":"56.0.2924.87","1.6.17":"56.0.2924.87","1.6.18":"56.0.2924.87","1.7.0":"58.0.3029.110","1.7.1":"58.0.3029.110","1.7.2":"58.0.3029.110","1.7.3":"58.0.3029.110","1.7.4":"58.0.3029.110","1.7.5":"58.0.3029.110","1.7.6":"58.0.3029.110","1.7.7":"58.0.3029.110","1.7.8":"58.0.3029.110","1.7.9":"58.0.3029.110","1.7.10":"58.0.3029.110","1.7.11":"58.0.3029.110","1.7.12":"58.0.3029.110","1.7.13":"58.0.3029.110","1.7.14":"58.0.3029.110","1.7.15":"58.0.3029.110","1.7.16":"58.0.3029.110","1.8.0":"59.0.3071.115","1.8.1":"59.0.3071.115","1.8.2-beta.1":"59.0.3071.115","1.8.2-beta.2":"59.0.3071.115","1.8.2-beta.3":"59.0.3071.115","1.8.2-beta.4":"59.0.3071.115","1.8.2-beta.5":"59.0.3071.115","1.8.2":"59.0.3071.115","1.8.3":"59.0.3071.115","1.8.4":"59.0.3071.115","1.8.5":"59.0.3071.115","1.8.6":"59.0.3071.115","1.8.7":"59.0.3071.115","1.8.8":"59.0.3071.115","2.0.0-beta.1":"61.0.3163.100","2.0.0-beta.2":"61.0.3163.100","2.0.0-beta.3":"61.0.3163.100","2.0.0-beta.4":"61.0.3163.100","2.0.0-beta.5":"61.0.3163.100","2.0.0-beta.6":"61.0.3163.100","2.0.0-beta.7":"61.0.3163.100","2.0.0-beta.8":"61.0.3163.100","2.0.0":"61.0.3163.100","2.0.1":"61.0.3163.100","2.0.2":"61.0.3163.100","2.0.3":"61.0.3163.100","2.0.4":"61.0.3163.100","2.0.5":"61.0.3163.100","2.0.6":"61.0.3163.100","2.0.7":"61.0.3163.100","2.0.8-nightly.20180819":"61.0.3163.100","2.0.8-nightly.20180820":"61.0.3163.100","2.0.8":"61.0.3163.100","2.0.9":"61.0.3163.100","2.0.10":"61.0.3163.100","2.0.11":"61.0.3163.100","2.0.12":"61.0.3163.100","2.0.13":"61.0.3163.100","2.0.14":"61.0.3163.100","2.0.15":"61.0.3163.100","2.0.16":"61.0.3163.100","2.0.17":"61.0.3163.100","2.0.18":"61.0.3163.100","2.1.0-unsupported.20180809":"61.0.3163.100","3.0.0-beta.1":"66.0.3359.181","3.0.0-beta.2":"66.0.3359.181","3.0.0-beta.3":"66.0.3359.181","3.0.0-beta.4":"66.0.3359.181","3.0.0-beta.5":"66.0.3359.181","3.0.0-beta.6":"66.0.3359.181","3.0.0-beta.7":"66.0.3359.181","3.0.0-beta.8":"66.0.3359.181","3.0.0-beta.9":"66.0.3359.181","3.0.0-beta.10":"66.0.3359.181","3.0.0-beta.11":"66.0.3359.181","3.0.0-beta.12":"66.0.3359.181","3.0.0-beta.13":"66.0.3359.181","3.0.0-nightly.20180818":"66.0.3359.181","3.0.0-nightly.20180821":"66.0.3359.181","3.0.0-nightly.20180823":"66.0.3359.181","3.0.0-nightly.20180904":"66.0.3359.181","3.0.0":"66.0.3359.181","3.0.1":"66.0.3359.181","3.0.2":"66.0.3359.181","3.0.3":"66.0.3359.181","3.0.4":"66.0.3359.181","3.0.5":"66.0.3359.181","3.0.6":"66.0.3359.181","3.0.7":"66.0.3359.181","3.0.8":"66.0.3359.181","3.0.9":"66.0.3359.181","3.0.10":"66.0.3359.181","3.0.11":"66.0.3359.181","3.0.12":"66.0.3359.181","3.0.13":"66.0.3359.181","3.0.14":"66.0.3359.181","3.0.15":"66.0.3359.181","3.0.16":"66.0.3359.181","3.1.0-beta.1":"66.0.3359.181","3.1.0-beta.2":"66.0.3359.181","3.1.0-beta.3":"66.0.3359.181","3.1.0-beta.4":"66.0.3359.181","3.1.0-beta.5":"66.0.3359.181","3.1.0":"66.0.3359.181","3.1.1":"66.0.3359.181","3.1.2":"66.0.3359.181","3.1.3":"66.0.3359.181","3.1.4":"66.0.3359.181","3.1.5":"66.0.3359.181","3.1.6":"66.0.3359.181","3.1.7":"66.0.3359.181","3.1.8":"66.0.3359.181","3.1.9":"66.0.3359.181","3.1.10":"66.0.3359.181","3.1.11":"66.0.3359.181","3.1.12":"66.0.3359.181","3.1.13":"66.0.3359.181","4.0.0-beta.1":"69.0.3497.106","4.0.0-beta.2":"69.0.3497.106","4.0.0-beta.3":"69.0.3497.106","4.0.0-beta.4":"69.0.3497.106","4.0.0-beta.5":"69.0.3497.106","4.0.0-beta.6":"69.0.3497.106","4.0.0-beta.7":"69.0.3497.106","4.0.0-beta.8":"69.0.3497.106","4.0.0-beta.9":"69.0.3497.106","4.0.0-beta.10":"69.0.3497.106","4.0.0-beta.11":"69.0.3497.106","4.0.0-nightly.20180817":"66.0.3359.181","4.0.0-nightly.20180819":"66.0.3359.181","4.0.0-nightly.20180821":"66.0.3359.181","4.0.0-nightly.20180929":"67.0.3396.99","4.0.0-nightly.20181006":"68.0.3440.128","4.0.0-nightly.20181010":"69.0.3497.106","4.0.0":"69.0.3497.106","4.0.1":"69.0.3497.106","4.0.2":"69.0.3497.106","4.0.3":"69.0.3497.106","4.0.4":"69.0.3497.106","4.0.5":"69.0.3497.106","4.0.6":"69.0.3497.106","4.0.7":"69.0.3497.128","4.0.8":"69.0.3497.128","4.1.0":"69.0.3497.128","4.1.1":"69.0.3497.128","4.1.2":"69.0.3497.128","4.1.3":"69.0.3497.128","4.1.4":"69.0.3497.128","4.1.5":"69.0.3497.128","4.2.0":"69.0.3497.128","4.2.1":"69.0.3497.128","4.2.2":"69.0.3497.128","4.2.3":"69.0.3497.128","4.2.4":"69.0.3497.128","4.2.5":"69.0.3497.128","4.2.6":"69.0.3497.128","4.2.7":"69.0.3497.128","4.2.8":"69.0.3497.128","4.2.9":"69.0.3497.128","4.2.10":"69.0.3497.128","4.2.11":"69.0.3497.128","4.2.12":"69.0.3497.128","5.0.0-beta.1":"72.0.3626.52","5.0.0-beta.2":"72.0.3626.52","5.0.0-beta.3":"73.0.3683.27","5.0.0-beta.4":"73.0.3683.54","5.0.0-beta.5":"73.0.3683.61","5.0.0-beta.6":"73.0.3683.84","5.0.0-beta.7":"73.0.3683.94","5.0.0-beta.8":"73.0.3683.104","5.0.0-beta.9":"73.0.3683.117","5.0.0-nightly.20190107":"70.0.3538.110","5.0.0-nightly.20190121":"71.0.3578.98","5.0.0-nightly.20190122":"71.0.3578.98","5.0.0":"73.0.3683.119","5.0.1":"73.0.3683.121","5.0.2":"73.0.3683.121","5.0.3":"73.0.3683.121","5.0.4":"73.0.3683.121","5.0.5":"73.0.3683.121","5.0.6":"73.0.3683.121","5.0.7":"73.0.3683.121","5.0.8":"73.0.3683.121","5.0.9":"73.0.3683.121","5.0.10":"73.0.3683.121","5.0.11":"73.0.3683.121","5.0.12":"73.0.3683.121","5.0.13":"73.0.3683.121","6.0.0-beta.1":"76.0.3774.1","6.0.0-beta.2":"76.0.3783.1","6.0.0-beta.3":"76.0.3783.1","6.0.0-beta.4":"76.0.3783.1","6.0.0-beta.5":"76.0.3805.4","6.0.0-beta.6":"76.0.3809.3","6.0.0-beta.7":"76.0.3809.22","6.0.0-beta.8":"76.0.3809.26","6.0.0-beta.9":"76.0.3809.26","6.0.0-beta.10":"76.0.3809.37","6.0.0-beta.11":"76.0.3809.42","6.0.0-beta.12":"76.0.3809.54","6.0.0-beta.13":"76.0.3809.60","6.0.0-beta.14":"76.0.3809.68","6.0.0-beta.15":"76.0.3809.74","6.0.0-nightly.20190123":"72.0.3626.52","6.0.0-nightly.20190212":"72.0.3626.107","6.0.0-nightly.20190213":"72.0.3626.110","6.0.0-nightly.20190311":"74.0.3724.8","6.0.0":"76.0.3809.88","6.0.1":"76.0.3809.102","6.0.2":"76.0.3809.110","6.0.3":"76.0.3809.126","6.0.4":"76.0.3809.131","6.0.5":"76.0.3809.136","6.0.6":"76.0.3809.138","6.0.7":"76.0.3809.139","6.0.8":"76.0.3809.146","6.0.9":"76.0.3809.146","6.0.10":"76.0.3809.146","6.0.11":"76.0.3809.146","6.0.12":"76.0.3809.146","6.1.0":"76.0.3809.146","6.1.1":"76.0.3809.146","6.1.2":"76.0.3809.146","6.1.3":"76.0.3809.146","6.1.4":"76.0.3809.146","6.1.5":"76.0.3809.146","6.1.6":"76.0.3809.146","6.1.7":"76.0.3809.146","6.1.8":"76.0.3809.146","6.1.9":"76.0.3809.146","6.1.10":"76.0.3809.146","6.1.11":"76.0.3809.146","6.1.12":"76.0.3809.146","7.0.0-beta.1":"78.0.3866.0","7.0.0-beta.2":"78.0.3866.0","7.0.0-beta.3":"78.0.3866.0","7.0.0-beta.4":"78.0.3896.6","7.0.0-beta.5":"78.0.3905.1","7.0.0-beta.6":"78.0.3905.1","7.0.0-beta.7":"78.0.3905.1","7.0.0-nightly.20190521":"76.0.3784.0","7.0.0-nightly.20190529":"76.0.3806.0","7.0.0-nightly.20190530":"76.0.3806.0","7.0.0-nightly.20190531":"76.0.3806.0","7.0.0-nightly.20190602":"76.0.3806.0","7.0.0-nightly.20190603":"76.0.3806.0","7.0.0-nightly.20190604":"77.0.3814.0","7.0.0-nightly.20190605":"77.0.3815.0","7.0.0-nightly.20190606":"77.0.3815.0","7.0.0-nightly.20190607":"77.0.3815.0","7.0.0-nightly.20190608":"77.0.3815.0","7.0.0-nightly.20190609":"77.0.3815.0","7.0.0-nightly.20190611":"77.0.3815.0","7.0.0-nightly.20190612":"77.0.3815.0","7.0.0-nightly.20190613":"77.0.3815.0","7.0.0-nightly.20190615":"77.0.3815.0","7.0.0-nightly.20190616":"77.0.3815.0","7.0.0-nightly.20190618":"77.0.3815.0","7.0.0-nightly.20190619":"77.0.3815.0","7.0.0-nightly.20190622":"77.0.3815.0","7.0.0-nightly.20190623":"77.0.3815.0","7.0.0-nightly.20190624":"77.0.3815.0","7.0.0-nightly.20190627":"77.0.3815.0","7.0.0-nightly.20190629":"77.0.3815.0","7.0.0-nightly.20190630":"77.0.3815.0","7.0.0-nightly.20190701":"77.0.3815.0","7.0.0-nightly.20190702":"77.0.3815.0","7.0.0-nightly.20190704":"77.0.3843.0","7.0.0-nightly.20190705":"77.0.3843.0","7.0.0-nightly.20190719":"77.0.3848.0","7.0.0-nightly.20190720":"77.0.3848.0","7.0.0-nightly.20190721":"77.0.3848.0","7.0.0-nightly.20190726":"77.0.3864.0","7.0.0-nightly.20190727":"78.0.3866.0","7.0.0-nightly.20190728":"78.0.3866.0","7.0.0-nightly.20190729":"78.0.3866.0","7.0.0-nightly.20190730":"78.0.3866.0","7.0.0-nightly.20190731":"78.0.3866.0","7.0.0":"78.0.3905.1","7.0.1":"78.0.3904.92","7.1.0":"78.0.3904.94","7.1.1":"78.0.3904.99","7.1.2":"78.0.3904.113","7.1.3":"78.0.3904.126","7.1.4":"78.0.3904.130","7.1.5":"78.0.3904.130","7.1.6":"78.0.3904.130","7.1.7":"78.0.3904.130","7.1.8":"78.0.3904.130","7.1.9":"78.0.3904.130","7.1.10":"78.0.3904.130","7.1.11":"78.0.3904.130","7.1.12":"78.0.3904.130","7.1.13":"78.0.3904.130","7.1.14":"78.0.3904.130","7.2.0":"78.0.3904.130","7.2.1":"78.0.3904.130","7.2.2":"78.0.3904.130","7.2.3":"78.0.3904.130","7.2.4":"78.0.3904.130","7.3.0":"78.0.3904.130","7.3.1":"78.0.3904.130","7.3.2":"78.0.3904.130","7.3.3":"78.0.3904.130","8.0.0-beta.1":"79.0.3931.0","8.0.0-beta.2":"79.0.3931.0","8.0.0-beta.3":"80.0.3955.0","8.0.0-beta.4":"80.0.3955.0","8.0.0-beta.5":"80.0.3987.14","8.0.0-beta.6":"80.0.3987.51","8.0.0-beta.7":"80.0.3987.59","8.0.0-beta.8":"80.0.3987.75","8.0.0-beta.9":"80.0.3987.75","8.0.0-nightly.20190801":"78.0.3866.0","8.0.0-nightly.20190802":"78.0.3866.0","8.0.0-nightly.20190803":"78.0.3871.0","8.0.0-nightly.20190806":"78.0.3871.0","8.0.0-nightly.20190807":"78.0.3871.0","8.0.0-nightly.20190808":"78.0.3871.0","8.0.0-nightly.20190809":"78.0.3871.0","8.0.0-nightly.20190810":"78.0.3871.0","8.0.0-nightly.20190811":"78.0.3871.0","8.0.0-nightly.20190812":"78.0.3871.0","8.0.0-nightly.20190813":"78.0.3871.0","8.0.0-nightly.20190814":"78.0.3871.0","8.0.0-nightly.20190815":"78.0.3871.0","8.0.0-nightly.20190816":"78.0.3881.0","8.0.0-nightly.20190817":"78.0.3881.0","8.0.0-nightly.20190818":"78.0.3881.0","8.0.0-nightly.20190819":"78.0.3881.0","8.0.0-nightly.20190820":"78.0.3881.0","8.0.0-nightly.20190824":"78.0.3892.0","8.0.0-nightly.20190825":"78.0.3892.0","8.0.0-nightly.20190827":"78.0.3892.0","8.0.0-nightly.20190828":"78.0.3892.0","8.0.0-nightly.20190830":"78.0.3892.0","8.0.0-nightly.20190901":"78.0.3892.0","8.0.0-nightly.20190902":"78.0.3892.0","8.0.0-nightly.20190907":"78.0.3892.0","8.0.0-nightly.20190909":"78.0.3892.0","8.0.0-nightly.20190910":"78.0.3892.0","8.0.0-nightly.20190911":"78.0.3892.0","8.0.0-nightly.20190912":"78.0.3892.0","8.0.0-nightly.20190913":"78.0.3892.0","8.0.0-nightly.20190914":"78.0.3892.0","8.0.0-nightly.20190915":"78.0.3892.0","8.0.0-nightly.20190917":"78.0.3892.0","8.0.0-nightly.20190919":"79.0.3915.0","8.0.0-nightly.20190920":"79.0.3915.0","8.0.0-nightly.20190922":"79.0.3919.0","8.0.0-nightly.20190923":"79.0.3919.0","8.0.0-nightly.20190924":"79.0.3919.0","8.0.0-nightly.20190926":"79.0.3919.0","8.0.0-nightly.20190928":"79.0.3919.0","8.0.0-nightly.20190929":"79.0.3919.0","8.0.0-nightly.20190930":"79.0.3919.0","8.0.0-nightly.20191001":"79.0.3919.0","8.0.0-nightly.20191004":"79.0.3919.0","8.0.0-nightly.20191005":"79.0.3919.0","8.0.0-nightly.20191006":"79.0.3919.0","8.0.0-nightly.20191009":"79.0.3919.0","8.0.0-nightly.20191011":"79.0.3919.0","8.0.0-nightly.20191012":"79.0.3919.0","8.0.0-nightly.20191017":"79.0.3919.0","8.0.0-nightly.20191019":"79.0.3931.0","8.0.0-nightly.20191020":"79.0.3931.0","8.0.0-nightly.20191021":"79.0.3931.0","8.0.0-nightly.20191023":"79.0.3931.0","8.0.0-nightly.20191101":"80.0.3952.0","8.0.0-nightly.20191103":"80.0.3952.0","8.0.0-nightly.20191105":"80.0.3952.0","8.0.0":"80.0.3987.86","8.0.1":"80.0.3987.86","8.0.2":"80.0.3987.86","8.0.3":"80.0.3987.134","8.1.0":"80.0.3987.137","8.1.1":"80.0.3987.141","8.2.0":"80.0.3987.158","8.2.1":"80.0.3987.163","8.2.2":"80.0.3987.163","8.2.3":"80.0.3987.163","8.2.4":"80.0.3987.165","8.2.5":"80.0.3987.165","8.3.0":"80.0.3987.165","8.3.1":"80.0.3987.165","8.3.2":"80.0.3987.165","8.3.3":"80.0.3987.165","8.3.4":"80.0.3987.165","8.4.0":"80.0.3987.165","8.4.1":"80.0.3987.165","8.5.0":"80.0.3987.165","8.5.1":"80.0.3987.165","8.5.2":"80.0.3987.165","8.5.3":"80.0.3987.163","8.5.4":"80.0.3987.163","8.5.5":"80.0.3987.163","9.0.0-beta.1":"82.0.4048.0","9.0.0-beta.2":"82.0.4048.0","9.0.0-beta.3":"82.0.4048.0","9.0.0-beta.4":"82.0.4048.0","9.0.0-beta.5":"82.0.4048.0","9.0.0-beta.6":"82.0.4058.2","9.0.0-beta.7":"82.0.4058.2","9.0.0-beta.9":"82.0.4058.2","9.0.0-beta.10":"82.0.4085.10","9.0.0-beta.11":"82.0.4085.14","9.0.0-beta.12":"82.0.4085.14","9.0.0-beta.13":"82.0.4085.14","9.0.0-beta.14":"82.0.4085.27","9.0.0-beta.15":"83.0.4102.3","9.0.0-beta.16":"83.0.4102.3","9.0.0-beta.17":"83.0.4103.14","9.0.0-beta.18":"83.0.4103.16","9.0.0-beta.19":"83.0.4103.24","9.0.0-beta.20":"83.0.4103.26","9.0.0-beta.21":"83.0.4103.26","9.0.0-beta.22":"83.0.4103.34","9.0.0-beta.23":"83.0.4103.44","9.0.0-beta.24":"83.0.4103.45","9.0.0-nightly.20191121":"80.0.3954.0","9.0.0-nightly.20191122":"80.0.3954.0","9.0.0-nightly.20191123":"80.0.3954.0","9.0.0-nightly.20191124":"80.0.3954.0","9.0.0-nightly.20191126":"80.0.3954.0","9.0.0-nightly.20191128":"80.0.3954.0","9.0.0-nightly.20191129":"80.0.3954.0","9.0.0-nightly.20191130":"80.0.3954.0","9.0.0-nightly.20191201":"80.0.3954.0","9.0.0-nightly.20191202":"80.0.3954.0","9.0.0-nightly.20191203":"80.0.3954.0","9.0.0-nightly.20191204":"80.0.3954.0","9.0.0-nightly.20191205":"80.0.3954.0","9.0.0-nightly.20191210":"80.0.3954.0","9.0.0-nightly.20191220":"81.0.3994.0","9.0.0-nightly.20191221":"81.0.3994.0","9.0.0-nightly.20191222":"81.0.3994.0","9.0.0-nightly.20191223":"81.0.3994.0","9.0.0-nightly.20191224":"81.0.3994.0","9.0.0-nightly.20191225":"81.0.3994.0","9.0.0-nightly.20191226":"81.0.3994.0","9.0.0-nightly.20191228":"81.0.3994.0","9.0.0-nightly.20191229":"81.0.3994.0","9.0.0-nightly.20191230":"81.0.3994.0","9.0.0-nightly.20191231":"81.0.3994.0","9.0.0-nightly.20200101":"81.0.3994.0","9.0.0-nightly.20200103":"81.0.3994.0","9.0.0-nightly.20200104":"81.0.3994.0","9.0.0-nightly.20200105":"81.0.3994.0","9.0.0-nightly.20200106":"81.0.3994.0","9.0.0-nightly.20200108":"81.0.3994.0","9.0.0-nightly.20200109":"81.0.3994.0","9.0.0-nightly.20200110":"81.0.3994.0","9.0.0-nightly.20200111":"81.0.3994.0","9.0.0-nightly.20200113":"81.0.3994.0","9.0.0-nightly.20200115":"81.0.3994.0","9.0.0-nightly.20200116":"81.0.3994.0","9.0.0-nightly.20200117":"81.0.3994.0","9.0.0-nightly.20200119":"81.0.4030.0","9.0.0-nightly.20200121":"81.0.4030.0","9.0.0":"83.0.4103.64","9.0.1":"83.0.4103.94","9.0.2":"83.0.4103.94","9.0.3":"83.0.4103.100","9.0.4":"83.0.4103.104","9.0.5":"83.0.4103.119","9.1.0":"83.0.4103.122","9.1.1":"83.0.4103.122","9.1.2":"83.0.4103.122","9.2.0":"83.0.4103.122","9.2.1":"83.0.4103.122","9.3.0":"83.0.4103.122","9.3.1":"83.0.4103.122","9.3.2":"83.0.4103.122","9.3.3":"83.0.4103.122","9.3.4":"83.0.4103.122","9.3.5":"83.0.4103.122","9.4.0":"83.0.4103.122","9.4.1":"83.0.4103.122","9.4.2":"83.0.4103.122","9.4.3":"83.0.4103.122","9.4.4":"83.0.4103.122","10.0.0-beta.1":"84.0.4129.0","10.0.0-beta.2":"84.0.4129.0","10.0.0-beta.3":"85.0.4161.2","10.0.0-beta.4":"85.0.4161.2","10.0.0-beta.8":"85.0.4181.1","10.0.0-beta.9":"85.0.4181.1","10.0.0-beta.10":"85.0.4183.19","10.0.0-beta.11":"85.0.4183.20","10.0.0-beta.12":"85.0.4183.26","10.0.0-beta.13":"85.0.4183.39","10.0.0-beta.14":"85.0.4183.39","10.0.0-beta.15":"85.0.4183.39","10.0.0-beta.17":"85.0.4183.39","10.0.0-beta.19":"85.0.4183.39","10.0.0-beta.20":"85.0.4183.39","10.0.0-beta.21":"85.0.4183.39","10.0.0-beta.23":"85.0.4183.70","10.0.0-beta.24":"85.0.4183.78","10.0.0-beta.25":"85.0.4183.80","10.0.0-nightly.20200209":"82.0.4050.0","10.0.0-nightly.20200210":"82.0.4050.0","10.0.0-nightly.20200211":"82.0.4050.0","10.0.0-nightly.20200216":"82.0.4050.0","10.0.0-nightly.20200217":"82.0.4050.0","10.0.0-nightly.20200218":"82.0.4050.0","10.0.0-nightly.20200221":"82.0.4050.0","10.0.0-nightly.20200222":"82.0.4050.0","10.0.0-nightly.20200223":"82.0.4050.0","10.0.0-nightly.20200226":"82.0.4050.0","10.0.0-nightly.20200303":"82.0.4050.0","10.0.0-nightly.20200304":"82.0.4076.0","10.0.0-nightly.20200305":"82.0.4076.0","10.0.0-nightly.20200306":"82.0.4076.0","10.0.0-nightly.20200309":"82.0.4076.0","10.0.0-nightly.20200310":"82.0.4076.0","10.0.0-nightly.20200311":"82.0.4083.0","10.0.0-nightly.20200316":"83.0.4086.0","10.0.0-nightly.20200317":"83.0.4087.0","10.0.0-nightly.20200318":"83.0.4087.0","10.0.0-nightly.20200320":"83.0.4087.0","10.0.0-nightly.20200323":"83.0.4087.0","10.0.0-nightly.20200324":"83.0.4087.0","10.0.0-nightly.20200325":"83.0.4087.0","10.0.0-nightly.20200326":"83.0.4087.0","10.0.0-nightly.20200327":"83.0.4087.0","10.0.0-nightly.20200330":"83.0.4087.0","10.0.0-nightly.20200331":"83.0.4087.0","10.0.0-nightly.20200401":"83.0.4087.0","10.0.0-nightly.20200402":"83.0.4087.0","10.0.0-nightly.20200403":"83.0.4087.0","10.0.0-nightly.20200406":"83.0.4087.0","10.0.0-nightly.20200408":"83.0.4095.0","10.0.0-nightly.20200410":"83.0.4095.0","10.0.0-nightly.20200413":"83.0.4095.0","10.0.0-nightly.20200414":"84.0.4114.0","10.0.0-nightly.20200415":"84.0.4115.0","10.0.0-nightly.20200416":"84.0.4115.0","10.0.0-nightly.20200417":"84.0.4115.0","10.0.0-nightly.20200422":"84.0.4121.0","10.0.0-nightly.20200423":"84.0.4121.0","10.0.0-nightly.20200427":"84.0.4125.0","10.0.0-nightly.20200428":"84.0.4125.0","10.0.0-nightly.20200429":"84.0.4125.0","10.0.0-nightly.20200430":"84.0.4125.0","10.0.0-nightly.20200501":"84.0.4129.0","10.0.0-nightly.20200504":"84.0.4129.0","10.0.0-nightly.20200505":"84.0.4129.0","10.0.0-nightly.20200506":"84.0.4129.0","10.0.0-nightly.20200507":"84.0.4129.0","10.0.0-nightly.20200508":"84.0.4129.0","10.0.0-nightly.20200511":"84.0.4129.0","10.0.0-nightly.20200512":"84.0.4129.0","10.0.0-nightly.20200513":"84.0.4129.0","10.0.0-nightly.20200514":"84.0.4129.0","10.0.0-nightly.20200515":"84.0.4129.0","10.0.0-nightly.20200518":"84.0.4129.0","10.0.0-nightly.20200519":"84.0.4129.0","10.0.0-nightly.20200520":"84.0.4129.0","10.0.0-nightly.20200521":"84.0.4129.0","10.0.0":"85.0.4183.84","10.0.1":"85.0.4183.86","10.1.0":"85.0.4183.87","10.1.1":"85.0.4183.93","10.1.2":"85.0.4183.98","10.1.3":"85.0.4183.121","10.1.4":"85.0.4183.121","10.1.5":"85.0.4183.121","10.1.6":"85.0.4183.121","10.1.7":"85.0.4183.121","10.2.0":"85.0.4183.121","10.3.0":"85.0.4183.121","10.3.1":"85.0.4183.121","10.3.2":"85.0.4183.121","10.4.0":"85.0.4183.121","10.4.1":"85.0.4183.121","10.4.2":"85.0.4183.121","10.4.3":"85.0.4183.121","10.4.4":"85.0.4183.121","10.4.5":"85.0.4183.121","10.4.6":"85.0.4183.121","10.4.7":"85.0.4183.121","11.0.0-beta.1":"86.0.4234.0","11.0.0-beta.3":"86.0.4234.0","11.0.0-beta.4":"86.0.4234.0","11.0.0-beta.5":"86.0.4234.0","11.0.0-beta.6":"86.0.4234.0","11.0.0-beta.7":"86.0.4234.0","11.0.0-beta.8":"87.0.4251.1","11.0.0-beta.9":"87.0.4251.1","11.0.0-beta.11":"87.0.4251.1","11.0.0-beta.12":"87.0.4280.11","11.0.0-beta.13":"87.0.4280.11","11.0.0-beta.16":"87.0.4280.27","11.0.0-beta.17":"87.0.4280.27","11.0.0-beta.18":"87.0.4280.27","11.0.0-beta.19":"87.0.4280.27","11.0.0-beta.20":"87.0.4280.40","11.0.0-beta.22":"87.0.4280.47","11.0.0-beta.23":"87.0.4280.47","11.0.0-nightly.20200525":"84.0.4129.0","11.0.0-nightly.20200526":"84.0.4129.0","11.0.0-nightly.20200529":"85.0.4156.0","11.0.0-nightly.20200602":"85.0.4162.0","11.0.0-nightly.20200603":"85.0.4162.0","11.0.0-nightly.20200604":"85.0.4162.0","11.0.0-nightly.20200609":"85.0.4162.0","11.0.0-nightly.20200610":"85.0.4162.0","11.0.0-nightly.20200611":"85.0.4162.0","11.0.0-nightly.20200615":"85.0.4162.0","11.0.0-nightly.20200616":"85.0.4162.0","11.0.0-nightly.20200617":"85.0.4162.0","11.0.0-nightly.20200618":"85.0.4162.0","11.0.0-nightly.20200619":"85.0.4162.0","11.0.0-nightly.20200701":"85.0.4179.0","11.0.0-nightly.20200702":"85.0.4179.0","11.0.0-nightly.20200703":"85.0.4179.0","11.0.0-nightly.20200706":"85.0.4179.0","11.0.0-nightly.20200707":"85.0.4179.0","11.0.0-nightly.20200708":"85.0.4179.0","11.0.0-nightly.20200709":"85.0.4179.0","11.0.0-nightly.20200716":"86.0.4203.0","11.0.0-nightly.20200717":"86.0.4203.0","11.0.0-nightly.20200720":"86.0.4203.0","11.0.0-nightly.20200721":"86.0.4203.0","11.0.0-nightly.20200723":"86.0.4209.0","11.0.0-nightly.20200724":"86.0.4209.0","11.0.0-nightly.20200729":"86.0.4209.0","11.0.0-nightly.20200730":"86.0.4209.0","11.0.0-nightly.20200731":"86.0.4209.0","11.0.0-nightly.20200803":"86.0.4209.0","11.0.0-nightly.20200804":"86.0.4209.0","11.0.0-nightly.20200805":"86.0.4209.0","11.0.0-nightly.20200811":"86.0.4209.0","11.0.0-nightly.20200812":"86.0.4209.0","11.0.0-nightly.20200822":"86.0.4234.0","11.0.0-nightly.20200824":"86.0.4234.0","11.0.0-nightly.20200825":"86.0.4234.0","11.0.0-nightly.20200826":"86.0.4234.0","11.0.0":"87.0.4280.60","11.0.1":"87.0.4280.60","11.0.2":"87.0.4280.67","11.0.3":"87.0.4280.67","11.0.4":"87.0.4280.67","11.0.5":"87.0.4280.88","11.1.0":"87.0.4280.88","11.1.1":"87.0.4280.88","11.2.0":"87.0.4280.141","11.2.1":"87.0.4280.141","11.2.2":"87.0.4280.141","11.2.3":"87.0.4280.141","11.3.0":"87.0.4280.141","11.4.0":"87.0.4280.141","11.4.1":"87.0.4280.141","11.4.2":"87.0.4280.141","11.4.3":"87.0.4280.141","11.4.4":"87.0.4280.141","11.4.5":"87.0.4280.141","11.4.6":"87.0.4280.141","11.4.7":"87.0.4280.141","11.4.8":"87.0.4280.141","11.4.9":"87.0.4280.141","11.4.10":"87.0.4280.141","11.4.11":"87.0.4280.141","11.4.12":"87.0.4280.141","11.5.0":"87.0.4280.141","12.0.0-beta.1":"89.0.4328.0","12.0.0-beta.3":"89.0.4328.0","12.0.0-beta.4":"89.0.4328.0","12.0.0-beta.5":"89.0.4328.0","12.0.0-beta.6":"89.0.4328.0","12.0.0-beta.7":"89.0.4328.0","12.0.0-beta.8":"89.0.4328.0","12.0.0-beta.9":"89.0.4328.0","12.0.0-beta.10":"89.0.4328.0","12.0.0-beta.11":"89.0.4328.0","12.0.0-beta.12":"89.0.4328.0","12.0.0-beta.14":"89.0.4328.0","12.0.0-beta.16":"89.0.4348.1","12.0.0-beta.18":"89.0.4348.1","12.0.0-beta.19":"89.0.4348.1","12.0.0-beta.20":"89.0.4348.1","12.0.0-beta.21":"89.0.4388.2","12.0.0-beta.22":"89.0.4388.2","12.0.0-beta.23":"89.0.4388.2","12.0.0-beta.24":"89.0.4388.2","12.0.0-beta.25":"89.0.4388.2","12.0.0-beta.26":"89.0.4388.2","12.0.0-beta.27":"89.0.4389.23","12.0.0-beta.28":"89.0.4389.23","12.0.0-beta.29":"89.0.4389.23","12.0.0-beta.30":"89.0.4389.58","12.0.0-beta.31":"89.0.4389.58","12.0.0-nightly.20200827":"86.0.4234.0","12.0.0-nightly.20200831":"86.0.4234.0","12.0.0-nightly.20200902":"86.0.4234.0","12.0.0-nightly.20200903":"86.0.4234.0","12.0.0-nightly.20200907":"86.0.4234.0","12.0.0-nightly.20200910":"86.0.4234.0","12.0.0-nightly.20200911":"86.0.4234.0","12.0.0-nightly.20200914":"86.0.4234.0","12.0.0-nightly.20201002":"87.0.4268.0","12.0.0-nightly.20201007":"87.0.4268.0","12.0.0-nightly.20201009":"87.0.4268.0","12.0.0-nightly.20201012":"87.0.4268.0","12.0.0-nightly.20201013":"87.0.4268.0","12.0.0-nightly.20201014":"87.0.4268.0","12.0.0-nightly.20201015":"87.0.4268.0","12.0.0-nightly.20201023":"88.0.4292.0","12.0.0-nightly.20201026":"88.0.4292.0","12.0.0-nightly.20201030":"88.0.4306.0","12.0.0-nightly.20201102":"88.0.4306.0","12.0.0-nightly.20201103":"88.0.4306.0","12.0.0-nightly.20201104":"88.0.4306.0","12.0.0-nightly.20201105":"88.0.4306.0","12.0.0-nightly.20201106":"88.0.4306.0","12.0.0-nightly.20201111":"88.0.4306.0","12.0.0-nightly.20201112":"88.0.4306.0","12.0.0-nightly.20201116":"88.0.4324.0","12.0.0":"89.0.4389.69","12.0.1":"89.0.4389.82","12.0.2":"89.0.4389.90","12.0.3":"89.0.4389.114","12.0.4":"89.0.4389.114","12.0.5":"89.0.4389.128","12.0.6":"89.0.4389.128","12.0.7":"89.0.4389.128","12.0.8":"89.0.4389.128","12.0.9":"89.0.4389.128","12.0.10":"89.0.4389.128","12.0.11":"89.0.4389.128","12.0.12":"89.0.4389.128","12.0.13":"89.0.4389.128","12.0.14":"89.0.4389.128","12.0.15":"89.0.4389.128","12.0.16":"89.0.4389.128","12.0.17":"89.0.4389.128","12.0.18":"89.0.4389.128","12.1.0":"89.0.4389.128","12.1.1":"89.0.4389.128","12.1.2":"89.0.4389.128","12.2.0":"89.0.4389.128","12.2.1":"89.0.4389.128","12.2.2":"89.0.4389.128","12.2.3":"89.0.4389.128","13.0.0-beta.2":"90.0.4402.0","13.0.0-beta.3":"90.0.4402.0","13.0.0-beta.4":"90.0.4415.0","13.0.0-beta.5":"90.0.4415.0","13.0.0-beta.6":"90.0.4415.0","13.0.0-beta.7":"90.0.4415.0","13.0.0-beta.8":"90.0.4415.0","13.0.0-beta.9":"90.0.4415.0","13.0.0-beta.10":"90.0.4415.0","13.0.0-beta.11":"90.0.4415.0","13.0.0-beta.12":"90.0.4415.0","13.0.0-beta.13":"90.0.4415.0","13.0.0-beta.14":"91.0.4448.0","13.0.0-beta.16":"91.0.4448.0","13.0.0-beta.17":"91.0.4448.0","13.0.0-beta.18":"91.0.4448.0","13.0.0-beta.20":"91.0.4448.0","13.0.0-beta.21":"91.0.4472.33","13.0.0-beta.22":"91.0.4472.33","13.0.0-beta.23":"91.0.4472.33","13.0.0-beta.24":"91.0.4472.38","13.0.0-beta.25":"91.0.4472.38","13.0.0-beta.26":"91.0.4472.38","13.0.0-beta.27":"91.0.4472.38","13.0.0-beta.28":"91.0.4472.38","13.0.0-nightly.20201119":"89.0.4328.0","13.0.0-nightly.20201123":"89.0.4328.0","13.0.0-nightly.20201124":"89.0.4328.0","13.0.0-nightly.20201126":"89.0.4328.0","13.0.0-nightly.20201127":"89.0.4328.0","13.0.0-nightly.20201130":"89.0.4328.0","13.0.0-nightly.20201201":"89.0.4328.0","13.0.0-nightly.20201202":"89.0.4328.0","13.0.0-nightly.20201203":"89.0.4328.0","13.0.0-nightly.20201204":"89.0.4328.0","13.0.0-nightly.20201207":"89.0.4328.0","13.0.0-nightly.20201208":"89.0.4328.0","13.0.0-nightly.20201209":"89.0.4328.0","13.0.0-nightly.20201210":"89.0.4328.0","13.0.0-nightly.20201211":"89.0.4328.0","13.0.0-nightly.20201214":"89.0.4328.0","13.0.0-nightly.20201215":"89.0.4349.0","13.0.0-nightly.20201216":"89.0.4349.0","13.0.0-nightly.20201221":"89.0.4349.0","13.0.0-nightly.20201222":"89.0.4349.0","13.0.0-nightly.20201223":"89.0.4359.0","13.0.0-nightly.20210104":"89.0.4359.0","13.0.0-nightly.20210108":"89.0.4359.0","13.0.0-nightly.20210111":"89.0.4359.0","13.0.0-nightly.20210113":"89.0.4386.0","13.0.0-nightly.20210114":"89.0.4386.0","13.0.0-nightly.20210118":"89.0.4386.0","13.0.0-nightly.20210122":"89.0.4386.0","13.0.0-nightly.20210125":"89.0.4386.0","13.0.0-nightly.20210127":"89.0.4389.0","13.0.0-nightly.20210128":"89.0.4389.0","13.0.0-nightly.20210129":"89.0.4389.0","13.0.0-nightly.20210201":"89.0.4389.0","13.0.0-nightly.20210202":"89.0.4389.0","13.0.0-nightly.20210203":"89.0.4389.0","13.0.0-nightly.20210205":"89.0.4389.0","13.0.0-nightly.20210208":"89.0.4389.0","13.0.0-nightly.20210209":"89.0.4389.0","13.0.0-nightly.20210210":"90.0.4402.0","13.0.0-nightly.20210211":"90.0.4402.0","13.0.0-nightly.20210212":"90.0.4402.0","13.0.0-nightly.20210216":"90.0.4402.0","13.0.0-nightly.20210217":"90.0.4402.0","13.0.0-nightly.20210218":"90.0.4402.0","13.0.0-nightly.20210219":"90.0.4402.0","13.0.0-nightly.20210222":"90.0.4402.0","13.0.0-nightly.20210225":"90.0.4402.0","13.0.0-nightly.20210226":"90.0.4402.0","13.0.0-nightly.20210301":"90.0.4402.0","13.0.0-nightly.20210302":"90.0.4402.0","13.0.0-nightly.20210303":"90.0.4402.0","13.0.0":"91.0.4472.69","13.0.1":"91.0.4472.69","13.1.0":"91.0.4472.77","13.1.1":"91.0.4472.77","13.1.2":"91.0.4472.77","13.1.3":"91.0.4472.106","13.1.4":"91.0.4472.106","13.1.5":"91.0.4472.124","13.1.6":"91.0.4472.124","13.1.7":"91.0.4472.124","13.1.8":"91.0.4472.164","13.1.9":"91.0.4472.164","13.2.0":"91.0.4472.164","13.2.1":"91.0.4472.164","13.2.2":"91.0.4472.164","13.2.3":"91.0.4472.164","13.3.0":"91.0.4472.164","13.4.0":"91.0.4472.164","13.5.0":"91.0.4472.164","13.5.1":"91.0.4472.164","13.5.2":"91.0.4472.164","13.6.0":"91.0.4472.164","13.6.1":"91.0.4472.164","13.6.2":"91.0.4472.164","13.6.3":"91.0.4472.164","13.6.6":"91.0.4472.164","13.6.7":"91.0.4472.164","13.6.8":"91.0.4472.164","13.6.9":"91.0.4472.164","14.0.0-beta.1":"92.0.4511.0","14.0.0-beta.2":"92.0.4511.0","14.0.0-beta.3":"92.0.4511.0","14.0.0-beta.5":"93.0.4536.0","14.0.0-beta.6":"93.0.4536.0","14.0.0-beta.7":"93.0.4536.0","14.0.0-beta.8":"93.0.4536.0","14.0.0-beta.9":"93.0.4539.0","14.0.0-beta.10":"93.0.4539.0","14.0.0-beta.11":"93.0.4557.4","14.0.0-beta.12":"93.0.4557.4","14.0.0-beta.13":"93.0.4566.0","14.0.0-beta.14":"93.0.4566.0","14.0.0-beta.15":"93.0.4566.0","14.0.0-beta.16":"93.0.4566.0","14.0.0-beta.17":"93.0.4566.0","14.0.0-beta.18":"93.0.4577.15","14.0.0-beta.19":"93.0.4577.15","14.0.0-beta.20":"93.0.4577.15","14.0.0-beta.21":"93.0.4577.15","14.0.0-beta.22":"93.0.4577.25","14.0.0-beta.23":"93.0.4577.25","14.0.0-beta.24":"93.0.4577.51","14.0.0-beta.25":"93.0.4577.51","14.0.0-nightly.20210304":"90.0.4402.0","14.0.0-nightly.20210305":"90.0.4415.0","14.0.0-nightly.20210308":"90.0.4415.0","14.0.0-nightly.20210309":"90.0.4415.0","14.0.0-nightly.20210311":"90.0.4415.0","14.0.0-nightly.20210315":"90.0.4415.0","14.0.0-nightly.20210316":"90.0.4415.0","14.0.0-nightly.20210317":"90.0.4415.0","14.0.0-nightly.20210318":"90.0.4415.0","14.0.0-nightly.20210319":"90.0.4415.0","14.0.0-nightly.20210323":"90.0.4415.0","14.0.0-nightly.20210324":"90.0.4415.0","14.0.0-nightly.20210325":"90.0.4415.0","14.0.0-nightly.20210326":"90.0.4415.0","14.0.0-nightly.20210329":"90.0.4415.0","14.0.0-nightly.20210330":"90.0.4415.0","14.0.0-nightly.20210331":"91.0.4448.0","14.0.0-nightly.20210401":"91.0.4448.0","14.0.0-nightly.20210402":"91.0.4448.0","14.0.0-nightly.20210406":"91.0.4448.0","14.0.0-nightly.20210407":"91.0.4448.0","14.0.0-nightly.20210408":"91.0.4448.0","14.0.0-nightly.20210409":"91.0.4448.0","14.0.0-nightly.20210413":"91.0.4448.0","14.0.0-nightly.20210426":"92.0.4475.0","14.0.0-nightly.20210427":"92.0.4475.0","14.0.0-nightly.20210430":"92.0.4488.0","14.0.0-nightly.20210503":"92.0.4488.0","14.0.0-nightly.20210505":"92.0.4496.0","14.0.0-nightly.20210506":"92.0.4498.0","14.0.0-nightly.20210507":"92.0.4499.0","14.0.0-nightly.20210510":"92.0.4499.0","14.0.0-nightly.20210511":"92.0.4499.0","14.0.0-nightly.20210512":"92.0.4499.0","14.0.0-nightly.20210513":"92.0.4499.0","14.0.0-nightly.20210514":"92.0.4505.0","14.0.0-nightly.20210517":"92.0.4505.0","14.0.0-nightly.20210518":"92.0.4505.0","14.0.0-nightly.20210519":"92.0.4505.0","14.0.0-nightly.20210520":"92.0.4511.0","14.0.0-nightly.20210523":"92.0.4511.0","14.0.0-nightly.20210524":"92.0.4511.0","14.0.0":"93.0.4577.58","14.0.1":"93.0.4577.63","14.0.2":"93.0.4577.82","14.1.0":"93.0.4577.82","14.1.1":"93.0.4577.82","14.2.0":"93.0.4577.82","14.2.1":"93.0.4577.82","14.2.2":"93.0.4577.82","14.2.3":"93.0.4577.82","14.2.4":"93.0.4577.82","14.2.5":"93.0.4577.82","14.2.6":"93.0.4577.82","14.2.7":"93.0.4577.82","14.2.8":"93.0.4577.82","14.2.9":"93.0.4577.82","15.0.0-alpha.1":"93.0.4566.0","15.0.0-alpha.2":"93.0.4566.0","15.0.0-alpha.3":"94.0.4584.0","15.0.0-alpha.4":"94.0.4584.0","15.0.0-alpha.5":"94.0.4584.0","15.0.0-alpha.6":"94.0.4584.0","15.0.0-alpha.7":"94.0.4590.2","15.0.0-alpha.8":"94.0.4590.2","15.0.0-alpha.9":"94.0.4590.2","15.0.0-alpha.10":"94.0.4606.12","15.0.0-beta.1":"94.0.4606.20","15.0.0-beta.2":"94.0.4606.20","15.0.0-beta.3":"94.0.4606.31","15.0.0-beta.4":"94.0.4606.31","15.0.0-beta.5":"94.0.4606.31","15.0.0-beta.6":"94.0.4606.31","15.0.0-beta.7":"94.0.4606.31","15.0.0-nightly.20210527":"92.0.4511.0","15.0.0-nightly.20210528":"92.0.4511.0","15.0.0-nightly.20210531":"92.0.4511.0","15.0.0-nightly.20210601":"92.0.4511.0","15.0.0-nightly.20210602":"92.0.4511.0","15.0.0-nightly.20210603":"93.0.4530.0","15.0.0-nightly.20210604":"93.0.4530.0","15.0.0-nightly.20210608":"93.0.4535.0","15.0.0-nightly.20210609":"93.0.4536.0","15.0.0-nightly.20210610":"93.0.4536.0","15.0.0-nightly.20210611":"93.0.4536.0","15.0.0-nightly.20210614":"93.0.4536.0","15.0.0-nightly.20210615":"93.0.4536.0","15.0.0-nightly.20210616":"93.0.4536.0","15.0.0-nightly.20210617":"93.0.4539.0","15.0.0-nightly.20210618":"93.0.4539.0","15.0.0-nightly.20210621":"93.0.4539.0","15.0.0-nightly.20210622":"93.0.4539.0","15.0.0-nightly.20210623":"93.0.4550.0","15.0.0-nightly.20210624":"93.0.4550.0","15.0.0-nightly.20210625":"93.0.4552.0","15.0.0-nightly.20210628":"93.0.4552.0","15.0.0-nightly.20210629":"93.0.4552.0","15.0.0-nightly.20210630":"93.0.4558.0","15.0.0-nightly.20210701":"93.0.4558.0","15.0.0-nightly.20210702":"93.0.4558.0","15.0.0-nightly.20210705":"93.0.4558.0","15.0.0-nightly.20210706":"93.0.4566.0","15.0.0-nightly.20210707":"93.0.4566.0","15.0.0-nightly.20210708":"93.0.4566.0","15.0.0-nightly.20210709":"93.0.4566.0","15.0.0-nightly.20210712":"93.0.4566.0","15.0.0-nightly.20210713":"93.0.4566.0","15.0.0-nightly.20210714":"93.0.4566.0","15.0.0-nightly.20210715":"93.0.4566.0","15.0.0-nightly.20210716":"93.0.4566.0","15.0.0-nightly.20210719":"93.0.4566.0","15.0.0-nightly.20210720":"93.0.4566.0","15.0.0-nightly.20210721":"93.0.4566.0","15.0.0":"94.0.4606.51","15.1.0":"94.0.4606.61","15.1.1":"94.0.4606.61","15.1.2":"94.0.4606.71","15.2.0":"94.0.4606.81","15.3.0":"94.0.4606.81","15.3.1":"94.0.4606.81","15.3.2":"94.0.4606.81","15.3.3":"94.0.4606.81","15.3.4":"94.0.4606.81","15.3.5":"94.0.4606.81","15.3.6":"94.0.4606.81","15.3.7":"94.0.4606.81","15.4.0":"94.0.4606.81","15.4.1":"94.0.4606.81","15.4.2":"94.0.4606.81","15.5.0":"94.0.4606.81","15.5.1":"94.0.4606.81","15.5.2":"94.0.4606.81","15.5.3":"94.0.4606.81","15.5.4":"94.0.4606.81","15.5.5":"94.0.4606.81","15.5.6":"94.0.4606.81","15.5.7":"94.0.4606.81","16.0.0-alpha.1":"95.0.4629.0","16.0.0-alpha.2":"95.0.4629.0","16.0.0-alpha.3":"95.0.4629.0","16.0.0-alpha.4":"95.0.4629.0","16.0.0-alpha.5":"95.0.4629.0","16.0.0-alpha.6":"95.0.4629.0","16.0.0-alpha.7":"95.0.4629.0","16.0.0-alpha.8":"96.0.4647.0","16.0.0-alpha.9":"96.0.4647.0","16.0.0-beta.1":"96.0.4647.0","16.0.0-beta.2":"96.0.4647.0","16.0.0-beta.3":"96.0.4647.0","16.0.0-beta.4":"96.0.4664.18","16.0.0-beta.5":"96.0.4664.18","16.0.0-beta.6":"96.0.4664.27","16.0.0-beta.7":"96.0.4664.27","16.0.0-beta.8":"96.0.4664.35","16.0.0-beta.9":"96.0.4664.35","16.0.0-nightly.20210722":"93.0.4566.0","16.0.0-nightly.20210723":"93.0.4566.0","16.0.0-nightly.20210726":"93.0.4566.0","16.0.0-nightly.20210727":"94.0.4584.0","16.0.0-nightly.20210728":"94.0.4584.0","16.0.0-nightly.20210729":"94.0.4584.0","16.0.0-nightly.20210730":"94.0.4584.0","16.0.0-nightly.20210802":"94.0.4584.0","16.0.0-nightly.20210803":"94.0.4584.0","16.0.0-nightly.20210804":"94.0.4584.0","16.0.0-nightly.20210805":"94.0.4584.0","16.0.0-nightly.20210806":"94.0.4584.0","16.0.0-nightly.20210809":"94.0.4584.0","16.0.0-nightly.20210810":"94.0.4584.0","16.0.0-nightly.20210811":"94.0.4584.0","16.0.0-nightly.20210812":"94.0.4590.2","16.0.0-nightly.20210813":"94.0.4590.2","16.0.0-nightly.20210816":"94.0.4590.2","16.0.0-nightly.20210817":"94.0.4590.2","16.0.0-nightly.20210818":"94.0.4590.2","16.0.0-nightly.20210819":"94.0.4590.2","16.0.0-nightly.20210820":"94.0.4590.2","16.0.0-nightly.20210823":"94.0.4590.2","16.0.0-nightly.20210824":"95.0.4612.5","16.0.0-nightly.20210825":"95.0.4612.5","16.0.0-nightly.20210826":"95.0.4612.5","16.0.0-nightly.20210827":"95.0.4612.5","16.0.0-nightly.20210830":"95.0.4612.5","16.0.0-nightly.20210831":"95.0.4612.5","16.0.0-nightly.20210901":"95.0.4612.5","16.0.0-nightly.20210902":"95.0.4629.0","16.0.0-nightly.20210903":"95.0.4629.0","16.0.0-nightly.20210906":"95.0.4629.0","16.0.0-nightly.20210907":"95.0.4629.0","16.0.0-nightly.20210908":"95.0.4629.0","16.0.0-nightly.20210909":"95.0.4629.0","16.0.0-nightly.20210910":"95.0.4629.0","16.0.0-nightly.20210913":"95.0.4629.0","16.0.0-nightly.20210914":"95.0.4629.0","16.0.0-nightly.20210915":"95.0.4629.0","16.0.0-nightly.20210916":"95.0.4629.0","16.0.0-nightly.20210917":"95.0.4629.0","16.0.0-nightly.20210920":"95.0.4629.0","16.0.0-nightly.20210921":"95.0.4629.0","16.0.0-nightly.20210922":"95.0.4629.0","16.0.0":"96.0.4664.45","16.0.1":"96.0.4664.45","16.0.2":"96.0.4664.55","16.0.3":"96.0.4664.55","16.0.4":"96.0.4664.55","16.0.5":"96.0.4664.55","16.0.6":"96.0.4664.110","16.0.7":"96.0.4664.110","16.0.8":"96.0.4664.110","16.0.9":"96.0.4664.174","16.0.10":"96.0.4664.174","16.1.0":"96.0.4664.174","16.1.1":"96.0.4664.174","16.2.0":"96.0.4664.174","16.2.1":"96.0.4664.174","16.2.2":"96.0.4664.174","16.2.3":"96.0.4664.174","16.2.4":"96.0.4664.174","16.2.5":"96.0.4664.174","16.2.6":"96.0.4664.174","16.2.7":"96.0.4664.174","16.2.8":"96.0.4664.174","17.0.0-alpha.1":"96.0.4664.4","17.0.0-alpha.2":"96.0.4664.4","17.0.0-alpha.3":"96.0.4664.4","17.0.0-alpha.4":"98.0.4706.0","17.0.0-alpha.5":"98.0.4706.0","17.0.0-alpha.6":"98.0.4706.0","17.0.0-beta.1":"98.0.4706.0","17.0.0-beta.2":"98.0.4706.0","17.0.0-beta.3":"98.0.4758.9","17.0.0-beta.4":"98.0.4758.11","17.0.0-beta.5":"98.0.4758.11","17.0.0-beta.6":"98.0.4758.11","17.0.0-beta.7":"98.0.4758.11","17.0.0-beta.8":"98.0.4758.11","17.0.0-beta.9":"98.0.4758.11","17.0.0-nightly.20210923":"95.0.4629.0","17.0.0-nightly.20210924":"95.0.4629.0","17.0.0-nightly.20210927":"95.0.4629.0","17.0.0-nightly.20210928":"95.0.4629.0","17.0.0-nightly.20210929":"95.0.4629.0","17.0.0-nightly.20210930":"95.0.4629.0","17.0.0-nightly.20211001":"95.0.4629.0","17.0.0-nightly.20211004":"95.0.4629.0","17.0.0-nightly.20211005":"95.0.4629.0","17.0.0-nightly.20211006":"96.0.4647.0","17.0.0-nightly.20211007":"96.0.4647.0","17.0.0-nightly.20211008":"96.0.4647.0","17.0.0-nightly.20211011":"96.0.4647.0","17.0.0-nightly.20211012":"96.0.4647.0","17.0.0-nightly.20211013":"96.0.4647.0","17.0.0-nightly.20211014":"96.0.4647.0","17.0.0-nightly.20211015":"96.0.4647.0","17.0.0-nightly.20211018":"96.0.4647.0","17.0.0-nightly.20211019":"96.0.4647.0","17.0.0-nightly.20211020":"96.0.4647.0","17.0.0-nightly.20211021":"96.0.4647.0","17.0.0-nightly.20211022":"96.0.4664.4","17.0.0-nightly.20211025":"96.0.4664.4","17.0.0-nightly.20211026":"96.0.4664.4","17.0.0-nightly.20211027":"96.0.4664.4","17.0.0-nightly.20211028":"96.0.4664.4","17.0.0-nightly.20211029":"96.0.4664.4","17.0.0-nightly.20211101":"96.0.4664.4","17.0.0-nightly.20211102":"96.0.4664.4","17.0.0-nightly.20211103":"96.0.4664.4","17.0.0-nightly.20211104":"96.0.4664.4","17.0.0-nightly.20211105":"96.0.4664.4","17.0.0-nightly.20211108":"96.0.4664.4","17.0.0-nightly.20211109":"96.0.4664.4","17.0.0-nightly.20211110":"96.0.4664.4","17.0.0-nightly.20211111":"96.0.4664.4","17.0.0-nightly.20211112":"96.0.4664.4","17.0.0-nightly.20211115":"96.0.4664.4","17.0.0-nightly.20211116":"96.0.4664.4","17.0.0-nightly.20211117":"96.0.4664.4","17.0.0":"98.0.4758.74","17.0.1":"98.0.4758.82","17.1.0":"98.0.4758.102","17.1.1":"98.0.4758.109","17.1.2":"98.0.4758.109","17.2.0":"98.0.4758.109","17.3.0":"98.0.4758.141","17.3.1":"98.0.4758.141","17.4.0":"98.0.4758.141","17.4.1":"98.0.4758.141","17.4.2":"98.0.4758.141","17.4.3":"98.0.4758.141","17.4.4":"98.0.4758.141","17.4.5":"98.0.4758.141","17.4.6":"98.0.4758.141","17.4.7":"98.0.4758.141","17.4.8":"98.0.4758.141","17.4.9":"98.0.4758.141","17.4.10":"98.0.4758.141","17.4.11":"98.0.4758.141","18.0.0-alpha.1":"99.0.4767.0","18.0.0-alpha.2":"99.0.4767.0","18.0.0-alpha.3":"99.0.4767.0","18.0.0-alpha.4":"99.0.4767.0","18.0.0-alpha.5":"99.0.4767.0","18.0.0-beta.1":"100.0.4894.0","18.0.0-beta.2":"100.0.4894.0","18.0.0-beta.3":"100.0.4894.0","18.0.0-beta.4":"100.0.4894.0","18.0.0-beta.5":"100.0.4894.0","18.0.0-beta.6":"100.0.4894.0","18.0.0-nightly.20211118":"96.0.4664.4","18.0.0-nightly.20211119":"96.0.4664.4","18.0.0-nightly.20211122":"96.0.4664.4","18.0.0-nightly.20211123":"96.0.4664.4","18.0.0-nightly.20211124":"98.0.4706.0","18.0.0-nightly.20211125":"98.0.4706.0","18.0.0-nightly.20211126":"98.0.4706.0","18.0.0-nightly.20211129":"98.0.4706.0","18.0.0-nightly.20211130":"98.0.4706.0","18.0.0-nightly.20211201":"98.0.4706.0","18.0.0-nightly.20211202":"98.0.4706.0","18.0.0-nightly.20211203":"98.0.4706.0","18.0.0-nightly.20211206":"98.0.4706.0","18.0.0-nightly.20211207":"98.0.4706.0","18.0.0-nightly.20211208":"98.0.4706.0","18.0.0-nightly.20211209":"98.0.4706.0","18.0.0-nightly.20211210":"98.0.4706.0","18.0.0-nightly.20211213":"98.0.4706.0","18.0.0-nightly.20211214":"98.0.4706.0","18.0.0-nightly.20211215":"98.0.4706.0","18.0.0-nightly.20211216":"98.0.4706.0","18.0.0-nightly.20211217":"98.0.4706.0","18.0.0-nightly.20211220":"98.0.4706.0","18.0.0-nightly.20211221":"98.0.4706.0","18.0.0-nightly.20211222":"98.0.4706.0","18.0.0-nightly.20211223":"98.0.4706.0","18.0.0-nightly.20211228":"98.0.4706.0","18.0.0-nightly.20211229":"98.0.4706.0","18.0.0-nightly.20211231":"98.0.4706.0","18.0.0-nightly.20220103":"98.0.4706.0","18.0.0-nightly.20220104":"98.0.4706.0","18.0.0-nightly.20220105":"98.0.4706.0","18.0.0-nightly.20220106":"98.0.4706.0","18.0.0-nightly.20220107":"98.0.4706.0","18.0.0-nightly.20220110":"98.0.4706.0","18.0.0-nightly.20220111":"99.0.4767.0","18.0.0-nightly.20220112":"99.0.4767.0","18.0.0-nightly.20220113":"99.0.4767.0","18.0.0-nightly.20220114":"99.0.4767.0","18.0.0-nightly.20220117":"99.0.4767.0","18.0.0-nightly.20220118":"99.0.4767.0","18.0.0-nightly.20220119":"99.0.4767.0","18.0.0-nightly.20220121":"99.0.4767.0","18.0.0-nightly.20220124":"99.0.4767.0","18.0.0-nightly.20220125":"99.0.4767.0","18.0.0-nightly.20220127":"99.0.4767.0","18.0.0-nightly.20220128":"99.0.4767.0","18.0.0-nightly.20220131":"99.0.4767.0","18.0.0-nightly.20220201":"99.0.4767.0","18.0.0":"100.0.4896.56","18.0.1":"100.0.4896.60","18.0.2":"100.0.4896.60","18.0.3":"100.0.4896.75","18.0.4":"100.0.4896.75","18.1.0":"100.0.4896.127","18.2.0":"100.0.4896.143","18.2.1":"100.0.4896.143","18.2.2":"100.0.4896.143","18.2.3":"100.0.4896.143","18.2.4":"100.0.4896.160","18.3.0":"100.0.4896.160","18.3.1":"100.0.4896.160","18.3.2":"100.0.4896.160","18.3.3":"100.0.4896.160","18.3.4":"100.0.4896.160","18.3.5":"100.0.4896.160","18.3.6":"100.0.4896.160","18.3.7":"100.0.4896.160","18.3.8":"100.0.4896.160","18.3.9":"100.0.4896.160","18.3.11":"100.0.4896.160","18.3.12":"100.0.4896.160","18.3.13":"100.0.4896.160","18.3.14":"100.0.4896.160","18.3.15":"100.0.4896.160","19.0.0-alpha.1":"102.0.4962.3","19.0.0-alpha.2":"102.0.4971.0","19.0.0-alpha.3":"102.0.4971.0","19.0.0-alpha.4":"102.0.4989.0","19.0.0-alpha.5":"102.0.4989.0","19.0.0-beta.1":"102.0.4999.0","19.0.0-beta.2":"102.0.4999.0","19.0.0-beta.3":"102.0.4999.0","19.0.0-beta.4":"102.0.5005.27","19.0.0-beta.5":"102.0.5005.40","19.0.0-beta.6":"102.0.5005.40","19.0.0-beta.7":"102.0.5005.40","19.0.0-beta.8":"102.0.5005.49","19.0.0-nightly.20220202":"99.0.4767.0","19.0.0-nightly.20220203":"99.0.4767.0","19.0.0-nightly.20220204":"99.0.4767.0","19.0.0-nightly.20220207":"99.0.4767.0","19.0.0-nightly.20220208":"99.0.4767.0","19.0.0-nightly.20220209":"99.0.4767.0","19.0.0-nightly.20220308":"100.0.4894.0","19.0.0-nightly.20220309":"100.0.4894.0","19.0.0-nightly.20220310":"100.0.4894.0","19.0.0-nightly.20220311":"100.0.4894.0","19.0.0-nightly.20220314":"100.0.4894.0","19.0.0-nightly.20220315":"100.0.4894.0","19.0.0-nightly.20220316":"100.0.4894.0","19.0.0-nightly.20220317":"100.0.4894.0","19.0.0-nightly.20220318":"100.0.4894.0","19.0.0-nightly.20220321":"100.0.4894.0","19.0.0-nightly.20220322":"100.0.4894.0","19.0.0-nightly.20220323":"100.0.4894.0","19.0.0-nightly.20220324":"100.0.4894.0","19.0.0-nightly.20220325":"102.0.4961.0","19.0.0-nightly.20220328":"102.0.4962.3","19.0.0-nightly.20220329":"102.0.4962.3","19.0.0":"102.0.5005.61","19.0.1":"102.0.5005.61","19.0.2":"102.0.5005.63","19.0.3":"102.0.5005.63","19.0.4":"102.0.5005.63","19.0.5":"102.0.5005.115","19.0.6":"102.0.5005.115","19.0.7":"102.0.5005.134","19.0.8":"102.0.5005.148","19.0.9":"102.0.5005.167","19.0.10":"102.0.5005.167","19.0.11":"102.0.5005.167","19.0.12":"102.0.5005.167","19.0.13":"102.0.5005.167","19.0.14":"102.0.5005.167","19.0.15":"102.0.5005.167","19.0.16":"102.0.5005.167","19.0.17":"102.0.5005.167","19.1.0":"102.0.5005.167","19.1.1":"102.0.5005.167","19.1.2":"102.0.5005.167","19.1.3":"102.0.5005.167","19.1.4":"102.0.5005.167","19.1.5":"102.0.5005.167","19.1.6":"102.0.5005.167","19.1.7":"102.0.5005.167","19.1.8":"102.0.5005.167","19.1.9":"102.0.5005.167","20.0.0-alpha.1":"103.0.5044.0","20.0.0-alpha.2":"104.0.5073.0","20.0.0-alpha.3":"104.0.5073.0","20.0.0-alpha.4":"104.0.5073.0","20.0.0-alpha.5":"104.0.5073.0","20.0.0-alpha.6":"104.0.5073.0","20.0.0-alpha.7":"104.0.5073.0","20.0.0-beta.1":"104.0.5073.0","20.0.0-beta.2":"104.0.5073.0","20.0.0-beta.3":"104.0.5073.0","20.0.0-beta.4":"104.0.5073.0","20.0.0-beta.5":"104.0.5073.0","20.0.0-beta.6":"104.0.5073.0","20.0.0-beta.7":"104.0.5073.0","20.0.0-beta.8":"104.0.5073.0","20.0.0-beta.9":"104.0.5112.39","20.0.0-beta.10":"104.0.5112.48","20.0.0-beta.11":"104.0.5112.48","20.0.0-beta.12":"104.0.5112.48","20.0.0-beta.13":"104.0.5112.57","20.0.0-nightly.20220330":"102.0.4962.3","20.0.0-nightly.20220411":"102.0.4971.0","20.0.0-nightly.20220414":"102.0.4989.0","20.0.0-nightly.20220415":"102.0.4989.0","20.0.0-nightly.20220418":"102.0.4989.0","20.0.0-nightly.20220419":"102.0.4989.0","20.0.0-nightly.20220420":"102.0.4989.0","20.0.0-nightly.20220421":"102.0.4989.0","20.0.0-nightly.20220425":"102.0.4999.0","20.0.0-nightly.20220426":"102.0.4999.0","20.0.0-nightly.20220427":"102.0.4999.0","20.0.0-nightly.20220428":"102.0.4999.0","20.0.0-nightly.20220429":"102.0.4999.0","20.0.0-nightly.20220502":"102.0.4999.0","20.0.0-nightly.20220503":"102.0.4999.0","20.0.0-nightly.20220504":"102.0.4999.0","20.0.0-nightly.20220505":"102.0.4999.0","20.0.0-nightly.20220506":"102.0.4999.0","20.0.0-nightly.20220509":"102.0.4999.0","20.0.0-nightly.20220511":"102.0.4999.0","20.0.0-nightly.20220512":"102.0.4999.0","20.0.0-nightly.20220513":"102.0.4999.0","20.0.0-nightly.20220516":"102.0.4999.0","20.0.0-nightly.20220517":"102.0.4999.0","20.0.0-nightly.20220518":"103.0.5044.0","20.0.0-nightly.20220519":"103.0.5044.0","20.0.0-nightly.20220520":"103.0.5044.0","20.0.0-nightly.20220523":"103.0.5044.0","20.0.0-nightly.20220524":"103.0.5044.0","20.0.0":"104.0.5112.65","20.0.1":"104.0.5112.81","20.0.2":"104.0.5112.81","20.0.3":"104.0.5112.81","20.1.0":"104.0.5112.102","20.1.1":"104.0.5112.102","20.1.2":"104.0.5112.114","20.1.3":"104.0.5112.114","20.1.4":"104.0.5112.114","20.2.0":"104.0.5112.124","20.3.0":"104.0.5112.124","20.3.1":"104.0.5112.124","20.3.2":"104.0.5112.124","20.3.3":"104.0.5112.124","20.3.4":"104.0.5112.124","20.3.5":"104.0.5112.124","20.3.6":"104.0.5112.124","20.3.7":"104.0.5112.124","20.3.8":"104.0.5112.124","20.3.9":"104.0.5112.124","20.3.10":"104.0.5112.124","20.3.11":"104.0.5112.124","20.3.12":"104.0.5112.124","21.0.0-alpha.1":"105.0.5187.0","21.0.0-alpha.2":"105.0.5187.0","21.0.0-alpha.3":"105.0.5187.0","21.0.0-alpha.4":"105.0.5187.0","21.0.0-alpha.5":"105.0.5187.0","21.0.0-alpha.6":"106.0.5216.0","21.0.0-beta.1":"106.0.5216.0","21.0.0-beta.2":"106.0.5216.0","21.0.0-beta.3":"106.0.5216.0","21.0.0-beta.4":"106.0.5216.0","21.0.0-beta.5":"106.0.5216.0","21.0.0-beta.6":"106.0.5249.40","21.0.0-beta.7":"106.0.5249.40","21.0.0-beta.8":"106.0.5249.40","21.0.0-nightly.20220526":"103.0.5044.0","21.0.0-nightly.20220527":"103.0.5044.0","21.0.0-nightly.20220530":"103.0.5044.0","21.0.0-nightly.20220531":"103.0.5044.0","21.0.0-nightly.20220602":"104.0.5073.0","21.0.0-nightly.20220603":"104.0.5073.0","21.0.0-nightly.20220606":"104.0.5073.0","21.0.0-nightly.20220607":"104.0.5073.0","21.0.0-nightly.20220608":"104.0.5073.0","21.0.0-nightly.20220609":"104.0.5073.0","21.0.0-nightly.20220610":"104.0.5073.0","21.0.0-nightly.20220613":"104.0.5073.0","21.0.0-nightly.20220614":"104.0.5073.0","21.0.0-nightly.20220615":"104.0.5073.0","21.0.0-nightly.20220616":"104.0.5073.0","21.0.0-nightly.20220617":"104.0.5073.0","21.0.0-nightly.20220620":"104.0.5073.0","21.0.0-nightly.20220621":"104.0.5073.0","21.0.0-nightly.20220622":"104.0.5073.0","21.0.0-nightly.20220623":"104.0.5073.0","21.0.0-nightly.20220624":"104.0.5073.0","21.0.0-nightly.20220627":"104.0.5073.0","21.0.0-nightly.20220628":"105.0.5129.0","21.0.0-nightly.20220629":"105.0.5129.0","21.0.0-nightly.20220630":"105.0.5129.0","21.0.0-nightly.20220701":"105.0.5129.0","21.0.0-nightly.20220704":"105.0.5129.0","21.0.0-nightly.20220705":"105.0.5129.0","21.0.0-nightly.20220706":"105.0.5129.0","21.0.0-nightly.20220707":"105.0.5129.0","21.0.0-nightly.20220708":"105.0.5129.0","21.0.0-nightly.20220711":"105.0.5129.0","21.0.0-nightly.20220712":"105.0.5129.0","21.0.0-nightly.20220713":"105.0.5129.0","21.0.0-nightly.20220715":"105.0.5173.0","21.0.0-nightly.20220718":"105.0.5173.0","21.0.0-nightly.20220719":"105.0.5173.0","21.0.0-nightly.20220720":"105.0.5187.0","21.0.0-nightly.20220721":"105.0.5187.0","21.0.0-nightly.20220722":"105.0.5187.0","21.0.0-nightly.20220725":"105.0.5187.0","21.0.0-nightly.20220726":"105.0.5187.0","21.0.0-nightly.20220727":"105.0.5187.0","21.0.0-nightly.20220728":"105.0.5187.0","21.0.0-nightly.20220801":"105.0.5187.0","21.0.0-nightly.20220802":"105.0.5187.0","21.0.0":"106.0.5249.51","21.0.1":"106.0.5249.61","21.1.0":"106.0.5249.91","21.1.1":"106.0.5249.103","21.2.0":"106.0.5249.119","21.2.1":"106.0.5249.165","21.2.2":"106.0.5249.168","21.2.3":"106.0.5249.168","21.3.0":"106.0.5249.181","21.3.1":"106.0.5249.181","21.3.3":"106.0.5249.199","21.3.4":"106.0.5249.199","21.3.5":"106.0.5249.199","21.4.0":"106.0.5249.199","21.4.1":"106.0.5249.199","21.4.2":"106.0.5249.199","21.4.3":"106.0.5249.199","22.0.0-alpha.1":"107.0.5286.0","22.0.0-alpha.3":"108.0.5329.0","22.0.0-alpha.4":"108.0.5329.0","22.0.0-alpha.5":"108.0.5329.0","22.0.0-alpha.6":"108.0.5329.0","22.0.0-alpha.7":"108.0.5355.0","22.0.0-alpha.8":"108.0.5359.10","22.0.0-beta.1":"108.0.5359.10","22.0.0-beta.2":"108.0.5359.10","22.0.0-beta.3":"108.0.5359.10","22.0.0-beta.4":"108.0.5359.29","22.0.0-beta.5":"108.0.5359.40","22.0.0-beta.6":"108.0.5359.40","22.0.0-beta.7":"108.0.5359.48","22.0.0-beta.8":"108.0.5359.48","22.0.0-nightly.20220808":"105.0.5187.0","22.0.0-nightly.20220809":"105.0.5187.0","22.0.0-nightly.20220810":"105.0.5187.0","22.0.0-nightly.20220811":"105.0.5187.0","22.0.0-nightly.20220812":"105.0.5187.0","22.0.0-nightly.20220815":"105.0.5187.0","22.0.0-nightly.20220816":"105.0.5187.0","22.0.0-nightly.20220817":"105.0.5187.0","22.0.0-nightly.20220822":"106.0.5216.0","22.0.0-nightly.20220823":"106.0.5216.0","22.0.0-nightly.20220824":"106.0.5216.0","22.0.0-nightly.20220825":"106.0.5216.0","22.0.0-nightly.20220829":"106.0.5216.0","22.0.0-nightly.20220830":"106.0.5216.0","22.0.0-nightly.20220831":"106.0.5216.0","22.0.0-nightly.20220901":"106.0.5216.0","22.0.0-nightly.20220902":"106.0.5216.0","22.0.0-nightly.20220905":"106.0.5216.0","22.0.0-nightly.20220908":"107.0.5274.0","22.0.0-nightly.20220909":"107.0.5286.0","22.0.0-nightly.20220912":"107.0.5286.0","22.0.0-nightly.20220913":"107.0.5286.0","22.0.0-nightly.20220914":"107.0.5286.0","22.0.0-nightly.20220915":"107.0.5286.0","22.0.0-nightly.20220916":"107.0.5286.0","22.0.0-nightly.20220919":"107.0.5286.0","22.0.0-nightly.20220920":"107.0.5286.0","22.0.0-nightly.20220921":"107.0.5286.0","22.0.0-nightly.20220922":"107.0.5286.0","22.0.0-nightly.20220923":"107.0.5286.0","22.0.0-nightly.20220926":"107.0.5286.0","22.0.0-nightly.20220927":"107.0.5286.0","22.0.0-nightly.20220928":"107.0.5286.0","22.0.0":"108.0.5359.62","22.0.1":"108.0.5359.125","22.0.2":"108.0.5359.179","22.0.3":"108.0.5359.179","22.1.0":"108.0.5359.179","22.2.0":"108.0.5359.215","22.2.1":"108.0.5359.215","22.3.0":"108.0.5359.215","22.3.1":"108.0.5359.215","22.3.2":"108.0.5359.215","22.3.3":"108.0.5359.215","22.3.4":"108.0.5359.215","22.3.5":"108.0.5359.215","23.0.0-alpha.1":"110.0.5415.0","23.0.0-alpha.2":"110.0.5451.0","23.0.0-alpha.3":"110.0.5451.0","23.0.0-beta.1":"110.0.5478.5","23.0.0-beta.2":"110.0.5478.5","23.0.0-beta.3":"110.0.5478.5","23.0.0-beta.4":"110.0.5481.30","23.0.0-beta.5":"110.0.5481.38","23.0.0-beta.6":"110.0.5481.52","23.0.0-beta.8":"110.0.5481.52","23.0.0-nightly.20220929":"107.0.5286.0","23.0.0-nightly.20220930":"107.0.5286.0","23.0.0-nightly.20221003":"107.0.5286.0","23.0.0-nightly.20221004":"108.0.5329.0","23.0.0-nightly.20221005":"108.0.5329.0","23.0.0-nightly.20221006":"108.0.5329.0","23.0.0-nightly.20221007":"108.0.5329.0","23.0.0-nightly.20221010":"108.0.5329.0","23.0.0-nightly.20221011":"108.0.5329.0","23.0.0-nightly.20221012":"108.0.5329.0","23.0.0-nightly.20221013":"108.0.5329.0","23.0.0-nightly.20221014":"108.0.5329.0","23.0.0-nightly.20221017":"108.0.5329.0","23.0.0-nightly.20221018":"108.0.5355.0","23.0.0-nightly.20221019":"108.0.5355.0","23.0.0-nightly.20221020":"108.0.5355.0","23.0.0-nightly.20221021":"108.0.5355.0","23.0.0-nightly.20221024":"108.0.5355.0","23.0.0-nightly.20221026":"108.0.5355.0","23.0.0-nightly.20221027":"109.0.5382.0","23.0.0-nightly.20221028":"109.0.5382.0","23.0.0-nightly.20221031":"109.0.5382.0","23.0.0-nightly.20221101":"109.0.5382.0","23.0.0-nightly.20221102":"109.0.5382.0","23.0.0-nightly.20221103":"109.0.5382.0","23.0.0-nightly.20221104":"109.0.5382.0","23.0.0-nightly.20221107":"109.0.5382.0","23.0.0-nightly.20221108":"109.0.5382.0","23.0.0-nightly.20221109":"109.0.5382.0","23.0.0-nightly.20221110":"109.0.5382.0","23.0.0-nightly.20221111":"109.0.5382.0","23.0.0-nightly.20221114":"109.0.5382.0","23.0.0-nightly.20221115":"109.0.5382.0","23.0.0-nightly.20221116":"109.0.5382.0","23.0.0-nightly.20221117":"109.0.5382.0","23.0.0-nightly.20221118":"110.0.5415.0","23.0.0-nightly.20221121":"110.0.5415.0","23.0.0-nightly.20221122":"110.0.5415.0","23.0.0-nightly.20221123":"110.0.5415.0","23.0.0-nightly.20221124":"110.0.5415.0","23.0.0-nightly.20221125":"110.0.5415.0","23.0.0-nightly.20221128":"110.0.5415.0","23.0.0-nightly.20221129":"110.0.5415.0","23.0.0-nightly.20221130":"110.0.5415.0","23.0.0":"110.0.5481.77","23.1.0":"110.0.5481.100","23.1.1":"110.0.5481.104","23.1.2":"110.0.5481.177","23.1.3":"110.0.5481.179","23.1.4":"110.0.5481.192","23.2.0":"110.0.5481.192","23.2.1":"110.0.5481.208","24.0.0-alpha.1":"111.0.5560.0","24.0.0-alpha.2":"111.0.5560.0","24.0.0-alpha.3":"111.0.5560.0","24.0.0-alpha.4":"111.0.5560.0","24.0.0-alpha.5":"111.0.5560.0","24.0.0-alpha.6":"111.0.5560.0","24.0.0-alpha.7":"111.0.5560.0","24.0.0-beta.1":"111.0.5563.50","24.0.0-beta.2":"111.0.5563.50","24.0.0-beta.3":"112.0.5615.20","24.0.0-beta.4":"112.0.5615.20","24.0.0-beta.5":"112.0.5615.29","24.0.0-beta.6":"112.0.5615.39","24.0.0-beta.7":"112.0.5615.39","24.0.0-nightly.20221201":"110.0.5415.0","24.0.0-nightly.20221202":"110.0.5415.0","24.0.0-nightly.20221205":"110.0.5415.0","24.0.0-nightly.20221206":"110.0.5451.0","24.0.0-nightly.20221207":"110.0.5451.0","24.0.0-nightly.20221208":"110.0.5451.0","24.0.0-nightly.20221213":"110.0.5451.0","24.0.0-nightly.20221214":"110.0.5451.0","24.0.0-nightly.20221215":"110.0.5451.0","24.0.0-nightly.20221216":"110.0.5451.0","24.0.0-nightly.20230109":"111.0.5518.0","24.0.0-nightly.20230110":"111.0.5518.0","24.0.0-nightly.20230111":"111.0.5518.0","24.0.0-nightly.20230112":"111.0.5518.0","24.0.0-nightly.20230113":"111.0.5518.0","24.0.0-nightly.20230116":"111.0.5518.0","24.0.0-nightly.20230117":"111.0.5518.0","24.0.0-nightly.20230118":"111.0.5518.0","24.0.0-nightly.20230119":"111.0.5518.0","24.0.0-nightly.20230120":"111.0.5518.0","24.0.0-nightly.20230123":"111.0.5518.0","24.0.0-nightly.20230124":"111.0.5518.0","24.0.0-nightly.20230125":"111.0.5518.0","24.0.0-nightly.20230126":"111.0.5518.0","24.0.0-nightly.20230127":"111.0.5518.0","24.0.0-nightly.20230131":"111.0.5518.0","24.0.0-nightly.20230201":"111.0.5518.0","24.0.0-nightly.20230202":"111.0.5518.0","24.0.0-nightly.20230203":"111.0.5560.0","24.0.0-nightly.20230206":"111.0.5560.0","24.0.0-nightly.20230207":"111.0.5560.0","24.0.0-nightly.20230208":"111.0.5560.0","24.0.0-nightly.20230209":"111.0.5560.0","25.0.0-nightly.20230210":"111.0.5560.0","25.0.0-nightly.20230214":"111.0.5560.0","25.0.0-nightly.20230215":"111.0.5560.0","25.0.0-nightly.20230216":"111.0.5560.0","25.0.0-nightly.20230217":"111.0.5560.0","25.0.0-nightly.20230220":"111.0.5560.0","25.0.0-nightly.20230221":"111.0.5560.0","25.0.0-nightly.20230222":"111.0.5560.0","25.0.0-nightly.20230223":"111.0.5560.0","25.0.0-nightly.20230224":"111.0.5560.0","25.0.0-nightly.20230227":"111.0.5560.0","25.0.0-nightly.20230228":"111.0.5560.0","25.0.0-nightly.20230301":"111.0.5560.0","25.0.0-nightly.20230302":"111.0.5560.0","25.0.0-nightly.20230303":"111.0.5560.0","25.0.0-nightly.20230306":"111.0.5560.0","25.0.0-nightly.20230307":"111.0.5560.0","25.0.0-nightly.20230308":"111.0.5560.0","25.0.0-nightly.20230309":"111.0.5560.0","25.0.0-nightly.20230310":"111.0.5560.0","25.0.0-nightly.20230314":"113.0.5636.0","25.0.0-nightly.20230315":"113.0.5651.0","25.0.0-nightly.20230317":"113.0.5653.0","25.0.0-nightly.20230320":"113.0.5660.0","25.0.0-nightly.20230321":"113.0.5664.0","25.0.0-nightly.20230322":"113.0.5666.0","25.0.0-nightly.20230323":"113.0.5668.0","25.0.0-nightly.20230324":"113.0.5670.0","25.0.0-nightly.20230327":"113.0.5670.0","25.0.0-nightly.20230328":"113.0.5670.0","25.0.0-nightly.20230329":"113.0.5670.0","25.0.0-nightly.20230330":"113.0.5670.0"}
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json
    index 2adb0c827e2ed1..4b13471d47f6e5 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "electron-to-chromium",
    -  "version": "1.4.328",
    +  "version": "1.4.347",
       "description": "Provides a list of electron-to-chromium version mappings",
       "main": "index.js",
       "files": [
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js
    index b46e698ee6a9e6..c08428d3e7e783 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.js
    @@ -110,5 +110,6 @@ module.exports = {
     	"22.3": "108",
     	"23.0": "110",
     	"23.1": "110",
    -	"24.0": "111"
    +	"23.2": "110",
    +	"24.0": "112"
     };
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json
    index 6c716047d0cf35..506dde9c79f6fc 100644
    --- a/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json
    +++ b/tools/node_modules/eslint/node_modules/electron-to-chromium/versions.json
    @@ -1 +1 @@
    -{"0.20":"39","0.21":"41","0.22":"41","0.23":"41","0.24":"41","0.25":"42","0.26":"42","0.27":"43","0.28":"43","0.29":"43","0.30":"44","0.31":"45","0.32":"45","0.33":"45","0.34":"45","0.35":"45","0.36":"47","0.37":"49","1.0":"49","1.1":"50","1.2":"51","1.3":"52","1.4":"53","1.5":"54","1.6":"56","1.7":"58","1.8":"59","2.0":"61","2.1":"61","3.0":"66","3.1":"66","4.0":"69","4.1":"69","4.2":"69","5.0":"73","6.0":"76","6.1":"76","7.0":"78","7.1":"78","7.2":"78","7.3":"78","8.0":"80","8.1":"80","8.2":"80","8.3":"80","8.4":"80","8.5":"80","9.0":"83","9.1":"83","9.2":"83","9.3":"83","9.4":"83","10.0":"85","10.1":"85","10.2":"85","10.3":"85","10.4":"85","11.0":"87","11.1":"87","11.2":"87","11.3":"87","11.4":"87","11.5":"87","12.0":"89","12.1":"89","12.2":"89","13.0":"91","13.1":"91","13.2":"91","13.3":"91","13.4":"91","13.5":"91","13.6":"91","14.0":"93","14.1":"93","14.2":"93","15.0":"94","15.1":"94","15.2":"94","15.3":"94","15.4":"94","15.5":"94","16.0":"96","16.1":"96","16.2":"96","17.0":"98","17.1":"98","17.2":"98","17.3":"98","17.4":"98","18.0":"100","18.1":"100","18.2":"100","18.3":"100","19.0":"102","19.1":"102","20.0":"104","20.1":"104","20.2":"104","20.3":"104","21.0":"106","21.1":"106","21.2":"106","21.3":"106","21.4":"106","22.0":"108","22.1":"108","22.2":"108","22.3":"108","23.0":"110","23.1":"110","24.0":"111"}
    \ No newline at end of file
    +{"0.20":"39","0.21":"41","0.22":"41","0.23":"41","0.24":"41","0.25":"42","0.26":"42","0.27":"43","0.28":"43","0.29":"43","0.30":"44","0.31":"45","0.32":"45","0.33":"45","0.34":"45","0.35":"45","0.36":"47","0.37":"49","1.0":"49","1.1":"50","1.2":"51","1.3":"52","1.4":"53","1.5":"54","1.6":"56","1.7":"58","1.8":"59","2.0":"61","2.1":"61","3.0":"66","3.1":"66","4.0":"69","4.1":"69","4.2":"69","5.0":"73","6.0":"76","6.1":"76","7.0":"78","7.1":"78","7.2":"78","7.3":"78","8.0":"80","8.1":"80","8.2":"80","8.3":"80","8.4":"80","8.5":"80","9.0":"83","9.1":"83","9.2":"83","9.3":"83","9.4":"83","10.0":"85","10.1":"85","10.2":"85","10.3":"85","10.4":"85","11.0":"87","11.1":"87","11.2":"87","11.3":"87","11.4":"87","11.5":"87","12.0":"89","12.1":"89","12.2":"89","13.0":"91","13.1":"91","13.2":"91","13.3":"91","13.4":"91","13.5":"91","13.6":"91","14.0":"93","14.1":"93","14.2":"93","15.0":"94","15.1":"94","15.2":"94","15.3":"94","15.4":"94","15.5":"94","16.0":"96","16.1":"96","16.2":"96","17.0":"98","17.1":"98","17.2":"98","17.3":"98","17.4":"98","18.0":"100","18.1":"100","18.2":"100","18.3":"100","19.0":"102","19.1":"102","20.0":"104","20.1":"104","20.2":"104","20.3":"104","21.0":"106","21.1":"106","21.2":"106","21.3":"106","21.4":"106","22.0":"108","22.1":"108","22.2":"108","22.3":"108","23.0":"110","23.1":"110","23.2":"110","24.0":"112"}
    \ No newline at end of file
    diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/index.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/index.js
    index 995772aae359de..2841330a0673e4 100644
    --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/index.js
    +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/index.js
    @@ -110,8 +110,8 @@ const index = {
         'valid-types': _validTypes.default
       }
     };
    -for (const [config, warnOrError] of [['recommended', 'warn'], ['recommended-error', 'error']]) {
    -  index.configs[config] = {
    +const createRecommendedRuleset = warnOrError => {
    +  return {
         plugins: ['jsdoc'],
         rules: {
           'jsdoc/check-access': warnOrError,
    @@ -166,7 +166,24 @@ for (const [config, warnOrError] of [['recommended', 'warn'], ['recommended-erro
           'jsdoc/valid-types': warnOrError
         }
       };
    -}
    +};
    +const createRecommendedTypeScriptRuleset = warnOrError => {
    +  const ruleset = createRecommendedRuleset(warnOrError);
    +  return {
    +    ...ruleset,
    +    rules: {
    +      ...ruleset.rules,
    +      'jsdoc/no-types': warnOrError,
    +      'jsdoc/require-param-type': 'off',
    +      'jsdoc/require-property-type': 'off',
    +      'jsdoc/require-returns-type': 'off'
    +    }
    +  };
    +};
    +index.configs.recommended = createRecommendedRuleset('warn');
    +index.configs['recommended-error'] = createRecommendedRuleset('error');
    +index.configs['recommended-typescript'] = createRecommendedTypeScriptRuleset('warn');
    +index.configs['recommended-typescript-error'] = createRecommendedTypeScriptRuleset('error');
     var _default = index;
     exports.default = _default;
     module.exports = exports.default;
    diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js
    index 1539bd49818dfb..591c0daa766666 100644
    --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js
    +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/dist/iterateJsdoc.js
    @@ -652,7 +652,7 @@ const getUtils = (node, jsdoc, jsdocNode, settings, report, context, iteratingAl
       return utils;
     };
     const getSettings = context => {
    -  var _context$settings$jsd, _context$settings$jsd2, _context$settings$jsd3, _context$settings$jsd4, _context$settings$jsd5, _context$settings$jsd6, _context$settings$jsd7, _context$settings$jsd8, _context$settings$jsd9, _context$settings$jsd10, _context$settings$jsd11, _context$settings$jsd12, _context$settings$jsd13, _context$parserPath, _context$settings$jsd14;
    +  var _context$settings$jsd, _context$settings$jsd2, _context$settings$jsd3, _context$settings$jsd4, _context$settings$jsd5, _context$settings$jsd6, _context$settings$jsd7, _context$settings$jsd8, _context$settings$jsd9, _context$settings$jsd10, _context$settings$jsd11, _context$settings$jsd12, _context$settings$jsd13, _context$parserPath, _context$languageOpti, _context$languageOpti2, _context$languageOpti3, _context$languageOpti4, _context$settings$jsd14;
       /* eslint-disable canonical/sort-keys */
       const settings = {
         // All rules
    @@ -675,12 +675,7 @@ const getSettings = context => {
         // `require-param-type`, `require-param-description`
         exemptDestructuredRootsFromChecks: (_context$settings$jsd12 = context.settings.jsdoc) === null || _context$settings$jsd12 === void 0 ? void 0 : _context$settings$jsd12.exemptDestructuredRootsFromChecks,
         // Many rules, e.g., `check-tag-names`
    -    mode: ((_context$settings$jsd13 = context.settings.jsdoc) === null || _context$settings$jsd13 === void 0 ? void 0 : _context$settings$jsd13.mode) ?? ((_context$parserPath = context.parserPath) !== null && _context$parserPath !== void 0 && _context$parserPath.includes('@typescript-eslint') ?
    -    // Todo: Waiting for TS parser to label itself:
    -    // https://github.com/eslint/eslint/pull/16944
    -    // https://github.com/typescript-eslint/typescript-eslint/issues/6541
    -    // || context.languageOptions?.parser?.meta?.name?.includes('typescript') ?
    -    'typescript' : 'jsdoc'),
    +    mode: ((_context$settings$jsd13 = context.settings.jsdoc) === null || _context$settings$jsd13 === void 0 ? void 0 : _context$settings$jsd13.mode) ?? ((_context$parserPath = context.parserPath) !== null && _context$parserPath !== void 0 && _context$parserPath.includes('@typescript-eslint') || (_context$languageOpti = context.languageOptions) !== null && _context$languageOpti !== void 0 && (_context$languageOpti2 = _context$languageOpti.parser) !== null && _context$languageOpti2 !== void 0 && (_context$languageOpti3 = _context$languageOpti2.meta) !== null && _context$languageOpti3 !== void 0 && (_context$languageOpti4 = _context$languageOpti3.name) !== null && _context$languageOpti4 !== void 0 && _context$languageOpti4.includes('typescript') ? 'typescript' : 'jsdoc'),
         // Many rules
         contexts: (_context$settings$jsd14 = context.settings.jsdoc) === null || _context$settings$jsd14 === void 0 ? void 0 : _context$settings$jsd14.contexts
       };
    diff --git a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json
    index ee27f4454ea6f4..43346111a0c3b0 100644
    --- a/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json
    +++ b/tools/node_modules/eslint/node_modules/eslint-plugin-jsdoc/package.json
    @@ -5,50 +5,50 @@
         "url": "http://gajus.com"
       },
       "dependencies": {
    -    "@es-joy/jsdoccomment": "~0.36.1",
    +    "@es-joy/jsdoccomment": "~0.37.0",
         "comment-parser": "1.3.1",
         "debug": "^4.3.4",
         "escape-string-regexp": "^4.0.0",
    -    "esquery": "^1.4.0",
    +    "esquery": "^1.5.0",
         "semver": "^7.3.8",
         "spdx-expression-parse": "^3.0.1"
       },
       "description": "JSDoc linting rules for ESLint.",
       "devDependencies": {
    -    "@babel/cli": "^7.20.7",
    -    "@babel/core": "^7.20.12",
    -    "@babel/eslint-parser": "^7.19.1",
    +    "@babel/cli": "^7.21.0",
    +    "@babel/core": "^7.21.3",
    +    "@babel/eslint-parser": "^7.21.3",
         "@babel/node": "^7.20.7",
         "@babel/plugin-syntax-class-properties": "^7.12.13",
    -    "@babel/plugin-transform-flow-strip-types": "^7.19.0",
    +    "@babel/plugin-transform-flow-strip-types": "^7.21.0",
         "@babel/preset-env": "^7.20.2",
    -    "@babel/register": "^7.18.9",
    +    "@babel/register": "^7.21.0",
         "@es-joy/jsdoc-eslint-parser": "^0.17.0",
         "@hkdobrev/run-if-changed": "^0.3.1",
         "@semantic-release/commit-analyzer": "^9.0.2",
         "@semantic-release/github": "^8.0.7",
         "@semantic-release/npm": "^9.0.2",
    -    "@typescript-eslint/parser": "^5.48.2",
    +    "@typescript-eslint/parser": "^5.55.0",
         "babel-plugin-add-module-exports": "^1.0.4",
         "babel-plugin-istanbul": "^6.1.1",
         "camelcase": "^6.3.0",
         "chai": "^4.3.7",
         "cross-env": "^7.0.3",
         "decamelize": "^5.0.1",
    -    "eslint": "^8.32.0",
    +    "eslint": "^8.36.0",
         "eslint-config-canonical": "~33.0.1",
         "gitdown": "^3.1.5",
         "glob": "^8.1.0",
         "husky": "^8.0.3",
    -    "jsdoc-type-pratt-parser": "^3.1.0",
    -    "lint-staged": "^13.1.0",
    +    "jsdoc-type-pratt-parser": "^4.0.0",
    +    "lint-staged": "^13.2.0",
         "lodash.defaultsdeep": "^4.6.1",
         "mocha": "^10.2.0",
         "nyc": "^15.1.0",
         "open-editor": "^3.0.0",
    -    "rimraf": "^4.1.1",
    -    "semantic-release": "^20.0.2",
    -    "typescript": "^4.9.4"
    +    "rimraf": "^4.4.0",
    +    "semantic-release": "^20.1.1",
    +    "typescript": "^4.9.5"
       },
       "engines": {
         "node": "^14 || ^16 || ^17 || ^18 || ^19"
    @@ -120,5 +120,5 @@
         "test-cov": "cross-env TIMING=1 nyc --reporter text npm run test-no-cov",
         "test-index": "npm run test-no-cov -- test/rules/index.js"
       },
    -  "version": "40.0.1"
    +  "version": "40.1.0"
     }
    diff --git a/tools/node_modules/eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs b/tools/node_modules/eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs
    index 9d47fd7517bce0..37573df559f1f6 100644
    --- a/tools/node_modules/eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs
    +++ b/tools/node_modules/eslint/node_modules/eslint-visitor-keys/dist/eslint-visitor-keys.cjs
    @@ -10,14 +10,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
      * @type {VisitorKeys}
      */
     const KEYS = {
    -    AssignmentExpression: [
    -        "left",
    -        "right"
    -    ],
    -    AssignmentPattern: [
    -        "left",
    -        "right"
    -    ],
         ArrayExpression: [
             "elements"
         ],
    @@ -28,16 +20,24 @@ const KEYS = {
             "params",
             "body"
         ],
    +    AssignmentExpression: [
    +        "left",
    +        "right"
    +    ],
    +    AssignmentPattern: [
    +        "left",
    +        "right"
    +    ],
         AwaitExpression: [
             "argument"
         ],
    -    BlockStatement: [
    -        "body"
    -    ],
         BinaryExpression: [
             "left",
             "right"
         ],
    +    BlockStatement: [
    +        "body"
    +    ],
         BreakStatement: [
             "label"
         ],
    @@ -79,6 +79,12 @@ const KEYS = {
             "test"
         ],
         EmptyStatement: [],
    +    ExperimentalRestProperty: [
    +        "argument"
    +    ],
    +    ExperimentalSpreadProperty: [
    +        "argument"
    +    ],
         ExportAllDeclaration: [
             "exported",
             "source"
    @@ -98,18 +104,6 @@ const KEYS = {
         ExpressionStatement: [
             "expression"
         ],
    -    ExperimentalRestProperty: [
    -        "argument"
    -    ],
    -    ExperimentalSpreadProperty: [
    -        "argument"
    -    ],
    -    ForStatement: [
    -        "init",
    -        "test",
    -        "update",
    -        "body"
    -    ],
         ForInStatement: [
             "left",
             "right",
    @@ -120,6 +114,12 @@ const KEYS = {
             "right",
             "body"
         ],
    +    ForStatement: [
    +        "init",
    +        "test",
    +        "update",
    +        "body"
    +    ],
         FunctionDeclaration: [
             "id",
             "params",
    @@ -160,6 +160,7 @@ const KEYS = {
         JSXClosingElement: [
             "name"
         ],
    +    JSXClosingFragment: [],
         JSXElement: [
             "openingElement",
             "children",
    @@ -169,6 +170,11 @@ const KEYS = {
         JSXExpressionContainer: [
             "expression"
         ],
    +    JSXFragment: [
    +        "openingFragment",
    +        "children",
    +        "closingFragment"
    +    ],
         JSXIdentifier: [],
         JSXMemberExpression: [
             "object",
    @@ -182,22 +188,19 @@ const KEYS = {
             "name",
             "attributes"
         ],
    +    JSXOpeningFragment: [],
         JSXSpreadAttribute: [
             "argument"
         ],
    -    JSXText: [],
    -    JSXFragment: [
    -        "openingFragment",
    -        "children",
    -        "closingFragment"
    +    JSXSpreadChild: [
    +        "expression"
         ],
    -    JSXClosingFragment: [],
    -    JSXOpeningFragment: [],
    -    Literal: [],
    +    JSXText: [],
         LabeledStatement: [
             "label",
             "body"
         ],
    +    Literal: [],
         LogicalExpression: [
             "left",
             "right"
    @@ -252,14 +255,14 @@ const KEYS = {
             "body"
         ],
         Super: [],
    -    SwitchStatement: [
    -        "discriminant",
    -        "cases"
    -    ],
         SwitchCase: [
             "test",
             "consequent"
         ],
    +    SwitchStatement: [
    +        "discriminant",
    +        "cases"
    +    ],
         TaggedTemplateExpression: [
             "tag",
             "quasi"
    @@ -379,4 +382,3 @@ function unionWith(additionalKeys) {
     exports.KEYS = KEYS;
     exports.getKeys = getKeys;
     exports.unionWith = unionWith;
    -//# sourceMappingURL=eslint-visitor-keys.cjs.map
    diff --git a/tools/node_modules/eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js b/tools/node_modules/eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js
    index d456d648db6845..7e52686974cbfa 100644
    --- a/tools/node_modules/eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js
    +++ b/tools/node_modules/eslint/node_modules/eslint-visitor-keys/lib/visitor-keys.js
    @@ -6,14 +6,6 @@
      * @type {VisitorKeys}
      */
     const KEYS = {
    -    AssignmentExpression: [
    -        "left",
    -        "right"
    -    ],
    -    AssignmentPattern: [
    -        "left",
    -        "right"
    -    ],
         ArrayExpression: [
             "elements"
         ],
    @@ -24,16 +16,24 @@ const KEYS = {
             "params",
             "body"
         ],
    +    AssignmentExpression: [
    +        "left",
    +        "right"
    +    ],
    +    AssignmentPattern: [
    +        "left",
    +        "right"
    +    ],
         AwaitExpression: [
             "argument"
         ],
    -    BlockStatement: [
    -        "body"
    -    ],
         BinaryExpression: [
             "left",
             "right"
         ],
    +    BlockStatement: [
    +        "body"
    +    ],
         BreakStatement: [
             "label"
         ],
    @@ -75,6 +75,12 @@ const KEYS = {
             "test"
         ],
         EmptyStatement: [],
    +    ExperimentalRestProperty: [
    +        "argument"
    +    ],
    +    ExperimentalSpreadProperty: [
    +        "argument"
    +    ],
         ExportAllDeclaration: [
             "exported",
             "source"
    @@ -94,18 +100,6 @@ const KEYS = {
         ExpressionStatement: [
             "expression"
         ],
    -    ExperimentalRestProperty: [
    -        "argument"
    -    ],
    -    ExperimentalSpreadProperty: [
    -        "argument"
    -    ],
    -    ForStatement: [
    -        "init",
    -        "test",
    -        "update",
    -        "body"
    -    ],
         ForInStatement: [
             "left",
             "right",
    @@ -116,6 +110,12 @@ const KEYS = {
             "right",
             "body"
         ],
    +    ForStatement: [
    +        "init",
    +        "test",
    +        "update",
    +        "body"
    +    ],
         FunctionDeclaration: [
             "id",
             "params",
    @@ -156,6 +156,7 @@ const KEYS = {
         JSXClosingElement: [
             "name"
         ],
    +    JSXClosingFragment: [],
         JSXElement: [
             "openingElement",
             "children",
    @@ -165,6 +166,11 @@ const KEYS = {
         JSXExpressionContainer: [
             "expression"
         ],
    +    JSXFragment: [
    +        "openingFragment",
    +        "children",
    +        "closingFragment"
    +    ],
         JSXIdentifier: [],
         JSXMemberExpression: [
             "object",
    @@ -178,22 +184,19 @@ const KEYS = {
             "name",
             "attributes"
         ],
    +    JSXOpeningFragment: [],
         JSXSpreadAttribute: [
             "argument"
         ],
    -    JSXText: [],
    -    JSXFragment: [
    -        "openingFragment",
    -        "children",
    -        "closingFragment"
    +    JSXSpreadChild: [
    +        "expression"
         ],
    -    JSXClosingFragment: [],
    -    JSXOpeningFragment: [],
    -    Literal: [],
    +    JSXText: [],
         LabeledStatement: [
             "label",
             "body"
         ],
    +    Literal: [],
         LogicalExpression: [
             "left",
             "right"
    @@ -248,14 +251,14 @@ const KEYS = {
             "body"
         ],
         Super: [],
    -    SwitchStatement: [
    -        "discriminant",
    -        "cases"
    -    ],
         SwitchCase: [
             "test",
             "consequent"
         ],
    +    SwitchStatement: [
    +        "discriminant",
    +        "cases"
    +    ],
         TaggedTemplateExpression: [
             "tag",
             "quasi"
    diff --git a/tools/node_modules/eslint/node_modules/eslint-visitor-keys/package.json b/tools/node_modules/eslint/node_modules/eslint-visitor-keys/package.json
    index 5368ad5a14ccd7..f4e3f05bb42d99 100644
    --- a/tools/node_modules/eslint/node_modules/eslint-visitor-keys/package.json
    +++ b/tools/node_modules/eslint/node_modules/eslint-visitor-keys/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "eslint-visitor-keys",
    -  "version": "3.3.0",
    +  "version": "3.4.0",
       "description": "Constants and utilities about visitor keys to traverse AST.",
       "type": "module",
       "main": "dist/eslint-visitor-keys.cjs",
    @@ -25,24 +25,33 @@
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
       "devDependencies": {
    -    "c8": "^7.7.3",
    +    "@types/estree": "^0.0.51",
    +    "@types/estree-jsx": "^0.0.1",
    +    "@typescript-eslint/parser": "^5.14.0",
    +    "c8": "^7.11.0",
    +    "chai": "^4.3.6",
         "eslint": "^7.29.0",
         "eslint-config-eslint": "^7.0.0",
         "eslint-plugin-jsdoc": "^35.4.0",
         "eslint-plugin-node": "^11.1.0",
         "eslint-release": "^3.2.0",
    -    "mocha": "^9.0.1",
    +    "esquery": "^1.4.0",
    +    "json-diff": "^0.7.3",
    +    "mocha": "^9.2.1",
         "opener": "^1.5.2",
    -    "rollup": "^2.52.1",
    +    "rollup": "^2.70.0",
         "tsd": "^0.19.1",
    -    "typescript": "^4.5.5"
    +    "typescript": "^4.6.2"
       },
       "scripts": {
         "prepare": "npm run build",
    -    "build": "rollup -c && npm run tsc",
    +    "bundle": "rollup -c",
    +    "build": "npm run bundle && npm run tsc",
    +    "build:debug": "npm run bundle -- -m && npm run tsc",
         "lint": "eslint .",
         "tsc": "tsc",
         "tsd": "tsd",
    +    "build-keys": "node tools/build-keys-from-ts",
         "test": "mocha tests/lib/**/*.cjs && c8 mocha tests/lib/**/*.js && npm run tsd",
         "coverage": "c8 report --reporter lcov && opener coverage/lcov-report/index.html",
         "generate-release": "eslint-generate-release",
    @@ -52,6 +61,7 @@
         "publish-release": "eslint-publish-release"
       },
       "repository": "eslint/eslint-visitor-keys",
    +  "funding": "https://opencollective.com/eslint",
       "keywords": [],
       "author": "Toru Nagashima (https://github.com/mysticatea)",
       "license": "Apache-2.0",
    diff --git a/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs b/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs
    index 9ace5376c158fc..a5bcfb5f43508a 100644
    --- a/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs
    +++ b/tools/node_modules/eslint/node_modules/espree/dist/espree.cjs
    @@ -760,7 +760,7 @@ var espree = () => Parser => {
         };
     };
     
    -const version$1 = "9.5.0";
    +const version$1 = "9.5.1";
     
     /**
      * @fileoverview Main Espree file that converts Acorn into Esprima output.
    @@ -937,4 +937,3 @@ exports.parse = parse;
     exports.supportedEcmaVersions = supportedEcmaVersions;
     exports.tokenize = tokenize;
     exports.version = version;
    -//# sourceMappingURL=espree.cjs.map
    diff --git a/tools/node_modules/eslint/node_modules/espree/lib/version.js b/tools/node_modules/eslint/node_modules/espree/lib/version.js
    index 597a13f1719e6f..b2e5a7a2d59999 100644
    --- a/tools/node_modules/eslint/node_modules/espree/lib/version.js
    +++ b/tools/node_modules/eslint/node_modules/espree/lib/version.js
    @@ -1,3 +1,3 @@
    -const version = "9.5.0";
    +const version = "9.5.1";
     
     export default version;
    diff --git a/tools/node_modules/eslint/node_modules/espree/package.json b/tools/node_modules/eslint/node_modules/espree/package.json
    index c64e48743f8f9f..67efc8d1ddc113 100644
    --- a/tools/node_modules/eslint/node_modules/espree/package.json
    +++ b/tools/node_modules/eslint/node_modules/espree/package.json
    @@ -16,7 +16,7 @@
         ],
         "./package.json": "./package.json"
       },
    -  "version": "9.5.0",
    +  "version": "9.5.1",
       "files": [
         "lib",
         "dist/espree.cjs",
    @@ -34,7 +34,7 @@
       "dependencies": {
         "acorn": "^8.8.0",
         "acorn-jsx": "^5.3.2",
    -    "eslint-visitor-keys": "^3.3.0"
    +    "eslint-visitor-keys": "^3.4.0"
       },
       "devDependencies": {
         "@rollup/plugin-commonjs": "^17.1.0",
    @@ -48,10 +48,12 @@
         "eslint-plugin-node": "^11.1.0",
         "eslint-release": "^3.2.0",
         "esprima-fb": "^8001.2001.0-dev-harmony-fb",
    +    "lint-staged": "^13.2.0",
         "mocha": "^9.2.2",
         "npm-run-all": "^4.1.5",
         "rollup": "^2.41.2",
    -    "shelljs": "^0.3.0"
    +    "shelljs": "^0.3.0",
    +    "yorkie": "^2.0.0"
       },
       "keywords": [
         "ast",
    @@ -61,6 +63,9 @@
         "syntax",
         "acorn"
       ],
    +  "gitHooks": {
    +    "pre-commit": "lint-staged"
    +  },
       "scripts": {
         "unit": "npm-run-all -s unit:*",
         "unit:esm": "c8 mocha --color --reporter progress --timeout 30000 'tests/lib/**/*.js'",
    @@ -69,6 +74,7 @@
         "lint": "eslint .",
         "fixlint": "npm run lint -- --fix",
         "build": "rollup -c rollup.config.js",
    +    "build:debug": "npm run build -- -m",
         "update-version": "node tools/update-version.js",
         "pretest": "npm run build",
         "prepublishOnly": "npm run update-version && npm run build",
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/Base/index.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/Base/index.js
    index 387cb603666646..c04dc08f5fd3c4 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/Base/index.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/Base/index.js
    @@ -107,13 +107,12 @@ class HashContainer extends _ContainerBase.Container {
                     i.l = e;
                     return this.i;
                 }
    -            s = {
    +            this.g[t] = s = {
                     u: t,
                     l: e,
                     L: this._,
                     B: this.h
                 };
    -            this.g[t] = s;
             }
             if (this.i === 0) {
                 this.p = s;
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashMap.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashMap.js
    index 7bbae243c49b3b..c828cfe8b6654a 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashMap.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashMap.js
    @@ -108,14 +108,12 @@ class HashMap extends _Base.HashContainer {
                 r = r.B;
             }
         }
    -    [Symbol.iterator]() {
    -        return function*() {
    -            let t = this.p;
    -            while (t !== this.h) {
    -                yield [ t.u, t.l ];
    -                t = t.B;
    -            }
    -        }.bind(this)();
    +    * [Symbol.iterator]() {
    +        let t = this.p;
    +        while (t !== this.h) {
    +            yield [ t.u, t.l ];
    +            t = t.B;
    +        }
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashSet.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashSet.js
    index 6c75f33865455c..dd90edae173b26 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashSet.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/HashContainer/HashSet.js
    @@ -77,14 +77,12 @@ class HashSet extends _Base.HashContainer {
                 r = r.B;
             }
         }
    -    [Symbol.iterator]() {
    -        return function*() {
    -            let t = this.p;
    -            while (t !== this.h) {
    -                yield t.u;
    -                t = t.B;
    -            }
    -        }.bind(this)();
    +    * [Symbol.iterator]() {
    +        let t = this.p;
    +        while (t !== this.h) {
    +            yield t.u;
    +            t = t.B;
    +        }
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Deque.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Deque.js
    index 924b1b2b3c58ca..44e5d6ece7dcf6 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Deque.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Deque.js
    @@ -10,6 +10,49 @@ var _Base = _interopRequireDefault(require("./Base"));
     
     var _RandomIterator = require("./Base/RandomIterator");
     
    +var Math = _interopRequireWildcard(require("../../utils/math"));
    +
    +function _getRequireWildcardCache(t) {
    +    if (typeof WeakMap !== "function") return null;
    +    var i = new WeakMap;
    +    var s = new WeakMap;
    +    return (_getRequireWildcardCache = function(t) {
    +        return t ? s : i;
    +    })(t);
    +}
    +
    +function _interopRequireWildcard(t, i) {
    +    if (!i && t && t.t) {
    +        return t;
    +    }
    +    if (t === null || typeof t !== "object" && typeof t !== "function") {
    +        return {
    +            default: t
    +        };
    +    }
    +    var s = _getRequireWildcardCache(i);
    +    if (s && s.has(t)) {
    +        return s.get(t);
    +    }
    +    var e = {};
    +    var h = Object.defineProperty && Object.getOwnPropertyDescriptor;
    +    for (var r in t) {
    +        if (r !== "default" && Object.prototype.hasOwnProperty.call(t, r)) {
    +            var n = h ? Object.getOwnPropertyDescriptor(t, r) : null;
    +            if (n && (n.get || n.set)) {
    +                Object.defineProperty(e, r, n);
    +            } else {
    +                e[r] = t[r];
    +            }
    +        }
    +    }
    +    e.default = t;
    +    if (s) {
    +        s.set(t, e);
    +    }
    +    return e;
    +}
    +
     function _interopRequireDefault(t) {
         return t && t.t ? t : {
             default: t
    @@ -30,69 +73,72 @@ class Deque extends _Base.default {
         constructor(t = [], i = 1 << 12) {
             super();
             this.j = 0;
    -        this.D = 0;
             this.R = 0;
             this.N = 0;
    +        this.D = 0;
             this.P = 0;
    -        this.A = [];
    +        this.W = [];
             const s = (() => {
                 if (typeof t.length === "number") return t.length;
                 if (typeof t.size === "number") return t.size;
                 if (typeof t.size === "function") return t.size();
                 throw new TypeError("Cannot get the length or size of the container");
             })();
    -        this.F = i;
    -        this.P = Math.max(Math.ceil(s / this.F), 1);
    +        this.O = i;
    +        this.P = Math.ceil(s, this.O) || 1;
             for (let t = 0; t < this.P; ++t) {
    -            this.A.push(new Array(this.F));
    +            this.W.push(new Array(this.O));
             }
    -        const h = Math.ceil(s / this.F);
    -        this.j = this.R = (this.P >> 1) - (h >> 1);
    -        this.D = this.N = this.F - s % this.F >> 1;
    -        const e = this;
    +        const e = Math.ceil(s, this.O);
    +        this.j = this.N = (this.P >> 1) - (e >> 1);
    +        this.R = this.D = this.O - s % this.O >> 1;
    +        const h = this;
             t.forEach((function(t) {
    -            e.pushBack(t);
    +            h.pushBack(t);
             }));
         }
    -    T() {
    -        const t = [];
    -        const i = Math.max(this.P >> 1, 1);
    -        for (let s = 0; s < i; ++s) {
    -            t[s] = new Array(this.F);
    +    A(t) {
    +        const i = [];
    +        const s = t || this.P >> 1 || 1;
    +        for (let t = 0; t < s; ++t) {
    +            i[t] = new Array(this.O);
    +        }
    +        for (let t = this.j; t < this.P; ++t) {
    +            i[i.length] = this.W[t];
    +        }
    +        for (let t = 0; t < this.N; ++t) {
    +            i[i.length] = this.W[t];
             }
    -        for (let i = this.j; i < this.P; ++i) {
    -            t[t.length] = this.A[i];
    +        i[i.length] = [ ...this.W[this.N] ];
    +        this.j = s;
    +        this.N = i.length - 1;
    +        for (let t = 0; t < s; ++t) {
    +            i[i.length] = new Array(this.O);
             }
    -        for (let i = 0; i < this.R; ++i) {
    -            t[t.length] = this.A[i];
    +        this.W = i;
    +        this.P = i.length;
    +    }
    +    F(t) {
    +        let i, s;
    +        const e = this.R + t;
    +        i = this.j + Math.floor(e / this.O);
    +        if (i >= this.P) {
    +            i -= this.P;
             }
    -        t[t.length] = [ ...this.A[this.R] ];
    -        this.j = i;
    -        this.R = t.length - 1;
    -        for (let s = 0; s < i; ++s) {
    -            t[t.length] = new Array(this.F);
    +        s = (e + 1) % this.O - 1;
    +        if (s < 0) {
    +            s = this.O - 1;
             }
    -        this.A = t;
    -        this.P = t.length;
    -    }
    -    O(t) {
    -        const i = this.D + t + 1;
    -        const s = i % this.F;
    -        let h = s - 1;
    -        let e = this.j + (i - s) / this.F;
    -        if (s === 0) e -= 1;
    -        e %= this.P;
    -        if (h < 0) h += this.F;
             return {
    -            curNodeBucketIndex: e,
    -            curNodePointerIndex: h
    +            curNodeBucketIndex: i,
    +            curNodePointerIndex: s
             };
         }
         clear() {
    -        this.A = [ new Array(this.F) ];
    +        this.W = [ new Array(this.O) ];
             this.P = 1;
    -        this.j = this.R = this.i = 0;
    -        this.D = this.N = this.F >> 1;
    +        this.j = this.N = this.i = 0;
    +        this.R = this.D = this.O >> 1;
         }
         begin() {
             return new DequeIterator(0, this);
    @@ -108,41 +154,41 @@ class Deque extends _Base.default {
         }
         front() {
             if (this.i === 0) return;
    -        return this.A[this.j][this.D];
    +        return this.W[this.j][this.R];
         }
         back() {
             if (this.i === 0) return;
    -        return this.A[this.R][this.N];
    +        return this.W[this.N][this.D];
         }
         pushBack(t) {
             if (this.i) {
    -            if (this.N < this.F - 1) {
    +            if (this.D < this.O - 1) {
    +                this.D += 1;
    +            } else if (this.N < this.P - 1) {
                     this.N += 1;
    -            } else if (this.R < this.P - 1) {
    -                this.R += 1;
    -                this.N = 0;
    +                this.D = 0;
                 } else {
    -                this.R = 0;
                     this.N = 0;
    +                this.D = 0;
                 }
    -            if (this.R === this.j && this.N === this.D) this.T();
    +            if (this.N === this.j && this.D === this.R) this.A();
             }
             this.i += 1;
    -        this.A[this.R][this.N] = t;
    +        this.W[this.N][this.D] = t;
             return this.i;
         }
         popBack() {
             if (this.i === 0) return;
    -        const t = this.A[this.R][this.N];
    +        const t = this.W[this.N][this.D];
             if (this.i !== 1) {
    -            if (this.N > 0) {
    +            if (this.D > 0) {
    +                this.D -= 1;
    +            } else if (this.N > 0) {
                     this.N -= 1;
    -            } else if (this.R > 0) {
    -                this.R -= 1;
    -                this.N = this.F - 1;
    +                this.D = this.O - 1;
                 } else {
    -                this.R = this.P - 1;
    -                this.N = this.F - 1;
    +                this.N = this.P - 1;
    +                this.D = this.O - 1;
                 }
             }
             this.i -= 1;
    @@ -150,33 +196,33 @@ class Deque extends _Base.default {
         }
         pushFront(t) {
             if (this.i) {
    -            if (this.D > 0) {
    -                this.D -= 1;
    +            if (this.R > 0) {
    +                this.R -= 1;
                 } else if (this.j > 0) {
                     this.j -= 1;
    -                this.D = this.F - 1;
    +                this.R = this.O - 1;
                 } else {
                     this.j = this.P - 1;
    -                this.D = this.F - 1;
    +                this.R = this.O - 1;
                 }
    -            if (this.j === this.R && this.D === this.N) this.T();
    +            if (this.j === this.N && this.R === this.D) this.A();
             }
             this.i += 1;
    -        this.A[this.j][this.D] = t;
    +        this.W[this.j][this.R] = t;
             return this.i;
         }
         popFront() {
             if (this.i === 0) return;
    -        const t = this.A[this.j][this.D];
    +        const t = this.W[this.j][this.R];
             if (this.i !== 1) {
    -            if (this.D < this.F - 1) {
    -                this.D += 1;
    +            if (this.R < this.O - 1) {
    +                this.R += 1;
                 } else if (this.j < this.P - 1) {
                     this.j += 1;
    -                this.D = 0;
    +                this.R = 0;
                 } else {
                     this.j = 0;
    -                this.D = 0;
    +                this.R = 0;
                 }
             }
             this.i -= 1;
    @@ -186,18 +232,19 @@ class Deque extends _Base.default {
             if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        const {curNodeBucketIndex: i, curNodePointerIndex: s} = this.O(t);
    -        return this.A[i][s];
    +        const {curNodeBucketIndex: i, curNodePointerIndex: s} = this.F(t);
    +        return this.W[i][s];
         }
         setElementByPos(t, i) {
             if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        const {curNodeBucketIndex: s, curNodePointerIndex: h} = this.O(t);
    -        this.A[s][h] = i;
    +        const {curNodeBucketIndex: s, curNodePointerIndex: e} = this.F(t);
    +        this.W[s][e] = i;
         }
         insert(t, i, s = 1) {
    -        if (t < 0 || t > this.i) {
    +        const e = this.i;
    +        if (t < 0 || t > e) {
                 throw new RangeError;
             }
             if (t === 0) {
    @@ -205,13 +252,13 @@ class Deque extends _Base.default {
             } else if (t === this.i) {
                 while (s--) this.pushBack(i);
             } else {
    -            const h = [];
    +            const e = [];
                 for (let i = t; i < this.i; ++i) {
    -                h.push(this.getElementByPos(i));
    +                e.push(this.getElementByPos(i));
                 }
                 this.cut(t - 1);
                 for (let t = 0; t < s; ++t) this.pushBack(i);
    -            for (let t = 0; t < h.length; ++t) this.pushBack(h[t]);
    +            for (let t = 0; t < e.length; ++t) this.pushBack(e[t]);
             }
             return this.i;
         }
    @@ -220,9 +267,9 @@ class Deque extends _Base.default {
                 this.clear();
                 return 0;
             }
    -        const {curNodeBucketIndex: i, curNodePointerIndex: s} = this.O(t);
    -        this.R = i;
    -        this.N = s;
    +        const {curNodeBucketIndex: i, curNodePointerIndex: s} = this.F(t);
    +        this.N = i;
    +        this.D = s;
             this.i = t + 1;
             return this.i;
         }
    @@ -231,29 +278,33 @@ class Deque extends _Base.default {
                 throw new RangeError;
             }
             if (t === 0) this.popFront(); else if (t === this.i - 1) this.popBack(); else {
    -            const i = [];
    -            for (let s = t + 1; s < this.i; ++s) {
    -                i.push(this.getElementByPos(s));
    +            const i = this.i - 1;
    +            let {curNodeBucketIndex: s, curNodePointerIndex: e} = this.F(t);
    +            for (let h = t; h < i; ++h) {
    +                const {curNodeBucketIndex: i, curNodePointerIndex: h} = this.F(t + 1);
    +                this.W[s][e] = this.W[i][h];
    +                s = i;
    +                e = h;
                 }
    -            this.cut(t);
                 this.popBack();
    -            const s = this;
    -            i.forEach((function(t) {
    -                s.pushBack(t);
    -            }));
             }
             return this.i;
         }
         eraseElementByValue(t) {
    -        if (this.i === 0) return 0;
    -        const i = [];
    -        for (let s = 0; s < this.i; ++s) {
    -            const h = this.getElementByPos(s);
    -            if (h !== t) i.push(h);
    +        const i = this.i;
    +        if (i === 0) return 0;
    +        let s = 0;
    +        let e = 0;
    +        while (s < i) {
    +            const i = this.getElementByPos(s);
    +            if (i !== t) {
    +                this.setElementByPos(e, i);
    +                e += 1;
    +            }
    +            s += 1;
             }
    -        const s = i.length;
    -        for (let t = 0; t < s; ++t) this.setElementByPos(t, i[t]);
    -        return this.cut(s - 1);
    +        this.cut(e - 1);
    +        return this.i;
         }
         eraseElementByIterator(t) {
             const i = t.o;
    @@ -270,15 +321,15 @@ class Deque extends _Base.default {
             return this.end();
         }
         reverse() {
    -        let t = 0;
    -        let i = this.i - 1;
    -        while (t < i) {
    -            const s = this.getElementByPos(t);
    -            this.setElementByPos(t, this.getElementByPos(i));
    -            this.setElementByPos(i, s);
    -            t += 1;
    -            i -= 1;
    -        }
    +        this.W.reverse().forEach((function(t) {
    +            t.reverse();
    +        }));
    +        const {j: t, N: i, R: s, D: e} = this;
    +        this.j = this.P - i - 1;
    +        this.N = this.P - t - 1;
    +        this.R = this.O - e - 1;
    +        this.D = this.O - s - 1;
    +        return this;
         }
         unique() {
             if (this.i <= 1) {
    @@ -287,13 +338,13 @@ class Deque extends _Base.default {
             let t = 1;
             let i = this.getElementByPos(0);
             for (let s = 1; s < this.i; ++s) {
    -            const h = this.getElementByPos(s);
    -            if (h !== i) {
    -                i = h;
    -                this.setElementByPos(t++, h);
    +            const e = this.getElementByPos(s);
    +            if (e !== i) {
    +                i = e;
    +                this.setElementByPos(t++, e);
                 }
             }
    -        while (this.i > t) this.popBack();
    +        this.cut(t - 1);
             return this.i;
         }
         sort(t) {
    @@ -302,33 +353,39 @@ class Deque extends _Base.default {
                 i.push(this.getElementByPos(t));
             }
             i.sort(t);
    -        for (let t = 0; t < this.i; ++t) this.setElementByPos(t, i[t]);
    +        for (let t = 0; t < this.i; ++t) {
    +            this.setElementByPos(t, i[t]);
    +        }
    +        return this;
         }
         shrinkToFit() {
             if (this.i === 0) return;
             const t = [];
    -        this.forEach((function(i) {
    -            t.push(i);
    -        }));
    -        this.P = Math.max(Math.ceil(this.i / this.F), 1);
    -        this.i = this.j = this.R = this.D = this.N = 0;
    -        this.A = [];
    -        for (let t = 0; t < this.P; ++t) {
    -            this.A.push(new Array(this.F));
    +        if (this.j === this.N) return; else if (this.j < this.N) {
    +            for (let i = this.j; i <= this.N; ++i) {
    +                t.push(this.W[i]);
    +            }
    +        } else {
    +            for (let i = this.j; i < this.P; ++i) {
    +                t.push(this.W[i]);
    +            }
    +            for (let i = 0; i <= this.N; ++i) {
    +                t.push(this.W[i]);
    +            }
             }
    -        for (let i = 0; i < t.length; ++i) this.pushBack(t[i]);
    +        this.j = 0;
    +        this.N = t.length - 1;
    +        this.W = t;
         }
         forEach(t) {
             for (let i = 0; i < this.i; ++i) {
                 t(this.getElementByPos(i), i, this);
             }
         }
    -    [Symbol.iterator]() {
    -        return function*() {
    -            for (let t = 0; t < this.i; ++t) {
    -                yield this.getElementByPos(t);
    -            }
    -        }.bind(this)();
    +    * [Symbol.iterator]() {
    +        for (let t = 0; t < this.i; ++t) {
    +            yield this.getElementByPos(t);
    +        }
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/LinkList.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/LinkList.js
    index 068a8573d0d759..7e72b8734c4fb0 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/LinkList.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/LinkList.js
    @@ -244,7 +244,9 @@ class LinkList extends _Base.default {
             return this.end();
         }
         reverse() {
    -        if (this.i <= 1) return;
    +        if (this.i <= 1) {
    +            return this;
    +        }
             let t = this.p;
             let i = this._;
             let s = 0;
    @@ -256,6 +258,7 @@ class LinkList extends _Base.default {
                 i = i.L;
                 s += 1;
             }
    +        return this;
         }
         unique() {
             if (this.i <= 1) {
    @@ -275,7 +278,9 @@ class LinkList extends _Base.default {
             return this.i;
         }
         sort(t) {
    -        if (this.i <= 1) return;
    +        if (this.i <= 1) {
    +            return this;
    +        }
             const i = [];
             this.forEach((function(t) {
                 i.push(t);
    @@ -286,6 +291,7 @@ class LinkList extends _Base.default {
                 s.l = t;
                 s = s.B;
             }));
    +        return this;
         }
         merge(t) {
             const i = this;
    @@ -312,15 +318,13 @@ class LinkList extends _Base.default {
                 i = i.B;
             }
         }
    -    [Symbol.iterator]() {
    -        return function*() {
    -            if (this.i === 0) return;
    -            let t = this.p;
    -            while (t !== this.h) {
    -                yield t.l;
    -                t = t.B;
    -            }
    -        }.bind(this)();
    +    * [Symbol.iterator]() {
    +        if (this.i === 0) return;
    +        let t = this.p;
    +        while (t !== this.h) {
    +            yield t.l;
    +            t = t.B;
    +        }
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Vector.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Vector.js
    index b61d3a9192788d..4b91d1cfb640ad 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Vector.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/SequentialContainer/Vector.js
    @@ -126,6 +126,7 @@ class Vector extends _Base.default {
         }
         reverse() {
             this.J.reverse();
    +        return this;
         }
         unique() {
             let t = 1;
    @@ -139,16 +140,15 @@ class Vector extends _Base.default {
         }
         sort(t) {
             this.J.sort(t);
    +        return this;
         }
         forEach(t) {
             for (let r = 0; r < this.i; ++r) {
                 t(this.J[r], r, this);
             }
         }
    -    [Symbol.iterator]() {
    -        return function*() {
    -            yield* this.J;
    -        }.bind(this)();
    +    * [Symbol.iterator]() {
    +        yield* this.J;
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeIterator.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeIterator.js
    index f238b856b0c6b5..a40876f6f10cf9 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeIterator.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeIterator.js
    @@ -17,7 +17,7 @@ class TreeIterator extends _ContainerBase.ContainerIterator {
             this.h = r;
             if (this.iteratorType === 0) {
                 this.pre = function() {
    -                if (this.o === this.h.U) {
    +                if (this.o === this.h.T) {
                         (0, _throwError.throwIteratorAccessError)();
                     }
                     this.o = this.o.L();
    @@ -32,7 +32,7 @@ class TreeIterator extends _ContainerBase.ContainerIterator {
                 };
             } else {
                 this.pre = function() {
    -                if (this.o === this.h.W) {
    +                if (this.o === this.h.K) {
                         (0, _throwError.throwIteratorAccessError)();
                     }
                     this.o = this.o.B();
    @@ -49,23 +49,23 @@ class TreeIterator extends _ContainerBase.ContainerIterator {
         }
         get index() {
             let t = this.o;
    -        const r = this.h.tt;
    +        const r = this.h.it;
             if (t === this.h) {
                 if (r) {
    -                return r.rt - 1;
    +                return r.st - 1;
                 }
                 return 0;
             }
             let i = 0;
    -        if (t.U) {
    -            i += t.U.rt;
    +        if (t.T) {
    +            i += t.T.st;
             }
             while (t !== r) {
    -            const r = t.tt;
    -            if (t === r.W) {
    +            const r = t.it;
    +            if (t === r.K) {
                     i += 1;
    -                if (r.U) {
    -                    i += r.U.rt;
    +                if (r.T) {
    +                    i += r.T.st;
                     }
                 }
                 t = r;
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeNode.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeNode.js
    index 108fcf1fb6d9ea..ba38dded7f5696 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeNode.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/TreeNode.js
    @@ -7,30 +7,28 @@ Object.defineProperty(exports, "t", {
     exports.TreeNodeEnableIndex = exports.TreeNode = void 0;
     
     class TreeNode {
    -    constructor(e, t) {
    -        this.ee = 1;
    -        this.u = undefined;
    -        this.l = undefined;
    -        this.U = undefined;
    -        this.W = undefined;
    -        this.tt = undefined;
    +    constructor(e, t, s = 1) {
    +        this.T = undefined;
    +        this.K = undefined;
    +        this.it = undefined;
             this.u = e;
             this.l = t;
    +        this.ee = s;
         }
         L() {
             let e = this;
    -        if (e.ee === 1 && e.tt.tt === e) {
    -            e = e.W;
    -        } else if (e.U) {
    -            e = e.U;
    -            while (e.W) {
    -                e = e.W;
    +        if (e.ee === 1 && e.it.it === e) {
    +            e = e.K;
    +        } else if (e.T) {
    +            e = e.T;
    +            while (e.K) {
    +                e = e.K;
                 }
             } else {
    -            let t = e.tt;
    -            while (t.U === e) {
    +            let t = e.it;
    +            while (t.T === e) {
                     e = t;
    -                t = e.tt;
    +                t = e.it;
                 }
                 e = t;
             }
    @@ -38,45 +36,45 @@ class TreeNode {
         }
         B() {
             let e = this;
    -        if (e.W) {
    -            e = e.W;
    -            while (e.U) {
    -                e = e.U;
    +        if (e.K) {
    +            e = e.K;
    +            while (e.T) {
    +                e = e.T;
                 }
                 return e;
             } else {
    -            let t = e.tt;
    -            while (t.W === e) {
    +            let t = e.it;
    +            while (t.K === e) {
                     e = t;
    -                t = e.tt;
    +                t = e.it;
                 }
    -            if (e.W !== t) {
    +            if (e.K !== t) {
                     return t;
                 } else return e;
             }
         }
         te() {
    -        const e = this.tt;
    -        const t = this.W;
    -        const s = t.U;
    -        if (e.tt === this) e.tt = t; else if (e.U === this) e.U = t; else e.W = t;
    -        t.tt = e;
    -        t.U = this;
    -        this.tt = t;
    -        this.W = s;
    -        if (s) s.tt = this;
    +        const e = this.it;
    +        const t = this.K;
    +        const s = t.T;
    +        if (e.it === this) e.it = t; else if (e.T === this) e.T = t; else e.K = t;
    +        t.it = e;
    +        t.T = this;
    +        this.it = t;
    +        this.K = s;
    +        if (s) s.it = this;
             return t;
         }
         se() {
    -        const e = this.tt;
    -        const t = this.U;
    -        const s = t.W;
    -        if (e.tt === this) e.tt = t; else if (e.U === this) e.U = t; else e.W = t;
    -        t.tt = e;
    -        t.W = this;
    -        this.tt = t;
    -        this.U = s;
    -        if (s) s.tt = this;
    +        const e = this.it;
    +        const t = this.T;
    +        const s = t.K;
    +        if (e.it === this) e.it = t; else if (e.T === this) e.T = t; else e.K = t;
    +        t.it = e;
    +        t.K = this;
    +        this.it = t;
    +        this.T = s;
    +        if (s) s.it = this;
             return t;
         }
     }
    @@ -86,7 +84,7 @@ exports.TreeNode = TreeNode;
     class TreeNodeEnableIndex extends TreeNode {
         constructor() {
             super(...arguments);
    -        this.rt = 1;
    +        this.st = 1;
         }
         te() {
             const e = super.te();
    @@ -101,12 +99,12 @@ class TreeNodeEnableIndex extends TreeNode {
             return e;
         }
         ie() {
    -        this.rt = 1;
    -        if (this.U) {
    -            this.rt += this.U.rt;
    +        this.st = 1;
    +        if (this.T) {
    +            this.st += this.T.st;
             }
    -        if (this.W) {
    -            this.rt += this.W.rt;
    +        if (this.K) {
    +            this.st += this.K.st;
             }
         }
     }
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/index.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/index.js
    index 1ba0069296b791..69c4f5d62c2923 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/index.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/Base/index.js
    @@ -19,126 +19,92 @@ class TreeContainer extends _ContainerBase.Container {
             return 0;
         }, t = false) {
             super();
    -        this.Y = undefined;
    +        this.X = undefined;
             this.v = e;
    -        if (t) {
    -            this.re = _TreeNode.TreeNodeEnableIndex;
    -            this.M = function(e, t, i) {
    -                const s = this.ne(e, t, i);
    -                if (s) {
    -                    let e = s.tt;
    -                    while (e !== this.h) {
    -                        e.rt += 1;
    -                        e = e.tt;
    -                    }
    -                    const t = this.he(s);
    -                    if (t) {
    -                        const {parentNode: e, grandParent: i, curNode: s} = t;
    -                        e.ie();
    -                        i.ie();
    -                        s.ie();
    -                    }
    -                }
    -                return this.i;
    -            };
    -            this.V = function(e) {
    -                let t = this.fe(e);
    -                while (t !== this.h) {
    -                    t.rt -= 1;
    -                    t = t.tt;
    -                }
    -            };
    -        } else {
    -            this.re = _TreeNode.TreeNode;
    -            this.M = function(e, t, i) {
    -                const s = this.ne(e, t, i);
    -                if (s) this.he(s);
    -                return this.i;
    -            };
    -            this.V = this.fe;
    -        }
    +        this.enableIndex = t;
    +        this.re = t ? _TreeNode.TreeNodeEnableIndex : _TreeNode.TreeNode;
             this.h = new this.re;
         }
    -    X(e, t) {
    +    U(e, t) {
             let i = this.h;
             while (e) {
                 const s = this.v(e.u, t);
                 if (s < 0) {
    -                e = e.W;
    +                e = e.K;
                 } else if (s > 0) {
                     i = e;
    -                e = e.U;
    +                e = e.T;
                 } else return e;
             }
             return i;
         }
    -    Z(e, t) {
    +    Y(e, t) {
             let i = this.h;
             while (e) {
                 const s = this.v(e.u, t);
                 if (s <= 0) {
    -                e = e.W;
    +                e = e.K;
                 } else {
                     i = e;
    -                e = e.U;
    +                e = e.T;
                 }
             }
             return i;
         }
    -    $(e, t) {
    +    Z(e, t) {
             let i = this.h;
             while (e) {
                 const s = this.v(e.u, t);
                 if (s < 0) {
                     i = e;
    -                e = e.W;
    +                e = e.K;
                 } else if (s > 0) {
    -                e = e.U;
    +                e = e.T;
                 } else return e;
             }
             return i;
         }
    -    rr(e, t) {
    +    $(e, t) {
             let i = this.h;
             while (e) {
                 const s = this.v(e.u, t);
                 if (s < 0) {
                     i = e;
    -                e = e.W;
    +                e = e.K;
                 } else {
    -                e = e.U;
    +                e = e.T;
                 }
             }
             return i;
         }
    -    ue(e) {
    +    ne(e) {
             while (true) {
    -            const t = e.tt;
    +            const t = e.it;
                 if (t === this.h) return;
                 if (e.ee === 1) {
                     e.ee = 0;
                     return;
                 }
    -            if (e === t.U) {
    -                const i = t.W;
    +            if (e === t.T) {
    +                const i = t.K;
                     if (i.ee === 1) {
                         i.ee = 0;
                         t.ee = 1;
    -                    if (t === this.Y) {
    -                        this.Y = t.te();
    +                    if (t === this.X) {
    +                        this.X = t.te();
                         } else t.te();
                     } else {
    -                    if (i.W && i.W.ee === 1) {
    +                    if (i.K && i.K.ee === 1) {
                             i.ee = t.ee;
                             t.ee = 0;
    -                        i.W.ee = 0;
    -                        if (t === this.Y) {
    -                            this.Y = t.te();
    +                        i.K.ee = 0;
    +                        if (t === this.X) {
    +                            this.X = t.te();
                             } else t.te();
                             return;
    -                    } else if (i.U && i.U.ee === 1) {
    +                    } else if (i.T && i.T.ee === 1) {
                             i.ee = 1;
    -                        i.U.ee = 0;
    +                        i.T.ee = 0;
                             i.se();
                         } else {
                             i.ee = 1;
    @@ -146,25 +112,25 @@ class TreeContainer extends _ContainerBase.Container {
                         }
                     }
                 } else {
    -                const i = t.U;
    +                const i = t.T;
                     if (i.ee === 1) {
                         i.ee = 0;
                         t.ee = 1;
    -                    if (t === this.Y) {
    -                        this.Y = t.se();
    +                    if (t === this.X) {
    +                        this.X = t.se();
                         } else t.se();
                     } else {
    -                    if (i.U && i.U.ee === 1) {
    +                    if (i.T && i.T.ee === 1) {
                             i.ee = t.ee;
                             t.ee = 0;
    -                        i.U.ee = 0;
    -                        if (t === this.Y) {
    -                            this.Y = t.se();
    +                        i.T.ee = 0;
    +                        if (t === this.X) {
    +                            this.X = t.se();
                             } else t.se();
                             return;
    -                    } else if (i.W && i.W.ee === 1) {
    +                    } else if (i.K && i.K.ee === 1) {
                             i.ee = 1;
    -                        i.W.ee = 0;
    +                        i.K.ee = 0;
                             i.te();
                         } else {
                             i.ee = 1;
    @@ -174,168 +140,194 @@ class TreeContainer extends _ContainerBase.Container {
                 }
             }
         }
    -    fe(e) {
    +    V(e) {
             if (this.i === 1) {
                 this.clear();
    -            return this.h;
    +            return;
             }
             let t = e;
    -        while (t.U || t.W) {
    -            if (t.W) {
    -                t = t.W;
    -                while (t.U) t = t.U;
    +        while (t.T || t.K) {
    +            if (t.K) {
    +                t = t.K;
    +                while (t.T) t = t.T;
                 } else {
    -                t = t.U;
    +                t = t.T;
                 }
    -            [e.u, t.u] = [ t.u, e.u ];
    -            [e.l, t.l] = [ t.l, e.l ];
    +            const i = e.u;
    +            e.u = t.u;
    +            t.u = i;
    +            const s = e.l;
    +            e.l = t.l;
    +            t.l = s;
                 e = t;
             }
    -        if (this.h.U === t) {
    -            this.h.U = t.tt;
    -        } else if (this.h.W === t) {
    -            this.h.W = t.tt;
    +        if (this.h.T === t) {
    +            this.h.T = t.it;
    +        } else if (this.h.K === t) {
    +            this.h.K = t.it;
             }
    -        this.ue(t);
    -        const i = t.tt;
    -        if (t === i.U) {
    -            i.U = undefined;
    -        } else i.W = undefined;
    +        this.ne(t);
    +        let i = t.it;
    +        if (t === i.T) {
    +            i.T = undefined;
    +        } else i.K = undefined;
             this.i -= 1;
    -        this.Y.ee = 0;
    -        return i;
    +        this.X.ee = 0;
    +        if (this.enableIndex) {
    +            while (i !== this.h) {
    +                i.st -= 1;
    +                i = i.it;
    +            }
    +        }
         }
    -    oe(e, t) {
    -        if (e === undefined) return false;
    -        const i = this.oe(e.U, t);
    -        if (i) return true;
    -        if (t(e)) return true;
    -        return this.oe(e.W, t);
    +    tt(e) {
    +        const t = typeof e === "number" ? e : undefined;
    +        const i = typeof e === "function" ? e : undefined;
    +        const s = typeof e === "undefined" ? [] : undefined;
    +        let r = 0;
    +        let n = this.X;
    +        const h = [];
    +        while (h.length || n) {
    +            if (n) {
    +                h.push(n);
    +                n = n.T;
    +            } else {
    +                n = h.pop();
    +                if (r === t) return n;
    +                s && s.push(n);
    +                i && i(n, r, this);
    +                r += 1;
    +                n = n.K;
    +            }
    +        }
    +        return s;
         }
         he(e) {
             while (true) {
    -            const t = e.tt;
    +            const t = e.it;
                 if (t.ee === 0) return;
    -            const i = t.tt;
    -            if (t === i.U) {
    -                const s = i.W;
    +            const i = t.it;
    +            if (t === i.T) {
    +                const s = i.K;
                     if (s && s.ee === 1) {
                         s.ee = t.ee = 0;
    -                    if (i === this.Y) return;
    +                    if (i === this.X) return;
                         i.ee = 1;
                         e = i;
                         continue;
    -                } else if (e === t.W) {
    +                } else if (e === t.K) {
                         e.ee = 0;
    -                    if (e.U) e.U.tt = t;
    -                    if (e.W) e.W.tt = i;
    -                    t.W = e.U;
    -                    i.U = e.W;
    -                    e.U = t;
    -                    e.W = i;
    -                    if (i === this.Y) {
    -                        this.Y = e;
    -                        this.h.tt = e;
    +                    if (e.T) {
    +                        e.T.it = t;
    +                    }
    +                    if (e.K) {
    +                        e.K.it = i;
    +                    }
    +                    t.K = e.T;
    +                    i.T = e.K;
    +                    e.T = t;
    +                    e.K = i;
    +                    if (i === this.X) {
    +                        this.X = e;
    +                        this.h.it = e;
                         } else {
    -                        const t = i.tt;
    -                        if (t.U === i) {
    -                            t.U = e;
    -                        } else t.W = e;
    +                        const t = i.it;
    +                        if (t.T === i) {
    +                            t.T = e;
    +                        } else t.K = e;
                         }
    -                    e.tt = i.tt;
    -                    t.tt = e;
    -                    i.tt = e;
    +                    e.it = i.it;
    +                    t.it = e;
    +                    i.it = e;
                         i.ee = 1;
    -                    return {
    -                        parentNode: t,
    -                        grandParent: i,
    -                        curNode: e
    -                    };
                     } else {
                         t.ee = 0;
    -                    if (i === this.Y) {
    -                        this.Y = i.se();
    +                    if (i === this.X) {
    +                        this.X = i.se();
                         } else i.se();
                         i.ee = 1;
    +                    return;
                     }
                 } else {
    -                const s = i.U;
    +                const s = i.T;
                     if (s && s.ee === 1) {
                         s.ee = t.ee = 0;
    -                    if (i === this.Y) return;
    +                    if (i === this.X) return;
                         i.ee = 1;
                         e = i;
                         continue;
    -                } else if (e === t.U) {
    +                } else if (e === t.T) {
                         e.ee = 0;
    -                    if (e.U) e.U.tt = i;
    -                    if (e.W) e.W.tt = t;
    -                    i.W = e.U;
    -                    t.U = e.W;
    -                    e.U = i;
    -                    e.W = t;
    -                    if (i === this.Y) {
    -                        this.Y = e;
    -                        this.h.tt = e;
    +                    if (e.T) {
    +                        e.T.it = i;
    +                    }
    +                    if (e.K) {
    +                        e.K.it = t;
    +                    }
    +                    i.K = e.T;
    +                    t.T = e.K;
    +                    e.T = i;
    +                    e.K = t;
    +                    if (i === this.X) {
    +                        this.X = e;
    +                        this.h.it = e;
                         } else {
    -                        const t = i.tt;
    -                        if (t.U === i) {
    -                            t.U = e;
    -                        } else t.W = e;
    +                        const t = i.it;
    +                        if (t.T === i) {
    +                            t.T = e;
    +                        } else t.K = e;
                         }
    -                    e.tt = i.tt;
    -                    t.tt = e;
    -                    i.tt = e;
    +                    e.it = i.it;
    +                    t.it = e;
    +                    i.it = e;
                         i.ee = 1;
    -                    return {
    -                        parentNode: t,
    -                        grandParent: i,
    -                        curNode: e
    -                    };
                     } else {
                         t.ee = 0;
    -                    if (i === this.Y) {
    -                        this.Y = i.te();
    +                    if (i === this.X) {
    +                        this.X = i.te();
                         } else i.te();
                         i.ee = 1;
    +                    return;
                     }
                 }
    +            if (this.enableIndex) {
    +                t.ie();
    +                i.ie();
    +                e.ie();
    +            }
                 return;
             }
         }
    -    ne(e, t, i) {
    -        if (this.Y === undefined) {
    +    M(e, t, i) {
    +        if (this.X === undefined) {
                 this.i += 1;
    -            this.Y = new this.re(e, t);
    -            this.Y.ee = 0;
    -            this.Y.tt = this.h;
    -            this.h.tt = this.Y;
    -            this.h.U = this.Y;
    -            this.h.W = this.Y;
    -            return;
    +            this.X = new this.re(e, t, 0);
    +            this.X.it = this.h;
    +            this.h.it = this.h.T = this.h.K = this.X;
    +            return this.i;
             }
             let s;
    -        const r = this.h.U;
    +        const r = this.h.T;
             const n = this.v(r.u, e);
             if (n === 0) {
                 r.l = t;
    -            return;
    +            return this.i;
             } else if (n > 0) {
    -            r.U = new this.re(e, t);
    -            r.U.tt = r;
    -            s = r.U;
    -            this.h.U = s;
    +            r.T = new this.re(e, t);
    +            r.T.it = r;
    +            s = r.T;
    +            this.h.T = s;
             } else {
    -            const r = this.h.W;
    +            const r = this.h.K;
                 const n = this.v(r.u, e);
                 if (n === 0) {
                     r.l = t;
    -                return;
    +                return this.i;
                 } else if (n < 0) {
    -                r.W = new this.re(e, t);
    -                r.W.tt = r;
    -                s = r.W;
    -                this.h.W = s;
    +                r.K = new this.re(e, t);
    +                r.K.it = r;
    +                s = r.K;
    +                this.h.K = s;
                 } else {
                     if (i !== undefined) {
                         const r = i.o;
    @@ -343,73 +335,81 @@ class TreeContainer extends _ContainerBase.Container {
                             const i = this.v(r.u, e);
                             if (i === 0) {
                                 r.l = t;
    -                            return;
    +                            return this.i;
                             } else if (i > 0) {
                                 const i = r.L();
                                 const n = this.v(i.u, e);
                                 if (n === 0) {
                                     i.l = t;
    -                                return;
    +                                return this.i;
                                 } else if (n < 0) {
                                     s = new this.re(e, t);
    -                                if (i.W === undefined) {
    -                                    i.W = s;
    -                                    s.tt = i;
    +                                if (i.K === undefined) {
    +                                    i.K = s;
    +                                    s.it = i;
                                     } else {
    -                                    r.U = s;
    -                                    s.tt = r;
    +                                    r.T = s;
    +                                    s.it = r;
                                     }
                                 }
                             }
                         }
                     }
                     if (s === undefined) {
    -                    s = this.Y;
    +                    s = this.X;
                         while (true) {
                             const i = this.v(s.u, e);
                             if (i > 0) {
    -                            if (s.U === undefined) {
    -                                s.U = new this.re(e, t);
    -                                s.U.tt = s;
    -                                s = s.U;
    +                            if (s.T === undefined) {
    +                                s.T = new this.re(e, t);
    +                                s.T.it = s;
    +                                s = s.T;
                                     break;
                                 }
    -                            s = s.U;
    +                            s = s.T;
                             } else if (i < 0) {
    -                            if (s.W === undefined) {
    -                                s.W = new this.re(e, t);
    -                                s.W.tt = s;
    -                                s = s.W;
    +                            if (s.K === undefined) {
    +                                s.K = new this.re(e, t);
    +                                s.K.it = s;
    +                                s = s.K;
                                     break;
                                 }
    -                            s = s.W;
    +                            s = s.K;
                             } else {
                                 s.l = t;
    -                            return;
    +                            return this.i;
                             }
                         }
                     }
                 }
             }
    +        if (this.enableIndex) {
    +            let e = s.it;
    +            while (e !== this.h) {
    +                e.st += 1;
    +                e = e.it;
    +            }
    +        }
    +        this.he(s);
             this.i += 1;
    -        return s;
    +        return this.i;
         }
    -    I(e, t) {
    +    rt(e, t) {
             while (e) {
                 const i = this.v(e.u, t);
                 if (i < 0) {
    -                e = e.W;
    +                e = e.K;
                 } else if (i > 0) {
    -                e = e.U;
    +                e = e.T;
                 } else return e;
             }
             return e || this.h;
         }
         clear() {
             this.i = 0;
    -        this.Y = undefined;
    -        this.h.tt = undefined;
    -        this.h.U = this.h.W = undefined;
    +        this.X = undefined;
    +        this.h.it = undefined;
    +        this.h.T = this.h.K = undefined;
         }
         updateKeyByIterator(e, t) {
             const i = e.o;
    @@ -420,24 +420,23 @@ class TreeContainer extends _ContainerBase.Container {
                 i.u = t;
                 return true;
             }
    -        if (i === this.h.U) {
    -            if (this.v(i.B().u, t) > 0) {
    +        const s = i.B().u;
    +        if (i === this.h.T) {
    +            if (this.v(s, t) > 0) {
                     i.u = t;
                     return true;
                 }
                 return false;
             }
    -        if (i === this.h.W) {
    -            if (this.v(i.L().u, t) < 0) {
    +        const r = i.L().u;
    +        if (i === this.h.K) {
    +            if (this.v(r, t) < 0) {
                     i.u = t;
                     return true;
                 }
                 return false;
             }
    -        const s = i.L().u;
    -        if (this.v(s, t) >= 0) return false;
    -        const r = i.B().u;
    -        if (this.v(r, t) <= 0) return false;
    +        if (this.v(r, t) >= 0 || this.v(s, t) <= 0) return false;
             i.u = t;
             return true;
         }
    @@ -445,21 +444,13 @@ class TreeContainer extends _ContainerBase.Container {
             if (e < 0 || e > this.i - 1) {
                 throw new RangeError;
             }
    -        let t = 0;
    -        const i = this;
    -        this.oe(this.Y, (function(s) {
    -            if (e === t) {
    -                i.V(s);
    -                return true;
    -            }
    -            t += 1;
    -            return false;
    -        }));
    +        const t = this.tt(e);
    +        this.V(t);
             return this.i;
         }
         eraseElementByKey(e) {
             if (this.i === 0) return false;
    -        const t = this.I(this.Y, e);
    +        const t = this.rt(this.X, e);
             if (t === this.h) return false;
             this.V(t);
             return true;
    @@ -469,42 +460,23 @@ class TreeContainer extends _ContainerBase.Container {
             if (t === this.h) {
                 (0, _throwError.throwIteratorAccessError)();
             }
    -        const i = t.W === undefined;
    +        const i = t.K === undefined;
             const s = e.iteratorType === 0;
             if (s) {
                 if (i) e.next();
             } else {
    -            if (!i || t.U === undefined) e.next();
    +            if (!i || t.T === undefined) e.next();
             }
             this.V(t);
             return e;
         }
    -    forEach(e) {
    -        let t = 0;
    -        for (const i of this) e(i, t++, this);
    -    }
    -    getElementByPos(e) {
    -        if (e < 0 || e > this.i - 1) {
    -            throw new RangeError;
    -        }
    -        let t;
    -        let i = 0;
    -        for (const s of this) {
    -            if (i === e) {
    -                t = s;
    -                break;
    -            }
    -            i += 1;
    -        }
    -        return t;
    -    }
         getHeight() {
             if (this.i === 0) return 0;
    -        const traversal = function(e) {
    +        function traversal(e) {
                 if (!e) return 0;
    -            return Math.max(traversal(e.U), traversal(e.W)) + 1;
    -        };
    -        return traversal(this.Y);
    +            return Math.max(traversal(e.T), traversal(e.K)) + 1;
    +        }
    +        return traversal(this.X);
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedMap.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedMap.js
    index 79fdc0280fc3b1..be2b4ed2180376 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedMap.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedMap.js
    @@ -12,31 +12,31 @@ var _TreeIterator = _interopRequireDefault(require("./Base/TreeIterator"));
     
     var _throwError = require("../../utils/throwError");
     
    -function _interopRequireDefault(r) {
    -    return r && r.t ? r : {
    -        default: r
    +function _interopRequireDefault(t) {
    +    return t && t.t ? t : {
    +        default: t
         };
     }
     
     class OrderedMapIterator extends _TreeIterator.default {
    -    constructor(r, t, e, s) {
    -        super(r, t, s);
    +    constructor(t, r, e, s) {
    +        super(t, r, s);
             this.container = e;
         }
         get pointer() {
             if (this.o === this.h) {
                 (0, _throwError.throwIteratorAccessError)();
             }
    -        const r = this;
    +        const t = this;
             return new Proxy([], {
    -            get(t, e) {
    -                if (e === "0") return r.o.u; else if (e === "1") return r.o.l;
    +            get(r, e) {
    +                if (e === "0") return t.o.u; else if (e === "1") return t.o.l;
                 },
    -            set(t, e, s) {
    +            set(r, e, s) {
                     if (e !== "1") {
                         throw new TypeError("props must be 1");
                     }
    -                r.o.l = s;
    +                t.o.l = s;
                     return true;
                 }
             });
    @@ -47,77 +47,88 @@ class OrderedMapIterator extends _TreeIterator.default {
     }
     
     class OrderedMap extends _Base.default {
    -    constructor(r = [], t, e) {
    -        super(t, e);
    +    constructor(t = [], r, e) {
    +        super(r, e);
             const s = this;
    -        r.forEach((function(r) {
    -            s.setElement(r[0], r[1]);
    +        t.forEach((function(t) {
    +            s.setElement(t[0], t[1]);
             }));
         }
    -    * K(r) {
    -        if (r === undefined) return;
    -        yield* this.K(r.U);
    -        yield [ r.u, r.l ];
    -        yield* this.K(r.W);
    -    }
         begin() {
    -        return new OrderedMapIterator(this.h.U || this.h, this.h, this);
    +        return new OrderedMapIterator(this.h.T || this.h, this.h, this);
         }
         end() {
             return new OrderedMapIterator(this.h, this.h, this);
         }
         rBegin() {
    -        return new OrderedMapIterator(this.h.W || this.h, this.h, this, 1);
    +        return new OrderedMapIterator(this.h.K || this.h, this.h, this, 1);
         }
         rEnd() {
             return new OrderedMapIterator(this.h, this.h, this, 1);
         }
         front() {
             if (this.i === 0) return;
    -        const r = this.h.U;
    -        return [ r.u, r.l ];
    +        const t = this.h.T;
    +        return [ t.u, t.l ];
         }
         back() {
             if (this.i === 0) return;
    -        const r = this.h.W;
    -        return [ r.u, r.l ];
    +        const t = this.h.K;
    +        return [ t.u, t.l ];
         }
    -    lowerBound(r) {
    -        const t = this.X(this.Y, r);
    -        return new OrderedMapIterator(t, this.h, this);
    +    lowerBound(t) {
    +        const r = this.U(this.X, t);
    +        return new OrderedMapIterator(r, this.h, this);
         }
    -    upperBound(r) {
    -        const t = this.Z(this.Y, r);
    -        return new OrderedMapIterator(t, this.h, this);
    +    upperBound(t) {
    +        const r = this.Y(this.X, t);
    +        return new OrderedMapIterator(r, this.h, this);
         }
    -    reverseLowerBound(r) {
    -        const t = this.$(this.Y, r);
    -        return new OrderedMapIterator(t, this.h, this);
    +    reverseLowerBound(t) {
    +        const r = this.Z(this.X, t);
    +        return new OrderedMapIterator(r, this.h, this);
         }
    -    reverseUpperBound(r) {
    -        const t = this.rr(this.Y, r);
    -        return new OrderedMapIterator(t, this.h, this);
    +    reverseUpperBound(t) {
    +        const r = this.$(this.X, t);
    +        return new OrderedMapIterator(r, this.h, this);
         }
    -    setElement(r, t, e) {
    -        return this.M(r, t, e);
    +    forEach(t) {
    +        this.tt((function(r, e, s) {
    +            t([ r.u, r.l ], e, s);
    +        }));
         }
    -    find(r) {
    -        const t = this.I(this.Y, r);
    -        return new OrderedMapIterator(t, this.h, this);
    +    setElement(t, r, e) {
    +        return this.M(t, r, e);
         }
    -    getElementByKey(r) {
    -        const t = this.I(this.Y, r);
    -        return t.l;
    +    getElementByPos(t) {
    +        if (t < 0 || t > this.i - 1) {
    +            throw new RangeError;
    +        }
    +        const r = this.tt(t);
    +        return [ r.u, r.l ];
         }
    -    union(r) {
    -        const t = this;
    -        r.forEach((function(r) {
    -            t.setElement(r[0], r[1]);
    +    find(t) {
    +        const r = this.rt(this.X, t);
    +        return new OrderedMapIterator(r, this.h, this);
    +    }
    +    getElementByKey(t) {
    +        const r = this.rt(this.X, t);
    +        return r.l;
    +    }
    +    union(t) {
    +        const r = this;
    +        t.forEach((function(t) {
    +            r.setElement(t[0], t[1]);
             }));
             return this.i;
         }
    -    [Symbol.iterator]() {
    -        return this.K(this.Y);
    +    * [Symbol.iterator]() {
    +        const t = this.i;
    +        const r = this.tt();
    +        for (let e = 0; e < t; ++e) {
    +            const t = r[e];
    +            yield [ t.u, t.l ];
    +        }
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedSet.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedSet.js
    index c7af14df2664fb..dc9c5bce681bcc 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedSet.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/container/TreeContainer/OrderedSet.js
    @@ -12,15 +12,15 @@ var _TreeIterator = _interopRequireDefault(require("./Base/TreeIterator"));
     
     var _throwError = require("../../utils/throwError");
     
    -function _interopRequireDefault(e) {
    -    return e && e.t ? e : {
    -        default: e
    +function _interopRequireDefault(t) {
    +    return t && t.t ? t : {
    +        default: t
         };
     }
     
     class OrderedSetIterator extends _TreeIterator.default {
    -    constructor(e, t, r, i) {
    -        super(e, t, i);
    +    constructor(t, e, r, s) {
    +        super(t, e, s);
             this.container = r;
         }
         get pointer() {
    @@ -35,69 +35,79 @@ class OrderedSetIterator extends _TreeIterator.default {
     }
     
     class OrderedSet extends _Base.default {
    -    constructor(e = [], t, r) {
    -        super(t, r);
    -        const i = this;
    -        e.forEach((function(e) {
    -            i.insert(e);
    +    constructor(t = [], e, r) {
    +        super(e, r);
    +        const s = this;
    +        t.forEach((function(t) {
    +            s.insert(t);
             }));
         }
    -    * K(e) {
    -        if (e === undefined) return;
    -        yield* this.K(e.U);
    -        yield e.u;
    -        yield* this.K(e.W);
    -    }
         begin() {
    -        return new OrderedSetIterator(this.h.U || this.h, this.h, this);
    +        return new OrderedSetIterator(this.h.T || this.h, this.h, this);
         }
         end() {
             return new OrderedSetIterator(this.h, this.h, this);
         }
         rBegin() {
    -        return new OrderedSetIterator(this.h.W || this.h, this.h, this, 1);
    +        return new OrderedSetIterator(this.h.K || this.h, this.h, this, 1);
         }
         rEnd() {
             return new OrderedSetIterator(this.h, this.h, this, 1);
         }
         front() {
    -        return this.h.U ? this.h.U.u : undefined;
    +        return this.h.T ? this.h.T.u : undefined;
         }
         back() {
    -        return this.h.W ? this.h.W.u : undefined;
    +        return this.h.K ? this.h.K.u : undefined;
    +    }
    +    lowerBound(t) {
    +        const e = this.U(this.X, t);
    +        return new OrderedSetIterator(e, this.h, this);
    +    }
    +    upperBound(t) {
    +        const e = this.Y(this.X, t);
    +        return new OrderedSetIterator(e, this.h, this);
         }
    -    insert(e, t) {
    -        return this.M(e, undefined, t);
    +    reverseLowerBound(t) {
    +        const e = this.Z(this.X, t);
    +        return new OrderedSetIterator(e, this.h, this);
         }
    -    find(e) {
    -        const t = this.I(this.Y, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +    reverseUpperBound(t) {
    +        const e = this.$(this.X, t);
    +        return new OrderedSetIterator(e, this.h, this);
         }
    -    lowerBound(e) {
    -        const t = this.X(this.Y, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +    forEach(t) {
    +        this.tt((function(e, r, s) {
    +            t(e.u, r, s);
    +        }));
         }
    -    upperBound(e) {
    -        const t = this.Z(this.Y, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +    insert(t, e) {
    +        return this.M(t, undefined, e);
         }
    -    reverseLowerBound(e) {
    -        const t = this.$(this.Y, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +    getElementByPos(t) {
    +        if (t < 0 || t > this.i - 1) {
    +            throw new RangeError;
    +        }
    +        const e = this.tt(t);
    +        return e.u;
         }
    -    reverseUpperBound(e) {
    -        const t = this.rr(this.Y, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +    find(t) {
    +        const e = this.rt(this.X, t);
    +        return new OrderedSetIterator(e, this.h, this);
         }
    -    union(e) {
    -        const t = this;
    -        e.forEach((function(e) {
    -            t.insert(e);
    +    union(t) {
    +        const e = this;
    +        t.forEach((function(t) {
    +            e.insert(t);
             }));
             return this.i;
         }
    -    [Symbol.iterator]() {
    -        return this.K(this.Y);
    +    * [Symbol.iterator]() {
    +        const t = this.i;
    +        const e = this.tt();
    +        for (let r = 0; r < t; ++r) {
    +            yield e[r].u;
    +        }
         }
     }
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/utils/math.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/utils/math.js
    new file mode 100644
    index 00000000000000..13aec3ce91f684
    --- /dev/null
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/cjs/utils/math.js
    @@ -0,0 +1,18 @@
    +"use strict";
    +
    +Object.defineProperty(exports, "t", {
    +    value: true
    +});
    +
    +exports.ceil = ceil;
    +
    +exports.floor = void 0;
    +
    +function ceil(e, t) {
    +    return Math.floor((e + t - 1) / t);
    +}
    +
    +const floor = Math.floor;
    +
    +exports.floor = floor;
    +//# sourceMappingURL=math.js.map
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/ContainerBase/index.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/ContainerBase/index.js
    index d5e10db88ac21d..ce49ce81ba3b45 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/ContainerBase/index.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/ContainerBase/index.js
    @@ -36,20 +36,20 @@ export { ContainerIterator };
     
     var Base = function() {
         function Base() {
    -        this.M = 0;
    +        this.i = 0;
         }
         Object.defineProperty(Base.prototype, "length", {
             get: function() {
    -            return this.M;
    +            return this.i;
             },
             enumerable: false,
             configurable: true
         });
         Base.prototype.size = function() {
    -        return this.M;
    +        return this.i;
         };
         Base.prototype.empty = function() {
    -        return this.M === 0;
    +        return this.i === 0;
         };
         return Base;
     }();
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/Base/index.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/Base/index.js
    index 028b7d484aecc3..e441b5e2600bc4 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/Base/index.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/Base/index.js
    @@ -30,17 +30,17 @@ var HashContainerIterator = function(t) {
         function HashContainerIterator(i, r, e) {
             var n = t.call(this, e) || this;
             n.o = i;
    -        n.h = r;
    +        n.u = r;
             if (n.iteratorType === 0) {
                 n.pre = function() {
    -                if (this.o.L === this.h) {
    +                if (this.o.L === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.L;
                     return this;
                 };
                 n.next = function() {
    -                if (this.o === this.h) {
    +                if (this.o === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.m;
    @@ -48,14 +48,14 @@ var HashContainerIterator = function(t) {
                 };
             } else {
                 n.pre = function() {
    -                if (this.o.m === this.h) {
    +                if (this.o.m === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.m;
                     return this;
                 };
                 n.next = function() {
    -                if (this.o === this.h) {
    +                if (this.o === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.L;
    @@ -77,21 +77,21 @@ var HashContainer = function(t) {
             i.I = {};
             i.HASH_TAG = Symbol("@@HASH_TAG");
             Object.setPrototypeOf(i.I, null);
    -        i.h = {};
    -        i.h.L = i.h.m = i.H = i.l = i.h;
    +        i.u = {};
    +        i.u.L = i.u.m = i.l = i.M = i.u;
             return i;
         }
    -    HashContainer.prototype.G = function(t) {
    +    HashContainer.prototype.U = function(t) {
             var i = t.L, r = t.m;
             i.m = r;
             r.L = i;
    -        if (t === this.H) {
    -            this.H = r;
    -        }
             if (t === this.l) {
    -            this.l = i;
    +            this.l = r;
    +        }
    +        if (t === this.M) {
    +            this.M = i;
             }
    -        this.M -= 1;
    +        this.i -= 1;
         };
         HashContainer.prototype.v = function(t, i, r) {
             if (r === undefined) r = checkObject(t);
    @@ -99,64 +99,63 @@ var HashContainer = function(t) {
             if (r) {
                 var n = t[this.HASH_TAG];
                 if (n !== undefined) {
    -                this._[n].p = i;
    -                return this.M;
    +                this._[n].H = i;
    +                return this.i;
                 }
                 Object.defineProperty(t, this.HASH_TAG, {
                     value: this._.length,
                     configurable: true
                 });
                 e = {
    -                u: t,
    -                p: i,
    -                L: this.l,
    -                m: this.h
    +                p: t,
    +                H: i,
    +                L: this.M,
    +                m: this.u
                 };
                 this._.push(e);
             } else {
                 var s = this.I[t];
                 if (s) {
    -                s.p = i;
    -                return this.M;
    +                s.H = i;
    +                return this.i;
                 }
    -            e = {
    -                u: t,
    -                p: i,
    -                L: this.l,
    -                m: this.h
    +            this.I[t] = e = {
    +                p: t,
    +                H: i,
    +                L: this.M,
    +                m: this.u
                 };
    -            this.I[t] = e;
             }
    -        if (this.M === 0) {
    -            this.H = e;
    -            this.h.m = e;
    +        if (this.i === 0) {
    +            this.l = e;
    +            this.u.m = e;
             } else {
    -            this.l.m = e;
    +            this.M.m = e;
             }
    -        this.l = e;
    -        this.h.L = e;
    -        return ++this.M;
    +        this.M = e;
    +        this.u.L = e;
    +        return ++this.i;
         };
         HashContainer.prototype.g = function(t, i) {
             if (i === undefined) i = checkObject(t);
             if (i) {
                 var r = t[this.HASH_TAG];
    -            if (r === undefined) return this.h;
    +            if (r === undefined) return this.u;
                 return this._[r];
             } else {
    -            return this.I[t] || this.h;
    +            return this.I[t] || this.u;
             }
         };
         HashContainer.prototype.clear = function() {
             var t = this.HASH_TAG;
             this._.forEach((function(i) {
    -            delete i.u[t];
    +            delete i.p[t];
             }));
             this._ = [];
             this.I = {};
             Object.setPrototypeOf(this.I, null);
    -        this.M = 0;
    -        this.H = this.l = this.h.L = this.h.m = this.h;
    +        this.i = 0;
    +        this.l = this.M = this.u.L = this.u.m = this.u;
         };
         HashContainer.prototype.eraseElementByKey = function(t, i) {
             var r;
    @@ -172,27 +171,27 @@ var HashContainer = function(t) {
                 if (r === undefined) return false;
                 delete this.I[t];
             }
    -        this.G(r);
    +        this.U(r);
             return true;
         };
         HashContainer.prototype.eraseElementByIterator = function(t) {
             var i = t.o;
    -        if (i === this.h) {
    +        if (i === this.u) {
                 throwIteratorAccessError();
             }
    -        this.G(i);
    +        this.U(i);
             return t.next();
         };
         HashContainer.prototype.eraseElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var i = this.H;
    +        var i = this.l;
             while (t--) {
                 i = i.m;
             }
    -        this.G(i);
    -        return this.M;
    +        this.U(i);
    +        return this.i;
         };
         return HashContainer;
     }(Container);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashMap.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashMap.js
    index af08bfb77d710d..618afbd9b6d0e7 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashMap.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashMap.js
    @@ -19,7 +19,7 @@ var __extends = this && this.t || function() {
         };
     }();
     
    -var __generator = this && this.i || function(t, r) {
    +var __generator = this && this.h || function(t, r) {
         var n = {
             label: 0,
             sent: function() {
    @@ -124,19 +124,19 @@ var HashMapIterator = function(t) {
         }
         Object.defineProperty(HashMapIterator.prototype, "pointer", {
             get: function() {
    -            if (this.o === this.h) {
    +            if (this.o === this.u) {
                     throwIteratorAccessError();
                 }
                 var t = this;
                 return new Proxy([], {
                     get: function(r, n) {
    -                    if (n === "0") return t.o.u; else if (n === "1") return t.o.p;
    +                    if (n === "0") return t.o.p; else if (n === "1") return t.o.H;
                     },
                     set: function(r, n, e) {
                         if (n !== "1") {
                             throw new TypeError("props must be 1");
                         }
    -                    t.o.p = e;
    +                    t.o.H = e;
                         return true;
                     }
                 });
    @@ -145,7 +145,7 @@ var HashMapIterator = function(t) {
             configurable: true
         });
         HashMapIterator.prototype.copy = function() {
    -        return new HashMapIterator(this.o, this.h, this.container, this.iteratorType);
    +        return new HashMapIterator(this.o, this.u, this.container, this.iteratorType);
         };
         return HashMapIterator;
     }(HashContainerIterator);
    @@ -164,24 +164,24 @@ var HashMap = function(t) {
             return n;
         }
         HashMap.prototype.begin = function() {
    -        return new HashMapIterator(this.H, this.h, this);
    +        return new HashMapIterator(this.l, this.u, this);
         };
         HashMap.prototype.end = function() {
    -        return new HashMapIterator(this.h, this.h, this);
    +        return new HashMapIterator(this.u, this.u, this);
         };
         HashMap.prototype.rBegin = function() {
    -        return new HashMapIterator(this.l, this.h, this, 1);
    +        return new HashMapIterator(this.M, this.u, this, 1);
         };
         HashMap.prototype.rEnd = function() {
    -        return new HashMapIterator(this.h, this.h, this, 1);
    +        return new HashMapIterator(this.u, this.u, this, 1);
         };
         HashMap.prototype.front = function() {
    -        if (this.M === 0) return;
    -        return [ this.H.u, this.H.p ];
    +        if (this.i === 0) return;
    +        return [ this.l.p, this.l.H ];
         };
         HashMap.prototype.back = function() {
    -        if (this.M === 0) return;
    -        return [ this.l.u, this.l.p ];
    +        if (this.i === 0) return;
    +        return [ this.M.p, this.M.H ];
         };
         HashMap.prototype.setElement = function(t, r, n) {
             return this.v(t, r, n);
    @@ -190,56 +190,54 @@ var HashMap = function(t) {
             if (r === undefined) r = checkObject(t);
             if (r) {
                 var n = t[this.HASH_TAG];
    -            return n !== undefined ? this._[n].p : undefined;
    +            return n !== undefined ? this._[n].H : undefined;
             }
             var e = this.I[t];
    -        return e ? e.p : undefined;
    +        return e ? e.H : undefined;
         };
         HashMap.prototype.getElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var r = this.H;
    +        var r = this.l;
             while (t--) {
                 r = r.m;
             }
    -        return [ r.u, r.p ];
    +        return [ r.p, r.H ];
         };
         HashMap.prototype.find = function(t, r) {
             var n = this.g(t, r);
    -        return new HashMapIterator(n, this.h, this);
    +        return new HashMapIterator(n, this.u, this);
         };
         HashMap.prototype.forEach = function(t) {
             var r = 0;
    -        var n = this.H;
    -        while (n !== this.h) {
    -            t([ n.u, n.p ], r++, this);
    +        var n = this.l;
    +        while (n !== this.u) {
    +            t([ n.p, n.H ], r++, this);
                 n = n.m;
             }
         };
         HashMap.prototype[Symbol.iterator] = function() {
    -        return function() {
    -            var t;
    -            return __generator(this, (function(r) {
    -                switch (r.label) {
    -                  case 0:
    -                    t = this.H;
    -                    r.label = 1;
    +        var t;
    +        return __generator(this, (function(r) {
    +            switch (r.label) {
    +              case 0:
    +                t = this.l;
    +                r.label = 1;
     
    -                  case 1:
    -                    if (!(t !== this.h)) return [ 3, 3 ];
    -                    return [ 4, [ t.u, t.p ] ];
    +              case 1:
    +                if (!(t !== this.u)) return [ 3, 3 ];
    +                return [ 4, [ t.p, t.H ] ];
     
    -                  case 2:
    -                    r.sent();
    -                    t = t.m;
    -                    return [ 3, 1 ];
    +              case 2:
    +                r.sent();
    +                t = t.m;
    +                return [ 3, 1 ];
     
    -                  case 3:
    -                    return [ 2 ];
    -                }
    -            }));
    -        }.bind(this)();
    +              case 3:
    +                return [ 2 ];
    +            }
    +        }));
         };
         return HashMap;
     }(HashContainer);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashSet.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashSet.js
    index df0565855f5419..3e106fdba7604d 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashSet.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/HashContainer/HashSet.js
    @@ -19,7 +19,7 @@ var __extends = this && this.t || function() {
         };
     }();
     
    -var __generator = this && this.i || function(t, r) {
    +var __generator = this && this.h || function(t, r) {
         var e = {
             label: 0,
             sent: function() {
    @@ -122,16 +122,16 @@ var HashSetIterator = function(t) {
         }
         Object.defineProperty(HashSetIterator.prototype, "pointer", {
             get: function() {
    -            if (this.o === this.h) {
    +            if (this.o === this.u) {
                     throwIteratorAccessError();
                 }
    -            return this.o.u;
    +            return this.o.p;
             },
             enumerable: false,
             configurable: true
         });
         HashSetIterator.prototype.copy = function() {
    -        return new HashSetIterator(this.o, this.h, this.container, this.iteratorType);
    +        return new HashSetIterator(this.o, this.u, this.container, this.iteratorType);
         };
         return HashSetIterator;
     }(HashContainerIterator);
    @@ -150,71 +150,69 @@ var HashSet = function(t) {
             return e;
         }
         HashSet.prototype.begin = function() {
    -        return new HashSetIterator(this.H, this.h, this);
    +        return new HashSetIterator(this.l, this.u, this);
         };
         HashSet.prototype.end = function() {
    -        return new HashSetIterator(this.h, this.h, this);
    +        return new HashSetIterator(this.u, this.u, this);
         };
         HashSet.prototype.rBegin = function() {
    -        return new HashSetIterator(this.l, this.h, this, 1);
    +        return new HashSetIterator(this.M, this.u, this, 1);
         };
         HashSet.prototype.rEnd = function() {
    -        return new HashSetIterator(this.h, this.h, this, 1);
    +        return new HashSetIterator(this.u, this.u, this, 1);
         };
         HashSet.prototype.front = function() {
    -        return this.H.u;
    +        return this.l.p;
         };
         HashSet.prototype.back = function() {
    -        return this.l.u;
    +        return this.M.p;
         };
         HashSet.prototype.insert = function(t, r) {
             return this.v(t, undefined, r);
         };
         HashSet.prototype.getElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var r = this.H;
    +        var r = this.l;
             while (t--) {
                 r = r.m;
             }
    -        return r.u;
    +        return r.p;
         };
         HashSet.prototype.find = function(t, r) {
             var e = this.g(t, r);
    -        return new HashSetIterator(e, this.h, this);
    +        return new HashSetIterator(e, this.u, this);
         };
         HashSet.prototype.forEach = function(t) {
             var r = 0;
    -        var e = this.H;
    -        while (e !== this.h) {
    -            t(e.u, r++, this);
    +        var e = this.l;
    +        while (e !== this.u) {
    +            t(e.p, r++, this);
                 e = e.m;
             }
         };
         HashSet.prototype[Symbol.iterator] = function() {
    -        return function() {
    -            var t;
    -            return __generator(this, (function(r) {
    -                switch (r.label) {
    -                  case 0:
    -                    t = this.H;
    -                    r.label = 1;
    +        var t;
    +        return __generator(this, (function(r) {
    +            switch (r.label) {
    +              case 0:
    +                t = this.l;
    +                r.label = 1;
     
    -                  case 1:
    -                    if (!(t !== this.h)) return [ 3, 3 ];
    -                    return [ 4, t.u ];
    +              case 1:
    +                if (!(t !== this.u)) return [ 3, 3 ];
    +                return [ 4, t.p ];
     
    -                  case 2:
    -                    r.sent();
    -                    t = t.m;
    -                    return [ 3, 1 ];
    +              case 2:
    +                r.sent();
    +                t = t.m;
    +                return [ 3, 1 ];
     
    -                  case 3:
    -                    return [ 2 ];
    -                }
    -            }));
    -        }.bind(this)();
    +              case 3:
    +                return [ 2 ];
    +            }
    +        }));
         };
         return HashSet;
     }(HashContainer);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/PriorityQueue.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/PriorityQueue.js
    index 54e5f492dfdd02..03355ad71a62de 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/PriorityQueue.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/PriorityQueue.js
    @@ -19,7 +19,7 @@ var __extends = this && this.t || function() {
         };
     }();
     
    -var __read = this && this.q || function(i, r) {
    +var __read = this && this.P || function(i, r) {
         var t = typeof Symbol === "function" && i[Symbol.iterator];
         if (!t) return i;
         var e = t.call(i), n, u = [], s;
    @@ -39,7 +39,7 @@ var __read = this && this.q || function(i, r) {
         return u;
     };
     
    -var __spreadArray = this && this.D || function(i, r, t) {
    +var __spreadArray = this && this.A || function(i, r, t) {
         if (t || arguments.length === 2) for (var e = 0, n = r.length, u; e < n; e++) {
             if (u || !(e in r)) {
                 if (!u) u = Array.prototype.slice.call(r, 0, e);
    @@ -68,101 +68,101 @@ var PriorityQueue = function(i) {
                 e = true;
             }
             var n = i.call(this) || this;
    -        n.$ = t;
    +        n.j = t;
             if (Array.isArray(r)) {
    -            n.ii = e ? __spreadArray([], __read(r), false) : r;
    +            n.B = e ? __spreadArray([], __read(r), false) : r;
             } else {
    -            n.ii = [];
    +            n.B = [];
                 var u = n;
                 r.forEach((function(i) {
    -                u.ii.push(i);
    +                u.B.push(i);
                 }));
             }
    -        n.M = n.ii.length;
    -        var s = n.M >> 1;
    -        for (var o = n.M - 1 >> 1; o >= 0; --o) {
    -            n.ri(o, s);
    +        n.i = n.B.length;
    +        var s = n.i >> 1;
    +        for (var o = n.i - 1 >> 1; o >= 0; --o) {
    +            n.O(o, s);
             }
             return n;
         }
    -    PriorityQueue.prototype.ti = function(i) {
    -        var r = this.ii[i];
    +    PriorityQueue.prototype.S = function(i) {
    +        var r = this.B[i];
             while (i > 0) {
                 var t = i - 1 >> 1;
    -            var e = this.ii[t];
    -            if (this.$(e, r) <= 0) break;
    -            this.ii[i] = e;
    +            var e = this.B[t];
    +            if (this.j(e, r) <= 0) break;
    +            this.B[i] = e;
                 i = t;
             }
    -        this.ii[i] = r;
    +        this.B[i] = r;
         };
    -    PriorityQueue.prototype.ri = function(i, r) {
    -        var t = this.ii[i];
    +    PriorityQueue.prototype.O = function(i, r) {
    +        var t = this.B[i];
             while (i < r) {
                 var e = i << 1 | 1;
                 var n = e + 1;
    -            var u = this.ii[e];
    -            if (n < this.M && this.$(u, this.ii[n]) > 0) {
    +            var u = this.B[e];
    +            if (n < this.i && this.j(u, this.B[n]) > 0) {
                     e = n;
    -                u = this.ii[n];
    +                u = this.B[n];
                 }
    -            if (this.$(u, t) >= 0) break;
    -            this.ii[i] = u;
    +            if (this.j(u, t) >= 0) break;
    +            this.B[i] = u;
                 i = e;
             }
    -        this.ii[i] = t;
    +        this.B[i] = t;
         };
         PriorityQueue.prototype.clear = function() {
    -        this.M = 0;
    -        this.ii.length = 0;
    +        this.i = 0;
    +        this.B.length = 0;
         };
         PriorityQueue.prototype.push = function(i) {
    -        this.ii.push(i);
    -        this.ti(this.M);
    -        this.M += 1;
    +        this.B.push(i);
    +        this.S(this.i);
    +        this.i += 1;
         };
         PriorityQueue.prototype.pop = function() {
    -        if (this.M === 0) return;
    -        var i = this.ii[0];
    -        var r = this.ii.pop();
    -        this.M -= 1;
    -        if (this.M) {
    -            this.ii[0] = r;
    -            this.ri(0, this.M >> 1);
    +        if (this.i === 0) return;
    +        var i = this.B[0];
    +        var r = this.B.pop();
    +        this.i -= 1;
    +        if (this.i) {
    +            this.B[0] = r;
    +            this.O(0, this.i >> 1);
             }
             return i;
         };
         PriorityQueue.prototype.top = function() {
    -        return this.ii[0];
    +        return this.B[0];
         };
         PriorityQueue.prototype.find = function(i) {
    -        return this.ii.indexOf(i) >= 0;
    +        return this.B.indexOf(i) >= 0;
         };
         PriorityQueue.prototype.remove = function(i) {
    -        var r = this.ii.indexOf(i);
    +        var r = this.B.indexOf(i);
             if (r < 0) return false;
             if (r === 0) {
                 this.pop();
    -        } else if (r === this.M - 1) {
    -            this.ii.pop();
    -            this.M -= 1;
    +        } else if (r === this.i - 1) {
    +            this.B.pop();
    +            this.i -= 1;
             } else {
    -            this.ii.splice(r, 1, this.ii.pop());
    -            this.M -= 1;
    -            this.ti(r);
    -            this.ri(r, this.M >> 1);
    +            this.B.splice(r, 1, this.B.pop());
    +            this.i -= 1;
    +            this.S(r);
    +            this.O(r, this.i >> 1);
             }
             return true;
         };
         PriorityQueue.prototype.updateItem = function(i) {
    -        var r = this.ii.indexOf(i);
    +        var r = this.B.indexOf(i);
             if (r < 0) return false;
    -        this.ti(r);
    -        this.ri(r, this.M >> 1);
    +        this.S(r);
    +        this.O(r, this.i >> 1);
             return true;
         };
         PriorityQueue.prototype.toArray = function() {
    -        return __spreadArray([], __read(this.ii), false);
    +        return __spreadArray([], __read(this.B), false);
         };
         return PriorityQueue;
     }(Base);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Queue.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Queue.js
    index 9d8e965877de64..d3231653f75182 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Queue.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Queue.js
    @@ -28,8 +28,8 @@ var Queue = function(t) {
                 i = [];
             }
             var n = t.call(this) || this;
    -        n.A = 0;
    -        n.tt = [];
    +        n.C = 0;
    +        n.T = [];
             var e = n;
             i.forEach((function(t) {
                 e.push(t);
    @@ -37,30 +37,30 @@ var Queue = function(t) {
             return n;
         }
         Queue.prototype.clear = function() {
    -        this.tt = [];
    -        this.M = this.A = 0;
    +        this.T = [];
    +        this.i = this.C = 0;
         };
         Queue.prototype.push = function(t) {
    -        var i = this.tt.length;
    -        if (this.A / i > .5 && this.A + this.M >= i && i > 4096) {
    -            var n = this.M;
    +        var i = this.T.length;
    +        if (this.C / i > .5 && this.C + this.i >= i && i > 4096) {
    +            var n = this.i;
                 for (var e = 0; e < n; ++e) {
    -                this.tt[e] = this.tt[this.A + e];
    +                this.T[e] = this.T[this.C + e];
                 }
    -            this.A = 0;
    -            this.tt[this.M] = t;
    -        } else this.tt[this.A + this.M] = t;
    -        return ++this.M;
    +            this.C = 0;
    +            this.T[this.i] = t;
    +        } else this.T[this.C + this.i] = t;
    +        return ++this.i;
         };
         Queue.prototype.pop = function() {
    -        if (this.M === 0) return;
    -        var t = this.tt[this.A++];
    -        this.M -= 1;
    +        if (this.i === 0) return;
    +        var t = this.T[this.C++];
    +        this.i -= 1;
             return t;
         };
         Queue.prototype.front = function() {
    -        if (this.M === 0) return;
    -        return this.tt[this.A];
    +        if (this.i === 0) return;
    +        return this.T[this.C];
         };
         return Queue;
     }(Base);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Stack.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Stack.js
    index a7cd3bddc82c80..fde124f2b1a29a 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Stack.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/OtherContainer/Stack.js
    @@ -28,7 +28,7 @@ var Stack = function(t) {
                 n = [];
             }
             var i = t.call(this) || this;
    -        i.nt = [];
    +        i.k = [];
             var r = i;
             n.forEach((function(t) {
                 r.push(t);
    @@ -36,21 +36,21 @@ var Stack = function(t) {
             return i;
         }
         Stack.prototype.clear = function() {
    -        this.M = 0;
    -        this.nt = [];
    +        this.i = 0;
    +        this.k = [];
         };
         Stack.prototype.push = function(t) {
    -        this.nt.push(t);
    -        this.M += 1;
    -        return this.M;
    +        this.k.push(t);
    +        this.i += 1;
    +        return this.i;
         };
         Stack.prototype.pop = function() {
    -        if (this.M === 0) return;
    -        this.M -= 1;
    -        return this.nt.pop();
    +        if (this.i === 0) return;
    +        this.i -= 1;
    +        return this.k.pop();
         };
         Stack.prototype.top = function() {
    -        return this.nt[this.M - 1];
    +        return this.k[this.i - 1];
         };
         return Stack;
     }(Base);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Deque.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Deque.js
    index 7020e00efc7e3f..deb9ebadb0db26 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Deque.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Deque.js
    @@ -19,7 +19,7 @@ var __extends = this && this.t || function() {
         };
     }();
     
    -var __generator = this && this.i || function(t, i) {
    +var __generator = this && this.h || function(t, i) {
         var r = {
             label: 0,
             sent: function() {
    @@ -109,7 +109,7 @@ var __generator = this && this.i || function(t, i) {
         }
     };
     
    -var __read = this && this.q || function(t, i) {
    +var __read = this && this.P || function(t, i) {
         var r = typeof Symbol === "function" && t[Symbol.iterator];
         if (!r) return t;
         var e = r.call(t), s, h = [], n;
    @@ -129,7 +129,7 @@ var __read = this && this.q || function(t, i) {
         return h;
     };
     
    -var __spreadArray = this && this.D || function(t, i, r) {
    +var __spreadArray = this && this.A || function(t, i, r) {
         if (r || arguments.length === 2) for (var e = 0, s = i.length, h; e < s; e++) {
             if (h || !(e in i)) {
                 if (!h) h = Array.prototype.slice.call(i, 0, e);
    @@ -143,6 +143,8 @@ import SequentialContainer from "./Base";
     
     import { RandomIterator } from "./Base/RandomIterator";
     
    +import * as Math from "../../utils/math";
    +
     var DequeIterator = function(t) {
         __extends(DequeIterator, t);
         function DequeIterator(i, r, e) {
    @@ -166,235 +168,243 @@ var Deque = function(t) {
                 r = 1 << 12;
             }
             var e = t.call(this) || this;
    -        e.A = 0;
    -        e.S = 0;
    -        e.R = 0;
    -        e.k = 0;
             e.C = 0;
    -        e.j = [];
    +        e.q = 0;
    +        e.D = 0;
    +        e.R = 0;
    +        e.N = 0;
    +        e.G = [];
             var s = function() {
                 if (typeof i.length === "number") return i.length;
                 if (typeof i.size === "number") return i.size;
                 if (typeof i.size === "function") return i.size();
                 throw new TypeError("Cannot get the length or size of the container");
             }();
    -        e.B = r;
    -        e.C = Math.max(Math.ceil(s / e.B), 1);
    -        for (var h = 0; h < e.C; ++h) {
    -            e.j.push(new Array(e.B));
    -        }
    -        var n = Math.ceil(s / e.B);
    -        e.A = e.R = (e.C >> 1) - (n >> 1);
    -        e.S = e.k = e.B - s % e.B >> 1;
    +        e.F = r;
    +        e.N = Math.ceil(s, e.F) || 1;
    +        for (var h = 0; h < e.N; ++h) {
    +            e.G.push(new Array(e.F));
    +        }
    +        var n = Math.ceil(s, e.F);
    +        e.C = e.D = (e.N >> 1) - (n >> 1);
    +        e.q = e.R = e.F - s % e.F >> 1;
             var u = e;
             i.forEach((function(t) {
                 u.pushBack(t);
             }));
             return e;
         }
    -    Deque.prototype.O = function() {
    -        var t = [];
    -        var i = Math.max(this.C >> 1, 1);
    -        for (var r = 0; r < i; ++r) {
    -            t[r] = new Array(this.B);
    +    Deque.prototype.J = function(t) {
    +        var i = [];
    +        var r = t || this.N >> 1 || 1;
    +        for (var e = 0; e < r; ++e) {
    +            i[e] = new Array(this.F);
             }
    -        for (var r = this.A; r < this.C; ++r) {
    -            t[t.length] = this.j[r];
    +        for (var e = this.C; e < this.N; ++e) {
    +            i[i.length] = this.G[e];
             }
    -        for (var r = 0; r < this.R; ++r) {
    -            t[t.length] = this.j[r];
    +        for (var e = 0; e < this.D; ++e) {
    +            i[i.length] = this.G[e];
             }
    -        t[t.length] = __spreadArray([], __read(this.j[this.R]), false);
    -        this.A = i;
    -        this.R = t.length - 1;
    -        for (var r = 0; r < i; ++r) {
    -            t[t.length] = new Array(this.B);
    +        i[i.length] = __spreadArray([], __read(this.G[this.D]), false);
    +        this.C = r;
    +        this.D = i.length - 1;
    +        for (var e = 0; e < r; ++e) {
    +            i[i.length] = new Array(this.F);
             }
    -        this.j = t;
    -        this.C = t.length;
    +        this.G = i;
    +        this.N = i.length;
         };
    -    Deque.prototype.T = function(t) {
    -        var i = this.S + t + 1;
    -        var r = i % this.B;
    -        var e = r - 1;
    -        var s = this.A + (i - r) / this.B;
    -        if (r === 0) s -= 1;
    -        s %= this.C;
    -        if (e < 0) e += this.B;
    +    Deque.prototype.K = function(t) {
    +        var i, r;
    +        var e = this.q + t;
    +        i = this.C + Math.floor(e / this.F);
    +        if (i >= this.N) {
    +            i -= this.N;
    +        }
    +        r = (e + 1) % this.F - 1;
    +        if (r < 0) {
    +            r = this.F - 1;
    +        }
             return {
    -            curNodeBucketIndex: s,
    -            curNodePointerIndex: e
    +            curNodeBucketIndex: i,
    +            curNodePointerIndex: r
             };
         };
         Deque.prototype.clear = function() {
    -        this.j = [ new Array(this.B) ];
    -        this.C = 1;
    -        this.A = this.R = this.M = 0;
    -        this.S = this.k = this.B >> 1;
    +        this.G = [ new Array(this.F) ];
    +        this.N = 1;
    +        this.C = this.D = this.i = 0;
    +        this.q = this.R = this.F >> 1;
         };
         Deque.prototype.begin = function() {
             return new DequeIterator(0, this);
         };
         Deque.prototype.end = function() {
    -        return new DequeIterator(this.M, this);
    +        return new DequeIterator(this.i, this);
         };
         Deque.prototype.rBegin = function() {
    -        return new DequeIterator(this.M - 1, this, 1);
    +        return new DequeIterator(this.i - 1, this, 1);
         };
         Deque.prototype.rEnd = function() {
             return new DequeIterator(-1, this, 1);
         };
         Deque.prototype.front = function() {
    -        if (this.M === 0) return;
    -        return this.j[this.A][this.S];
    +        if (this.i === 0) return;
    +        return this.G[this.C][this.q];
         };
         Deque.prototype.back = function() {
    -        if (this.M === 0) return;
    -        return this.j[this.R][this.k];
    +        if (this.i === 0) return;
    +        return this.G[this.D][this.R];
         };
         Deque.prototype.pushBack = function(t) {
    -        if (this.M) {
    -            if (this.k < this.B - 1) {
    -                this.k += 1;
    -            } else if (this.R < this.C - 1) {
    +        if (this.i) {
    +            if (this.R < this.F - 1) {
                     this.R += 1;
    -                this.k = 0;
    +            } else if (this.D < this.N - 1) {
    +                this.D += 1;
    +                this.R = 0;
                 } else {
    +                this.D = 0;
                     this.R = 0;
    -                this.k = 0;
                 }
    -            if (this.R === this.A && this.k === this.S) this.O();
    +            if (this.D === this.C && this.R === this.q) this.J();
             }
    -        this.M += 1;
    -        this.j[this.R][this.k] = t;
    -        return this.M;
    +        this.i += 1;
    +        this.G[this.D][this.R] = t;
    +        return this.i;
         };
         Deque.prototype.popBack = function() {
    -        if (this.M === 0) return;
    -        var t = this.j[this.R][this.k];
    -        if (this.M !== 1) {
    -            if (this.k > 0) {
    -                this.k -= 1;
    -            } else if (this.R > 0) {
    +        if (this.i === 0) return;
    +        var t = this.G[this.D][this.R];
    +        if (this.i !== 1) {
    +            if (this.R > 0) {
                     this.R -= 1;
    -                this.k = this.B - 1;
    +            } else if (this.D > 0) {
    +                this.D -= 1;
    +                this.R = this.F - 1;
                 } else {
    -                this.R = this.C - 1;
    -                this.k = this.B - 1;
    +                this.D = this.N - 1;
    +                this.R = this.F - 1;
                 }
             }
    -        this.M -= 1;
    +        this.i -= 1;
             return t;
         };
         Deque.prototype.pushFront = function(t) {
    -        if (this.M) {
    -            if (this.S > 0) {
    -                this.S -= 1;
    -            } else if (this.A > 0) {
    -                this.A -= 1;
    -                this.S = this.B - 1;
    +        if (this.i) {
    +            if (this.q > 0) {
    +                this.q -= 1;
    +            } else if (this.C > 0) {
    +                this.C -= 1;
    +                this.q = this.F - 1;
                 } else {
    -                this.A = this.C - 1;
    -                this.S = this.B - 1;
    +                this.C = this.N - 1;
    +                this.q = this.F - 1;
                 }
    -            if (this.A === this.R && this.S === this.k) this.O();
    +            if (this.C === this.D && this.q === this.R) this.J();
             }
    -        this.M += 1;
    -        this.j[this.A][this.S] = t;
    -        return this.M;
    +        this.i += 1;
    +        this.G[this.C][this.q] = t;
    +        return this.i;
         };
         Deque.prototype.popFront = function() {
    -        if (this.M === 0) return;
    -        var t = this.j[this.A][this.S];
    -        if (this.M !== 1) {
    -            if (this.S < this.B - 1) {
    -                this.S += 1;
    -            } else if (this.A < this.C - 1) {
    -                this.A += 1;
    -                this.S = 0;
    +        if (this.i === 0) return;
    +        var t = this.G[this.C][this.q];
    +        if (this.i !== 1) {
    +            if (this.q < this.F - 1) {
    +                this.q += 1;
    +            } else if (this.C < this.N - 1) {
    +                this.C += 1;
    +                this.q = 0;
                 } else {
    -                this.A = 0;
    -                this.S = 0;
    +                this.C = 0;
    +                this.q = 0;
                 }
             }
    -        this.M -= 1;
    +        this.i -= 1;
             return t;
         };
         Deque.prototype.getElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var i = this.T(t), r = i.curNodeBucketIndex, e = i.curNodePointerIndex;
    -        return this.j[r][e];
    +        var i = this.K(t), r = i.curNodeBucketIndex, e = i.curNodePointerIndex;
    +        return this.G[r][e];
         };
         Deque.prototype.setElementByPos = function(t, i) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var r = this.T(t), e = r.curNodeBucketIndex, s = r.curNodePointerIndex;
    -        this.j[e][s] = i;
    +        var r = this.K(t), e = r.curNodeBucketIndex, s = r.curNodePointerIndex;
    +        this.G[e][s] = i;
         };
         Deque.prototype.insert = function(t, i, r) {
             if (r === void 0) {
                 r = 1;
             }
    -        if (t < 0 || t > this.M) {
    +        var e = this.i;
    +        if (t < 0 || t > e) {
                 throw new RangeError;
             }
             if (t === 0) {
                 while (r--) this.pushFront(i);
    -        } else if (t === this.M) {
    +        } else if (t === this.i) {
                 while (r--) this.pushBack(i);
             } else {
    -            var e = [];
    -            for (var s = t; s < this.M; ++s) {
    -                e.push(this.getElementByPos(s));
    +            var s = [];
    +            for (var h = t; h < this.i; ++h) {
    +                s.push(this.getElementByPos(h));
                 }
                 this.cut(t - 1);
    -            for (var s = 0; s < r; ++s) this.pushBack(i);
    -            for (var s = 0; s < e.length; ++s) this.pushBack(e[s]);
    +            for (var h = 0; h < r; ++h) this.pushBack(i);
    +            for (var h = 0; h < s.length; ++h) this.pushBack(s[h]);
             }
    -        return this.M;
    +        return this.i;
         };
         Deque.prototype.cut = function(t) {
             if (t < 0) {
                 this.clear();
                 return 0;
             }
    -        var i = this.T(t), r = i.curNodeBucketIndex, e = i.curNodePointerIndex;
    -        this.R = r;
    -        this.k = e;
    -        this.M = t + 1;
    -        return this.M;
    +        var i = this.K(t), r = i.curNodeBucketIndex, e = i.curNodePointerIndex;
    +        this.D = r;
    +        this.R = e;
    +        this.i = t + 1;
    +        return this.i;
         };
         Deque.prototype.eraseElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        if (t === 0) this.popFront(); else if (t === this.M - 1) this.popBack(); else {
    -            var i = [];
    -            for (var r = t + 1; r < this.M; ++r) {
    -                i.push(this.getElementByPos(r));
    +        if (t === 0) this.popFront(); else if (t === this.i - 1) this.popBack(); else {
    +            var i = this.i - 1;
    +            var r = this.K(t), e = r.curNodeBucketIndex, s = r.curNodePointerIndex;
    +            for (var h = t; h < i; ++h) {
    +                var n = this.K(t + 1), u = n.curNodeBucketIndex, o = n.curNodePointerIndex;
    +                this.G[e][s] = this.G[u][o];
    +                e = u;
    +                s = o;
                 }
    -            this.cut(t);
                 this.popBack();
    -            var e = this;
    -            i.forEach((function(t) {
    -                e.pushBack(t);
    -            }));
             }
    -        return this.M;
    +        return this.i;
         };
         Deque.prototype.eraseElementByValue = function(t) {
    -        if (this.M === 0) return 0;
    -        var i = [];
    -        for (var r = 0; r < this.M; ++r) {
    -            var e = this.getElementByPos(r);
    -            if (e !== t) i.push(e);
    +        var i = this.i;
    +        if (i === 0) return 0;
    +        var r = 0;
    +        var e = 0;
    +        while (r < i) {
    +            var s = this.getElementByPos(r);
    +            if (s !== t) {
    +                this.setElementByPos(e, s);
    +                e += 1;
    +            }
    +            r += 1;
             }
    -        var s = i.length;
    -        for (var r = 0; r < s; ++r) this.setElementByPos(r, i[r]);
    -        return this.cut(s - 1);
    +        this.cut(e - 1);
    +        return this.i;
         };
         Deque.prototype.eraseElementByIterator = function(t) {
             var i = t.o;
    @@ -403,7 +413,7 @@ var Deque = function(t) {
             return t;
         };
         Deque.prototype.find = function(t) {
    -        for (var i = 0; i < this.M; ++i) {
    +        for (var i = 0; i < this.i; ++i) {
                 if (this.getElementByPos(i) === t) {
                     return new DequeIterator(i, this);
                 }
    @@ -411,85 +421,91 @@ var Deque = function(t) {
             return this.end();
         };
         Deque.prototype.reverse = function() {
    -        var t = 0;
    -        var i = this.M - 1;
    -        while (t < i) {
    -            var r = this.getElementByPos(t);
    -            this.setElementByPos(t, this.getElementByPos(i));
    -            this.setElementByPos(i, r);
    -            t += 1;
    -            i -= 1;
    -        }
    +        this.G.reverse().forEach((function(t) {
    +            t.reverse();
    +        }));
    +        var t = this, i = t.C, r = t.D, e = t.q, s = t.R;
    +        this.C = this.N - r - 1;
    +        this.D = this.N - i - 1;
    +        this.q = this.F - s - 1;
    +        this.R = this.F - e - 1;
    +        return this;
         };
         Deque.prototype.unique = function() {
    -        if (this.M <= 1) {
    -            return this.M;
    +        if (this.i <= 1) {
    +            return this.i;
             }
             var t = 1;
             var i = this.getElementByPos(0);
    -        for (var r = 1; r < this.M; ++r) {
    +        for (var r = 1; r < this.i; ++r) {
                 var e = this.getElementByPos(r);
                 if (e !== i) {
                     i = e;
                     this.setElementByPos(t++, e);
                 }
             }
    -        while (this.M > t) this.popBack();
    -        return this.M;
    +        this.cut(t - 1);
    +        return this.i;
         };
         Deque.prototype.sort = function(t) {
             var i = [];
    -        for (var r = 0; r < this.M; ++r) {
    +        for (var r = 0; r < this.i; ++r) {
                 i.push(this.getElementByPos(r));
             }
             i.sort(t);
    -        for (var r = 0; r < this.M; ++r) this.setElementByPos(r, i[r]);
    +        for (var r = 0; r < this.i; ++r) {
    +            this.setElementByPos(r, i[r]);
    +        }
    +        return this;
         };
         Deque.prototype.shrinkToFit = function() {
    -        if (this.M === 0) return;
    +        if (this.i === 0) return;
             var t = [];
    -        this.forEach((function(i) {
    -            t.push(i);
    -        }));
    -        this.C = Math.max(Math.ceil(this.M / this.B), 1);
    -        this.M = this.A = this.R = this.S = this.k = 0;
    -        this.j = [];
    -        for (var i = 0; i < this.C; ++i) {
    -            this.j.push(new Array(this.B));
    +        if (this.C === this.D) return; else if (this.C < this.D) {
    +            for (var i = this.C; i <= this.D; ++i) {
    +                t.push(this.G[i]);
    +            }
    +        } else {
    +            for (var i = this.C; i < this.N; ++i) {
    +                t.push(this.G[i]);
    +            }
    +            for (var i = 0; i <= this.D; ++i) {
    +                t.push(this.G[i]);
    +            }
             }
    -        for (var i = 0; i < t.length; ++i) this.pushBack(t[i]);
    +        this.C = 0;
    +        this.D = t.length - 1;
    +        this.G = t;
         };
         Deque.prototype.forEach = function(t) {
    -        for (var i = 0; i < this.M; ++i) {
    +        for (var i = 0; i < this.i; ++i) {
                 t(this.getElementByPos(i), i, this);
             }
         };
         Deque.prototype[Symbol.iterator] = function() {
    -        return function() {
    -            var t;
    -            return __generator(this, (function(i) {
    -                switch (i.label) {
    -                  case 0:
    -                    t = 0;
    -                    i.label = 1;
    +        var t;
    +        return __generator(this, (function(i) {
    +            switch (i.label) {
    +              case 0:
    +                t = 0;
    +                i.label = 1;
     
    -                  case 1:
    -                    if (!(t < this.M)) return [ 3, 4 ];
    -                    return [ 4, this.getElementByPos(t) ];
    +              case 1:
    +                if (!(t < this.i)) return [ 3, 4 ];
    +                return [ 4, this.getElementByPos(t) ];
     
    -                  case 2:
    -                    i.sent();
    -                    i.label = 3;
    +              case 2:
    +                i.sent();
    +                i.label = 3;
     
    -                  case 3:
    -                    ++t;
    -                    return [ 3, 1 ];
    +              case 3:
    +                ++t;
    +                return [ 3, 1 ];
     
    -                  case 4:
    -                    return [ 2 ];
    -                }
    -            }));
    -        }.bind(this)();
    +              case 4:
    +                return [ 2 ];
    +            }
    +        }));
         };
         return Deque;
     }(SequentialContainer);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/LinkList.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/LinkList.js
    index 17ce3e8a5511d9..787a37e0c9a5ab 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/LinkList.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/LinkList.js
    @@ -19,7 +19,7 @@ var __extends = this && this.t || function() {
         };
     }();
     
    -var __generator = this && this.i || function(t, i) {
    +var __generator = this && this.h || function(t, i) {
         var r = {
             label: 0,
             sent: function() {
    @@ -120,18 +120,18 @@ var LinkListIterator = function(t) {
         function LinkListIterator(i, r, n, s) {
             var e = t.call(this, s) || this;
             e.o = i;
    -        e.h = r;
    +        e.u = r;
             e.container = n;
             if (e.iteratorType === 0) {
                 e.pre = function() {
    -                if (this.o.L === this.h) {
    +                if (this.o.L === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.L;
                     return this;
                 };
                 e.next = function() {
    -                if (this.o === this.h) {
    +                if (this.o === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.m;
    @@ -139,14 +139,14 @@ var LinkListIterator = function(t) {
                 };
             } else {
                 e.pre = function() {
    -                if (this.o.m === this.h) {
    +                if (this.o.m === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.m;
                     return this;
                 };
                 e.next = function() {
    -                if (this.o === this.h) {
    +                if (this.o === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.L;
    @@ -157,22 +157,22 @@ var LinkListIterator = function(t) {
         }
         Object.defineProperty(LinkListIterator.prototype, "pointer", {
             get: function() {
    -            if (this.o === this.h) {
    +            if (this.o === this.u) {
                     throwIteratorAccessError();
                 }
    -            return this.o.p;
    +            return this.o.H;
             },
             set: function(t) {
    -            if (this.o === this.h) {
    +            if (this.o === this.u) {
                     throwIteratorAccessError();
                 }
    -            this.o.p = t;
    +            this.o.H = t;
             },
             enumerable: false,
             configurable: true
         });
         LinkListIterator.prototype.copy = function() {
    -        return new LinkListIterator(this.o, this.h, this.container, this.iteratorType);
    +        return new LinkListIterator(this.o, this.u, this.container, this.iteratorType);
         };
         return LinkListIterator;
     }(ContainerIterator);
    @@ -184,157 +184,157 @@ var LinkList = function(t) {
                 i = [];
             }
             var r = t.call(this) || this;
    -        r.h = {};
    -        r.H = r.l = r.h.L = r.h.m = r.h;
    +        r.u = {};
    +        r.l = r.M = r.u.L = r.u.m = r.u;
             var n = r;
             i.forEach((function(t) {
                 n.pushBack(t);
             }));
             return r;
         }
    -    LinkList.prototype.G = function(t) {
    +    LinkList.prototype.U = function(t) {
             var i = t.L, r = t.m;
             i.m = r;
             r.L = i;
    -        if (t === this.H) {
    -            this.H = r;
    -        }
             if (t === this.l) {
    -            this.l = i;
    +            this.l = r;
    +        }
    +        if (t === this.M) {
    +            this.M = i;
             }
    -        this.M -= 1;
    +        this.i -= 1;
         };
    -    LinkList.prototype.F = function(t, i) {
    +    LinkList.prototype.V = function(t, i) {
             var r = i.m;
             var n = {
    -            p: t,
    +            H: t,
                 L: i,
                 m: r
             };
             i.m = n;
             r.L = n;
    -        if (i === this.h) {
    -            this.H = n;
    -        }
    -        if (r === this.h) {
    +        if (i === this.u) {
                 this.l = n;
             }
    -        this.M += 1;
    +        if (r === this.u) {
    +            this.M = n;
    +        }
    +        this.i += 1;
         };
         LinkList.prototype.clear = function() {
    -        this.M = 0;
    -        this.H = this.l = this.h.L = this.h.m = this.h;
    +        this.i = 0;
    +        this.l = this.M = this.u.L = this.u.m = this.u;
         };
         LinkList.prototype.begin = function() {
    -        return new LinkListIterator(this.H, this.h, this);
    +        return new LinkListIterator(this.l, this.u, this);
         };
         LinkList.prototype.end = function() {
    -        return new LinkListIterator(this.h, this.h, this);
    +        return new LinkListIterator(this.u, this.u, this);
         };
         LinkList.prototype.rBegin = function() {
    -        return new LinkListIterator(this.l, this.h, this, 1);
    +        return new LinkListIterator(this.M, this.u, this, 1);
         };
         LinkList.prototype.rEnd = function() {
    -        return new LinkListIterator(this.h, this.h, this, 1);
    +        return new LinkListIterator(this.u, this.u, this, 1);
         };
         LinkList.prototype.front = function() {
    -        return this.H.p;
    +        return this.l.H;
         };
         LinkList.prototype.back = function() {
    -        return this.l.p;
    +        return this.M.H;
         };
         LinkList.prototype.getElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var i = this.H;
    +        var i = this.l;
             while (t--) {
                 i = i.m;
             }
    -        return i.p;
    +        return i.H;
         };
         LinkList.prototype.eraseElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var i = this.H;
    +        var i = this.l;
             while (t--) {
                 i = i.m;
             }
    -        this.G(i);
    -        return this.M;
    +        this.U(i);
    +        return this.i;
         };
         LinkList.prototype.eraseElementByValue = function(t) {
    -        var i = this.H;
    -        while (i !== this.h) {
    -            if (i.p === t) {
    -                this.G(i);
    +        var i = this.l;
    +        while (i !== this.u) {
    +            if (i.H === t) {
    +                this.U(i);
                 }
                 i = i.m;
             }
    -        return this.M;
    +        return this.i;
         };
         LinkList.prototype.eraseElementByIterator = function(t) {
             var i = t.o;
    -        if (i === this.h) {
    +        if (i === this.u) {
                 throwIteratorAccessError();
             }
             t = t.next();
    -        this.G(i);
    +        this.U(i);
             return t;
         };
         LinkList.prototype.pushBack = function(t) {
    -        this.F(t, this.l);
    -        return this.M;
    +        this.V(t, this.M);
    +        return this.i;
         };
         LinkList.prototype.popBack = function() {
    -        if (this.M === 0) return;
    -        var t = this.l.p;
    -        this.G(this.l);
    +        if (this.i === 0) return;
    +        var t = this.M.H;
    +        this.U(this.M);
             return t;
         };
         LinkList.prototype.pushFront = function(t) {
    -        this.F(t, this.h);
    -        return this.M;
    +        this.V(t, this.u);
    +        return this.i;
         };
         LinkList.prototype.popFront = function() {
    -        if (this.M === 0) return;
    -        var t = this.H.p;
    -        this.G(this.H);
    +        if (this.i === 0) return;
    +        var t = this.l.H;
    +        this.U(this.l);
             return t;
         };
         LinkList.prototype.setElementByPos = function(t, i) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        var r = this.H;
    +        var r = this.l;
             while (t--) {
                 r = r.m;
             }
    -        r.p = i;
    +        r.H = i;
         };
         LinkList.prototype.insert = function(t, i, r) {
             if (r === void 0) {
                 r = 1;
             }
    -        if (t < 0 || t > this.M) {
    +        if (t < 0 || t > this.i) {
                 throw new RangeError;
             }
    -        if (r <= 0) return this.M;
    +        if (r <= 0) return this.i;
             if (t === 0) {
                 while (r--) this.pushFront(i);
    -        } else if (t === this.M) {
    +        } else if (t === this.i) {
                 while (r--) this.pushBack(i);
             } else {
    -            var n = this.H;
    +            var n = this.l;
                 for (var s = 1; s < t; ++s) {
                     n = n.m;
                 }
                 var e = n.m;
    -            this.M += r;
    +            this.i += r;
                 while (r--) {
                     n.m = {
    -                    p: i,
    +                    H: i,
                         L: n
                     };
                     n.m.L = n;
    @@ -343,111 +343,115 @@ var LinkList = function(t) {
                 n.m = e;
                 e.L = n;
             }
    -        return this.M;
    +        return this.i;
         };
         LinkList.prototype.find = function(t) {
    -        var i = this.H;
    -        while (i !== this.h) {
    -            if (i.p === t) {
    -                return new LinkListIterator(i, this.h, this);
    +        var i = this.l;
    +        while (i !== this.u) {
    +            if (i.H === t) {
    +                return new LinkListIterator(i, this.u, this);
                 }
                 i = i.m;
             }
             return this.end();
         };
         LinkList.prototype.reverse = function() {
    -        if (this.M <= 1) return;
    -        var t = this.H;
    -        var i = this.l;
    +        if (this.i <= 1) {
    +            return this;
    +        }
    +        var t = this.l;
    +        var i = this.M;
             var r = 0;
    -        while (r << 1 < this.M) {
    -            var n = t.p;
    -            t.p = i.p;
    -            i.p = n;
    +        while (r << 1 < this.i) {
    +            var n = t.H;
    +            t.H = i.H;
    +            i.H = n;
                 t = t.m;
                 i = i.L;
                 r += 1;
             }
    +        return this;
         };
         LinkList.prototype.unique = function() {
    -        if (this.M <= 1) {
    -            return this.M;
    +        if (this.i <= 1) {
    +            return this.i;
             }
    -        var t = this.H;
    -        while (t !== this.h) {
    +        var t = this.l;
    +        while (t !== this.u) {
                 var i = t;
    -            while (i.m !== this.h && i.p === i.m.p) {
    +            while (i.m !== this.u && i.H === i.m.H) {
                     i = i.m;
    -                this.M -= 1;
    +                this.i -= 1;
                 }
                 t.m = i.m;
                 t.m.L = t;
                 t = t.m;
             }
    -        return this.M;
    +        return this.i;
         };
         LinkList.prototype.sort = function(t) {
    -        if (this.M <= 1) return;
    +        if (this.i <= 1) {
    +            return this;
    +        }
             var i = [];
             this.forEach((function(t) {
                 i.push(t);
             }));
             i.sort(t);
    -        var r = this.H;
    +        var r = this.l;
             i.forEach((function(t) {
    -            r.p = t;
    +            r.H = t;
                 r = r.m;
             }));
    +        return this;
         };
         LinkList.prototype.merge = function(t) {
             var i = this;
    -        if (this.M === 0) {
    +        if (this.i === 0) {
                 t.forEach((function(t) {
                     i.pushBack(t);
                 }));
             } else {
    -            var r = this.H;
    +            var r = this.l;
                 t.forEach((function(t) {
    -                while (r !== i.h && r.p <= t) {
    +                while (r !== i.u && r.H <= t) {
                         r = r.m;
                     }
    -                i.F(t, r.L);
    +                i.V(t, r.L);
                 }));
             }
    -        return this.M;
    +        return this.i;
         };
         LinkList.prototype.forEach = function(t) {
    -        var i = this.H;
    +        var i = this.l;
             var r = 0;
    -        while (i !== this.h) {
    -            t(i.p, r++, this);
    +        while (i !== this.u) {
    +            t(i.H, r++, this);
                 i = i.m;
             }
         };
         LinkList.prototype[Symbol.iterator] = function() {
    -        return function() {
    -            var t;
    -            return __generator(this, (function(i) {
    -                switch (i.label) {
    -                  case 0:
    -                    if (this.M === 0) return [ 2 ];
    -                    t = this.H;
    -                    i.label = 1;
    +        var t;
    +        return __generator(this, (function(i) {
    +            switch (i.label) {
    +              case 0:
    +                if (this.i === 0) return [ 2 ];
    +                t = this.l;
    +                i.label = 1;
     
    -                  case 1:
    -                    if (!(t !== this.h)) return [ 3, 3 ];
    -                    return [ 4, t.p ];
    +              case 1:
    +                if (!(t !== this.u)) return [ 3, 3 ];
    +                return [ 4, t.H ];
     
    -                  case 2:
    -                    i.sent();
    -                    t = t.m;
    -                    return [ 3, 1 ];
    +              case 2:
    +                i.sent();
    +                t = t.m;
    +                return [ 3, 1 ];
     
    -                  case 3:
    -                    return [ 2 ];
    -                }
    -            }));
    -        }.bind(this)();
    +              case 3:
    +                return [ 2 ];
    +            }
    +        }));
         };
         return LinkList;
     }(SequentialContainer);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Vector.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Vector.js
    index deaa34270622d8..fc8f802d0b2ba2 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Vector.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/SequentialContainer/Vector.js
    @@ -19,7 +19,7 @@ var __extends = this && this.t || function() {
         };
     }();
     
    -var __generator = this && this.i || function(t, r) {
    +var __generator = this && this.h || function(t, r) {
         var e = {
             label: 0,
             sent: function() {
    @@ -28,108 +28,108 @@ var __generator = this && this.i || function(t, r) {
             },
             trys: [],
             ops: []
    -    }, n, i, o, u;
    -    return u = {
    +    }, n, i, o, s;
    +    return s = {
             next: verb(0),
             throw: verb(1),
             return: verb(2)
    -    }, typeof Symbol === "function" && (u[Symbol.iterator] = function() {
    +    }, typeof Symbol === "function" && (s[Symbol.iterator] = function() {
             return this;
    -    }), u;
    +    }), s;
         function verb(t) {
             return function(r) {
                 return step([ t, r ]);
             };
         }
    -    function step(u) {
    +    function step(s) {
             if (n) throw new TypeError("Generator is already executing.");
             while (e) try {
    -            if (n = 1, i && (o = u[0] & 2 ? i["return"] : u[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 
    -            0) : i.next) && !(o = o.call(i, u[1])).done) return o;
    -            if (i = 0, o) u = [ u[0] & 2, o.value ];
    -            switch (u[0]) {
    +            if (n = 1, i && (o = s[0] & 2 ? i["return"] : s[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 
    +            0) : i.next) && !(o = o.call(i, s[1])).done) return o;
    +            if (i = 0, o) s = [ s[0] & 2, o.value ];
    +            switch (s[0]) {
                   case 0:
                   case 1:
    -                o = u;
    +                o = s;
                     break;
     
                   case 4:
                     e.label++;
                     return {
    -                    value: u[1],
    +                    value: s[1],
                         done: false
                     };
     
                   case 5:
                     e.label++;
    -                i = u[1];
    -                u = [ 0 ];
    +                i = s[1];
    +                s = [ 0 ];
                     continue;
     
                   case 7:
    -                u = e.ops.pop();
    +                s = e.ops.pop();
                     e.trys.pop();
                     continue;
     
                   default:
    -                if (!(o = e.trys, o = o.length > 0 && o[o.length - 1]) && (u[0] === 6 || u[0] === 2)) {
    +                if (!(o = e.trys, o = o.length > 0 && o[o.length - 1]) && (s[0] === 6 || s[0] === 2)) {
                         e = 0;
                         continue;
                     }
    -                if (u[0] === 3 && (!o || u[1] > o[0] && u[1] < o[3])) {
    -                    e.label = u[1];
    +                if (s[0] === 3 && (!o || s[1] > o[0] && s[1] < o[3])) {
    +                    e.label = s[1];
                         break;
                     }
    -                if (u[0] === 6 && e.label < o[1]) {
    +                if (s[0] === 6 && e.label < o[1]) {
                         e.label = o[1];
    -                    o = u;
    +                    o = s;
                         break;
                     }
                     if (o && e.label < o[2]) {
                         e.label = o[2];
    -                    e.ops.push(u);
    +                    e.ops.push(s);
                         break;
                     }
                     if (o[2]) e.ops.pop();
                     e.trys.pop();
                     continue;
                 }
    -            u = r.call(t, e);
    +            s = r.call(t, e);
             } catch (t) {
    -            u = [ 6, t ];
    +            s = [ 6, t ];
                 i = 0;
             } finally {
                 n = o = 0;
             }
    -        if (u[0] & 5) throw u[1];
    +        if (s[0] & 5) throw s[1];
             return {
    -            value: u[0] ? u[1] : void 0,
    +            value: s[0] ? s[1] : void 0,
                 done: true
             };
         }
     };
     
    -var __read = this && this.q || function(t, r) {
    +var __read = this && this.P || function(t, r) {
         var e = typeof Symbol === "function" && t[Symbol.iterator];
         if (!e) return t;
    -    var n = e.call(t), i, o = [], u;
    +    var n = e.call(t), i, o = [], s;
         try {
             while ((r === void 0 || r-- > 0) && !(i = n.next()).done) o.push(i.value);
         } catch (t) {
    -        u = {
    +        s = {
                 error: t
             };
         } finally {
             try {
                 if (i && !i.done && (e = n["return"])) e.call(n);
             } finally {
    -            if (u) throw u.error;
    +            if (s) throw s.error;
             }
         }
         return o;
     };
     
    -var __spreadArray = this && this.D || function(t, r, e) {
    +var __spreadArray = this && this.A || function(t, r, e) {
         if (e || arguments.length === 2) for (var n = 0, i = r.length, o; n < i; n++) {
             if (o || !(n in r)) {
                 if (!o) o = Array.prototype.slice.call(r, 0, n);
    @@ -139,7 +139,7 @@ var __spreadArray = this && this.D || function(t, r, e) {
         return t.concat(o || Array.prototype.slice.call(r));
     };
     
    -var __values = this && this.V || function(t) {
    +var __values = this && this.W || function(t) {
         var r = typeof Symbol === "function" && Symbol.iterator, e = r && t[r], n = 0;
         if (e) return e.call(t);
         if (t && typeof t.length === "number") return {
    @@ -182,10 +182,10 @@ var Vector = function(t) {
             }
             var n = t.call(this) || this;
             if (Array.isArray(r)) {
    -            n.J = e ? __spreadArray([], __read(r), false) : r;
    -            n.M = r.length;
    +            n.X = e ? __spreadArray([], __read(r), false) : r;
    +            n.i = r.length;
             } else {
    -            n.J = [];
    +            n.X = [];
                 var i = n;
                 r.forEach((function(t) {
                     i.pushBack(t);
    @@ -194,50 +194,50 @@ var Vector = function(t) {
             return n;
         }
         Vector.prototype.clear = function() {
    -        this.M = 0;
    -        this.J.length = 0;
    +        this.i = 0;
    +        this.X.length = 0;
         };
         Vector.prototype.begin = function() {
             return new VectorIterator(0, this);
         };
         Vector.prototype.end = function() {
    -        return new VectorIterator(this.M, this);
    +        return new VectorIterator(this.i, this);
         };
         Vector.prototype.rBegin = function() {
    -        return new VectorIterator(this.M - 1, this, 1);
    +        return new VectorIterator(this.i - 1, this, 1);
         };
         Vector.prototype.rEnd = function() {
             return new VectorIterator(-1, this, 1);
         };
         Vector.prototype.front = function() {
    -        return this.J[0];
    +        return this.X[0];
         };
         Vector.prototype.back = function() {
    -        return this.J[this.M - 1];
    +        return this.X[this.i - 1];
         };
         Vector.prototype.getElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        return this.J[t];
    +        return this.X[t];
         };
         Vector.prototype.eraseElementByPos = function(t) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        this.J.splice(t, 1);
    -        this.M -= 1;
    -        return this.M;
    +        this.X.splice(t, 1);
    +        this.i -= 1;
    +        return this.i;
         };
         Vector.prototype.eraseElementByValue = function(t) {
             var r = 0;
    -        for (var e = 0; e < this.M; ++e) {
    -            if (this.J[e] !== t) {
    -                this.J[r++] = this.J[e];
    +        for (var e = 0; e < this.i; ++e) {
    +            if (this.X[e] !== t) {
    +                this.X[r++] = this.X[e];
                 }
             }
    -        this.M = this.J.length = r;
    -        return this.M;
    +        this.i = this.X.length = r;
    +        return this.i;
         };
         Vector.prototype.eraseElementByIterator = function(t) {
             var r = t.o;
    @@ -246,75 +246,75 @@ var Vector = function(t) {
             return t;
         };
         Vector.prototype.pushBack = function(t) {
    -        this.J.push(t);
    -        this.M += 1;
    -        return this.M;
    +        this.X.push(t);
    +        this.i += 1;
    +        return this.i;
         };
         Vector.prototype.popBack = function() {
    -        if (this.M === 0) return;
    -        this.M -= 1;
    -        return this.J.pop();
    +        if (this.i === 0) return;
    +        this.i -= 1;
    +        return this.X.pop();
         };
         Vector.prototype.setElementByPos = function(t, r) {
    -        if (t < 0 || t > this.M - 1) {
    +        if (t < 0 || t > this.i - 1) {
                 throw new RangeError;
             }
    -        this.J[t] = r;
    +        this.X[t] = r;
         };
         Vector.prototype.insert = function(t, r, e) {
             var n;
             if (e === void 0) {
                 e = 1;
             }
    -        if (t < 0 || t > this.M) {
    +        if (t < 0 || t > this.i) {
                 throw new RangeError;
             }
    -        (n = this.J).splice.apply(n, __spreadArray([ t, 0 ], __read(new Array(e).fill(r)), false));
    -        this.M += e;
    -        return this.M;
    +        (n = this.X).splice.apply(n, __spreadArray([ t, 0 ], __read(new Array(e).fill(r)), false));
    +        this.i += e;
    +        return this.i;
         };
         Vector.prototype.find = function(t) {
    -        for (var r = 0; r < this.M; ++r) {
    -            if (this.J[r] === t) {
    +        for (var r = 0; r < this.i; ++r) {
    +            if (this.X[r] === t) {
                     return new VectorIterator(r, this);
                 }
             }
             return this.end();
         };
         Vector.prototype.reverse = function() {
    -        this.J.reverse();
    +        this.X.reverse();
    +        return this;
         };
         Vector.prototype.unique = function() {
             var t = 1;
    -        for (var r = 1; r < this.M; ++r) {
    -            if (this.J[r] !== this.J[r - 1]) {
    -                this.J[t++] = this.J[r];
    +        for (var r = 1; r < this.i; ++r) {
    +            if (this.X[r] !== this.X[r - 1]) {
    +                this.X[t++] = this.X[r];
                 }
             }
    -        this.M = this.J.length = t;
    -        return this.M;
    +        this.i = this.X.length = t;
    +        return this.i;
         };
         Vector.prototype.sort = function(t) {
    -        this.J.sort(t);
    +        this.X.sort(t);
    +        return this;
         };
         Vector.prototype.forEach = function(t) {
    -        for (var r = 0; r < this.M; ++r) {
    -            t(this.J[r], r, this);
    +        for (var r = 0; r < this.i; ++r) {
    +            t(this.X[r], r, this);
             }
         };
         Vector.prototype[Symbol.iterator] = function() {
    -        return function() {
    -            return __generator(this, (function(t) {
    -                switch (t.label) {
    -                  case 0:
    -                    return [ 5, __values(this.J) ];
    +        return __generator(this, (function(t) {
    +            switch (t.label) {
    +              case 0:
    +                return [ 5, __values(this.X) ];
     
    -                  case 1:
    -                    t.sent();
    -                    return [ 2 ];
    -                }
    -            }));
    -        }.bind(this)();
    +              case 1:
    +                t.sent();
    +                return [ 2 ];
    +            }
    +        }));
         };
         return Vector;
     }(SequentialContainer);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeIterator.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeIterator.js
    index 3e4f5c7e123282..12fce60a90a619 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeIterator.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeIterator.js
    @@ -28,17 +28,17 @@ var TreeIterator = function(r) {
         function TreeIterator(t, e, i) {
             var n = r.call(this, i) || this;
             n.o = t;
    -        n.h = e;
    +        n.u = e;
             if (n.iteratorType === 0) {
                 n.pre = function() {
    -                if (this.o === this.h.K) {
    +                if (this.o === this.u.Y) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.L();
                     return this;
                 };
                 n.next = function() {
    -                if (this.o === this.h) {
    +                if (this.o === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.m();
    @@ -46,14 +46,14 @@ var TreeIterator = function(r) {
                 };
             } else {
                 n.pre = function() {
    -                if (this.o === this.h.N) {
    +                if (this.o === this.u.Z) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.m();
                     return this;
                 };
                 n.next = function() {
    -                if (this.o === this.h) {
    +                if (this.o === this.u) {
                         throwIteratorAccessError();
                     }
                     this.o = this.o.L();
    @@ -65,23 +65,23 @@ var TreeIterator = function(r) {
         Object.defineProperty(TreeIterator.prototype, "index", {
             get: function() {
                 var r = this.o;
    -            var t = this.h.rr;
    -            if (r === this.h) {
    +            var t = this.u.sr;
    +            if (r === this.u) {
                     if (t) {
    -                    return t.tr - 1;
    +                    return t.hr - 1;
                     }
                     return 0;
                 }
                 var e = 0;
    -            if (r.K) {
    -                e += r.K.tr;
    +            if (r.Y) {
    +                e += r.Y.hr;
                 }
                 while (r !== t) {
    -                var i = r.rr;
    -                if (r === i.N) {
    +                var i = r.sr;
    +                if (r === i.Z) {
                         e += 1;
    -                    if (i.K) {
    -                        e += i.K.tr;
    +                    if (i.Y) {
    +                        e += i.Y.hr;
                         }
                     }
                     r = i;
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeNode.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeNode.js
    index 0b58346d1781f2..f9a6448ec52bd6 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeNode.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/TreeNode.js
    @@ -1,96 +1,97 @@
     var __extends = this && this.t || function() {
    -    var extendStatics = function(e, n) {
    +    var extendStatics = function(e, t) {
             extendStatics = Object.setPrototypeOf || {
                 __proto__: []
    -        } instanceof Array && function(e, n) {
    -            e.__proto__ = n;
    -        } || function(e, n) {
    -            for (var t in n) if (Object.prototype.hasOwnProperty.call(n, t)) e[t] = n[t];
    +        } instanceof Array && function(e, t) {
    +            e.__proto__ = t;
    +        } || function(e, t) {
    +            for (var n in t) if (Object.prototype.hasOwnProperty.call(t, n)) e[n] = t[n];
             };
    -        return extendStatics(e, n);
    +        return extendStatics(e, t);
         };
    -    return function(e, n) {
    -        if (typeof n !== "function" && n !== null) throw new TypeError("Class extends value " + String(n) + " is not a constructor or null");
    -        extendStatics(e, n);
    +    return function(e, t) {
    +        if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
    +        extendStatics(e, t);
             function __() {
                 this.constructor = e;
             }
    -        e.prototype = n === null ? Object.create(n) : (__.prototype = n.prototype, new __);
    +        e.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __);
         };
     }();
     
     var TreeNode = function() {
    -    function TreeNode(e, n) {
    -        this.ee = 1;
    -        this.u = undefined;
    -        this.p = undefined;
    -        this.K = undefined;
    -        this.N = undefined;
    -        this.rr = undefined;
    -        this.u = e;
    -        this.p = n;
    +    function TreeNode(e, t, n) {
    +        if (n === void 0) {
    +            n = 1;
    +        }
    +        this.Y = undefined;
    +        this.Z = undefined;
    +        this.sr = undefined;
    +        this.p = e;
    +        this.H = t;
    +        this.ee = n;
         }
         TreeNode.prototype.L = function() {
             var e = this;
    -        if (e.ee === 1 && e.rr.rr === e) {
    -            e = e.N;
    -        } else if (e.K) {
    -            e = e.K;
    -            while (e.N) {
    -                e = e.N;
    +        if (e.ee === 1 && e.sr.sr === e) {
    +            e = e.Z;
    +        } else if (e.Y) {
    +            e = e.Y;
    +            while (e.Z) {
    +                e = e.Z;
                 }
             } else {
    -            var n = e.rr;
    -            while (n.K === e) {
    -                e = n;
    -                n = e.rr;
    +            var t = e.sr;
    +            while (t.Y === e) {
    +                e = t;
    +                t = e.sr;
                 }
    -            e = n;
    +            e = t;
             }
             return e;
         };
         TreeNode.prototype.m = function() {
             var e = this;
    -        if (e.N) {
    -            e = e.N;
    -            while (e.K) {
    -                e = e.K;
    +        if (e.Z) {
    +            e = e.Z;
    +            while (e.Y) {
    +                e = e.Y;
                 }
                 return e;
             } else {
    -            var n = e.rr;
    -            while (n.N === e) {
    -                e = n;
    -                n = e.rr;
    +            var t = e.sr;
    +            while (t.Z === e) {
    +                e = t;
    +                t = e.sr;
                 }
    -            if (e.N !== n) {
    -                return n;
    +            if (e.Z !== t) {
    +                return t;
                 } else return e;
             }
         };
    -    TreeNode.prototype.ne = function() {
    -        var e = this.rr;
    -        var n = this.N;
    -        var t = n.K;
    -        if (e.rr === this) e.rr = n; else if (e.K === this) e.K = n; else e.N = n;
    -        n.rr = e;
    -        n.K = this;
    -        this.rr = n;
    -        this.N = t;
    -        if (t) t.rr = this;
    -        return n;
    -    };
         TreeNode.prototype.te = function() {
    -        var e = this.rr;
    -        var n = this.K;
    -        var t = n.N;
    -        if (e.rr === this) e.rr = n; else if (e.K === this) e.K = n; else e.N = n;
    -        n.rr = e;
    -        n.N = this;
    -        this.rr = n;
    -        this.K = t;
    -        if (t) t.rr = this;
    -        return n;
    +        var e = this.sr;
    +        var t = this.Z;
    +        var n = t.Y;
    +        if (e.sr === this) e.sr = t; else if (e.Y === this) e.Y = t; else e.Z = t;
    +        t.sr = e;
    +        t.Y = this;
    +        this.sr = t;
    +        this.Z = n;
    +        if (n) n.sr = this;
    +        return t;
    +    };
    +    TreeNode.prototype.ne = function() {
    +        var e = this.sr;
    +        var t = this.Y;
    +        var n = t.Z;
    +        if (e.sr === this) e.sr = t; else if (e.Y === this) e.Y = t; else e.Z = t;
    +        t.sr = e;
    +        t.Z = this;
    +        this.sr = t;
    +        this.Y = n;
    +        if (n) n.sr = this;
    +        return t;
         };
         return TreeNode;
     }();
    @@ -100,29 +101,29 @@ export { TreeNode };
     var TreeNodeEnableIndex = function(e) {
         __extends(TreeNodeEnableIndex, e);
         function TreeNodeEnableIndex() {
    -        var n = e !== null && e.apply(this, arguments) || this;
    -        n.tr = 1;
    -        return n;
    +        var t = e !== null && e.apply(this, arguments) || this;
    +        t.hr = 1;
    +        return t;
         }
    -    TreeNodeEnableIndex.prototype.ne = function() {
    -        var n = e.prototype.ne.call(this);
    +    TreeNodeEnableIndex.prototype.te = function() {
    +        var t = e.prototype.te.call(this);
             this.ie();
    -        n.ie();
    -        return n;
    +        t.ie();
    +        return t;
         };
    -    TreeNodeEnableIndex.prototype.te = function() {
    -        var n = e.prototype.te.call(this);
    +    TreeNodeEnableIndex.prototype.ne = function() {
    +        var t = e.prototype.ne.call(this);
             this.ie();
    -        n.ie();
    -        return n;
    +        t.ie();
    +        return t;
         };
         TreeNodeEnableIndex.prototype.ie = function() {
    -        this.tr = 1;
    -        if (this.K) {
    -            this.tr += this.K.tr;
    +        this.hr = 1;
    +        if (this.Y) {
    +            this.hr += this.Y.hr;
             }
    -        if (this.N) {
    -            this.tr += this.N.tr;
    +        if (this.Z) {
    +            this.hr += this.Z.hr;
             }
         };
         return TreeNodeEnableIndex;
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/index.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/index.js
    index 5056baf84121b9..3555effa2703a5 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/index.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/Base/index.js
    @@ -1,59 +1,24 @@
     var __extends = this && this.t || function() {
    -    var extendStatics = function(e, r) {
    +    var extendStatics = function(e, i) {
             extendStatics = Object.setPrototypeOf || {
                 __proto__: []
    -        } instanceof Array && function(e, r) {
    -            e.__proto__ = r;
    -        } || function(e, r) {
    -            for (var i in r) if (Object.prototype.hasOwnProperty.call(r, i)) e[i] = r[i];
    +        } instanceof Array && function(e, i) {
    +            e.__proto__ = i;
    +        } || function(e, i) {
    +            for (var r in i) if (Object.prototype.hasOwnProperty.call(i, r)) e[r] = i[r];
             };
    -        return extendStatics(e, r);
    +        return extendStatics(e, i);
         };
    -    return function(e, r) {
    -        if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    -        extendStatics(e, r);
    +    return function(e, i) {
    +        if (typeof i !== "function" && i !== null) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");
    +        extendStatics(e, i);
             function __() {
                 this.constructor = e;
             }
    -        e.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __);
    +        e.prototype = i === null ? Object.create(i) : (__.prototype = i.prototype, new __);
         };
     }();
     
    -var __read = this && this.q || function(e, r) {
    -    var i = typeof Symbol === "function" && e[Symbol.iterator];
    -    if (!i) return e;
    -    var t = i.call(e), n, s = [], f;
    -    try {
    -        while ((r === void 0 || r-- > 0) && !(n = t.next()).done) s.push(n.value);
    -    } catch (e) {
    -        f = {
    -            error: e
    -        };
    -    } finally {
    -        try {
    -            if (n && !n.done && (i = t["return"])) i.call(t);
    -        } finally {
    -            if (f) throw f.error;
    -        }
    -    }
    -    return s;
    -};
    -
    -var __values = this && this.V || function(e) {
    -    var r = typeof Symbol === "function" && Symbol.iterator, i = r && e[r], t = 0;
    -    if (i) return i.call(e);
    -    if (e && typeof e.length === "number") return {
    -        next: function() {
    -            if (e && t >= e.length) e = void 0;
    -            return {
    -                value: e && e[t++],
    -                done: !e
    -            };
    -        }
    -    };
    -    throw new TypeError(r ? "Object is not iterable." : "Symbol.iterator is not defined.");
    -};
    -
     import { TreeNode, TreeNodeEnableIndex } from "./TreeNode";
     
     import { Container } from "../../ContainerBase";
    @@ -62,536 +27,477 @@ import { throwIteratorAccessError } from "../../../utils/throwError";
     
     var TreeContainer = function(e) {
         __extends(TreeContainer, e);
    -    function TreeContainer(r, i) {
    -        if (r === void 0) {
    -            r = function(e, r) {
    -                if (e < r) return -1;
    -                if (e > r) return 1;
    +    function TreeContainer(i, r) {
    +        if (i === void 0) {
    +            i = function(e, i) {
    +                if (e < i) return -1;
    +                if (e > i) return 1;
                     return 0;
                 };
             }
    -        if (i === void 0) {
    -            i = false;
    +        if (r === void 0) {
    +            r = false;
             }
             var t = e.call(this) || this;
    -        t.W = undefined;
    -        t.$ = r;
    -        if (i) {
    -            t.re = TreeNodeEnableIndex;
    -            t.v = function(e, r, i) {
    -                var t = this.se(e, r, i);
    -                if (t) {
    -                    var n = t.rr;
    -                    while (n !== this.h) {
    -                        n.tr += 1;
    -                        n = n.rr;
    -                    }
    -                    var s = this.fe(t);
    -                    if (s) {
    -                        var f = s, h = f.parentNode, u = f.grandParent, a = f.curNode;
    -                        h.ie();
    -                        u.ie();
    -                        a.ie();
    -                    }
    -                }
    -                return this.M;
    -            };
    -            t.G = function(e) {
    -                var r = this.he(e);
    -                while (r !== this.h) {
    -                    r.tr -= 1;
    -                    r = r.rr;
    -                }
    -            };
    -        } else {
    -            t.re = TreeNode;
    -            t.v = function(e, r, i) {
    -                var t = this.se(e, r, i);
    -                if (t) this.fe(t);
    -                return this.M;
    -            };
    -            t.G = t.he;
    -        }
    -        t.h = new t.re;
    +        t.rr = undefined;
    +        t.j = i;
    +        t.enableIndex = r;
    +        t.re = r ? TreeNodeEnableIndex : TreeNode;
    +        t.u = new t.re;
             return t;
         }
    -    TreeContainer.prototype.U = function(e, r) {
    -        var i = this.h;
    +    TreeContainer.prototype.$ = function(e, i) {
    +        var r = this.u;
             while (e) {
    -            var t = this.$(e.u, r);
    +            var t = this.j(e.p, i);
                 if (t < 0) {
    -                e = e.N;
    +                e = e.Z;
                 } else if (t > 0) {
    -                i = e;
    -                e = e.K;
    +                r = e;
    +                e = e.Y;
                 } else return e;
             }
    -        return i;
    +        return r;
         };
    -    TreeContainer.prototype.X = function(e, r) {
    -        var i = this.h;
    +    TreeContainer.prototype.tr = function(e, i) {
    +        var r = this.u;
             while (e) {
    -            var t = this.$(e.u, r);
    +            var t = this.j(e.p, i);
                 if (t <= 0) {
    -                e = e.N;
    +                e = e.Z;
                 } else {
    -                i = e;
    -                e = e.K;
    +                r = e;
    +                e = e.Y;
                 }
             }
    -        return i;
    +        return r;
         };
    -    TreeContainer.prototype.Y = function(e, r) {
    -        var i = this.h;
    +    TreeContainer.prototype.er = function(e, i) {
    +        var r = this.u;
             while (e) {
    -            var t = this.$(e.u, r);
    +            var t = this.j(e.p, i);
                 if (t < 0) {
    -                i = e;
    -                e = e.N;
    +                r = e;
    +                e = e.Z;
                 } else if (t > 0) {
    -                e = e.K;
    +                e = e.Y;
                 } else return e;
             }
    -        return i;
    +        return r;
         };
    -    TreeContainer.prototype.Z = function(e, r) {
    -        var i = this.h;
    +    TreeContainer.prototype.nr = function(e, i) {
    +        var r = this.u;
             while (e) {
    -            var t = this.$(e.u, r);
    +            var t = this.j(e.p, i);
                 if (t < 0) {
    -                i = e;
    -                e = e.N;
    +                r = e;
    +                e = e.Z;
                 } else {
    -                e = e.K;
    +                e = e.Y;
                 }
             }
    -        return i;
    +        return r;
         };
    -    TreeContainer.prototype.ue = function(e) {
    +    TreeContainer.prototype.se = function(e) {
             while (true) {
    -            var r = e.rr;
    -            if (r === this.h) return;
    +            var i = e.sr;
    +            if (i === this.u) return;
                 if (e.ee === 1) {
                     e.ee = 0;
                     return;
                 }
    -            if (e === r.K) {
    -                var i = r.N;
    -                if (i.ee === 1) {
    -                    i.ee = 0;
    -                    r.ee = 1;
    -                    if (r === this.W) {
    -                        this.W = r.ne();
    -                    } else r.ne();
    +            if (e === i.Y) {
    +                var r = i.Z;
    +                if (r.ee === 1) {
    +                    r.ee = 0;
    +                    i.ee = 1;
    +                    if (i === this.rr) {
    +                        this.rr = i.te();
    +                    } else i.te();
                     } else {
    -                    if (i.N && i.N.ee === 1) {
    -                        i.ee = r.ee;
    -                        r.ee = 0;
    -                        i.N.ee = 0;
    -                        if (r === this.W) {
    -                            this.W = r.ne();
    -                        } else r.ne();
    +                    if (r.Z && r.Z.ee === 1) {
    +                        r.ee = i.ee;
    +                        i.ee = 0;
    +                        r.Z.ee = 0;
    +                        if (i === this.rr) {
    +                            this.rr = i.te();
    +                        } else i.te();
                             return;
    -                    } else if (i.K && i.K.ee === 1) {
    -                        i.ee = 1;
    -                        i.K.ee = 0;
    -                        i.te();
    +                    } else if (r.Y && r.Y.ee === 1) {
    +                        r.ee = 1;
    +                        r.Y.ee = 0;
    +                        r.ne();
                         } else {
    -                        i.ee = 1;
    -                        e = r;
    +                        r.ee = 1;
    +                        e = i;
                         }
                     }
                 } else {
    -                var i = r.K;
    -                if (i.ee === 1) {
    -                    i.ee = 0;
    -                    r.ee = 1;
    -                    if (r === this.W) {
    -                        this.W = r.te();
    -                    } else r.te();
    +                var r = i.Y;
    +                if (r.ee === 1) {
    +                    r.ee = 0;
    +                    i.ee = 1;
    +                    if (i === this.rr) {
    +                        this.rr = i.ne();
    +                    } else i.ne();
                     } else {
    -                    if (i.K && i.K.ee === 1) {
    -                        i.ee = r.ee;
    -                        r.ee = 0;
    -                        i.K.ee = 0;
    -                        if (r === this.W) {
    -                            this.W = r.te();
    -                        } else r.te();
    +                    if (r.Y && r.Y.ee === 1) {
    +                        r.ee = i.ee;
    +                        i.ee = 0;
    +                        r.Y.ee = 0;
    +                        if (i === this.rr) {
    +                            this.rr = i.ne();
    +                        } else i.ne();
                             return;
    -                    } else if (i.N && i.N.ee === 1) {
    -                        i.ee = 1;
    -                        i.N.ee = 0;
    -                        i.ne();
    +                    } else if (r.Z && r.Z.ee === 1) {
    +                        r.ee = 1;
    +                        r.Z.ee = 0;
    +                        r.te();
                         } else {
    -                        i.ee = 1;
    -                        e = r;
    +                        r.ee = 1;
    +                        e = i;
                         }
                     }
                 }
             }
         };
    -    TreeContainer.prototype.he = function(e) {
    -        var r, i;
    -        if (this.M === 1) {
    +    TreeContainer.prototype.U = function(e) {
    +        if (this.i === 1) {
                 this.clear();
    -            return this.h;
    +            return;
             }
    -        var t = e;
    -        while (t.K || t.N) {
    -            if (t.N) {
    -                t = t.N;
    -                while (t.K) t = t.K;
    +        var i = e;
    +        while (i.Y || i.Z) {
    +            if (i.Z) {
    +                i = i.Z;
    +                while (i.Y) i = i.Y;
                 } else {
    -                t = t.K;
    +                i = i.Y;
                 }
    -            r = __read([ t.u, e.u ], 2), e.u = r[0], t.u = r[1];
    -            i = __read([ t.p, e.p ], 2), e.p = i[0], t.p = i[1];
    -            e = t;
    +            var r = e.p;
    +            e.p = i.p;
    +            i.p = r;
    +            var t = e.H;
    +            e.H = i.H;
    +            i.H = t;
    +            e = i;
    +        }
    +        if (this.u.Y === i) {
    +            this.u.Y = i.sr;
    +        } else if (this.u.Z === i) {
    +            this.u.Z = i.sr;
             }
    -        if (this.h.K === t) {
    -            this.h.K = t.rr;
    -        } else if (this.h.N === t) {
    -            this.h.N = t.rr;
    +        this.se(i);
    +        var n = i.sr;
    +        if (i === n.Y) {
    +            n.Y = undefined;
    +        } else n.Z = undefined;
    +        this.i -= 1;
    +        this.rr.ee = 0;
    +        if (this.enableIndex) {
    +            while (n !== this.u) {
    +                n.hr -= 1;
    +                n = n.sr;
    +            }
             }
    -        this.ue(t);
    -        var n = t.rr;
    -        if (t === n.K) {
    -            n.K = undefined;
    -        } else n.N = undefined;
    -        this.M -= 1;
    -        this.W.ee = 0;
    -        return n;
         };
    -    TreeContainer.prototype.ae = function(e, r) {
    -        if (e === undefined) return false;
    -        var i = this.ae(e.K, r);
    -        if (i) return true;
    -        if (r(e)) return true;
    -        return this.ae(e.N, r);
    +    TreeContainer.prototype.ir = function(e) {
    +        var i = typeof e === "number" ? e : undefined;
    +        var r = typeof e === "function" ? e : undefined;
    +        var t = typeof e === "undefined" ? [] : undefined;
    +        var n = 0;
    +        var s = this.rr;
    +        var f = [];
    +        while (f.length || s) {
    +            if (s) {
    +                f.push(s);
    +                s = s.Y;
    +            } else {
    +                s = f.pop();
    +                if (n === i) return s;
    +                t && t.push(s);
    +                r && r(s, n, this);
    +                n += 1;
    +                s = s.Z;
    +            }
    +        }
    +        return t;
         };
         TreeContainer.prototype.fe = function(e) {
             while (true) {
    -            var r = e.rr;
    -            if (r.ee === 0) return;
    -            var i = r.rr;
    -            if (r === i.K) {
    -                var t = i.N;
    +            var i = e.sr;
    +            if (i.ee === 0) return;
    +            var r = i.sr;
    +            if (i === r.Y) {
    +                var t = r.Z;
                     if (t && t.ee === 1) {
    -                    t.ee = r.ee = 0;
    -                    if (i === this.W) return;
    -                    i.ee = 1;
    -                    e = i;
    +                    t.ee = i.ee = 0;
    +                    if (r === this.rr) return;
    +                    r.ee = 1;
    +                    e = r;
                         continue;
    -                } else if (e === r.N) {
    +                } else if (e === i.Z) {
                         e.ee = 0;
    -                    if (e.K) e.K.rr = r;
    -                    if (e.N) e.N.rr = i;
    -                    r.N = e.K;
    -                    i.K = e.N;
    -                    e.K = r;
    -                    e.N = i;
    -                    if (i === this.W) {
    -                        this.W = e;
    -                        this.h.rr = e;
    +                    if (e.Y) {
    +                        e.Y.sr = i;
    +                    }
    +                    if (e.Z) {
    +                        e.Z.sr = r;
    +                    }
    +                    i.Z = e.Y;
    +                    r.Y = e.Z;
    +                    e.Y = i;
    +                    e.Z = r;
    +                    if (r === this.rr) {
    +                        this.rr = e;
    +                        this.u.sr = e;
                         } else {
    -                        var n = i.rr;
    -                        if (n.K === i) {
    -                            n.K = e;
    -                        } else n.N = e;
    +                        var n = r.sr;
    +                        if (n.Y === r) {
    +                            n.Y = e;
    +                        } else n.Z = e;
                         }
    -                    e.rr = i.rr;
    -                    r.rr = e;
    -                    i.rr = e;
    -                    i.ee = 1;
    -                    return {
    -                        parentNode: r,
    -                        grandParent: i,
    -                        curNode: e
    -                    };
    +                    e.sr = r.sr;
    +                    i.sr = e;
    +                    r.sr = e;
    +                    r.ee = 1;
                     } else {
    -                    r.ee = 0;
    -                    if (i === this.W) {
    -                        this.W = i.te();
    -                    } else i.te();
    -                    i.ee = 1;
    +                    i.ee = 0;
    +                    if (r === this.rr) {
    +                        this.rr = r.ne();
    +                    } else r.ne();
    +                    r.ee = 1;
    +                    return;
                     }
                 } else {
    -                var t = i.K;
    +                var t = r.Y;
                     if (t && t.ee === 1) {
    -                    t.ee = r.ee = 0;
    -                    if (i === this.W) return;
    -                    i.ee = 1;
    -                    e = i;
    +                    t.ee = i.ee = 0;
    +                    if (r === this.rr) return;
    +                    r.ee = 1;
    +                    e = r;
                         continue;
    -                } else if (e === r.K) {
    +                } else if (e === i.Y) {
                         e.ee = 0;
    -                    if (e.K) e.K.rr = i;
    -                    if (e.N) e.N.rr = r;
    -                    i.N = e.K;
    -                    r.K = e.N;
    -                    e.K = i;
    -                    e.N = r;
    -                    if (i === this.W) {
    -                        this.W = e;
    -                        this.h.rr = e;
    +                    if (e.Y) {
    +                        e.Y.sr = r;
    +                    }
    +                    if (e.Z) {
    +                        e.Z.sr = i;
    +                    }
    +                    r.Z = e.Y;
    +                    i.Y = e.Z;
    +                    e.Y = r;
    +                    e.Z = i;
    +                    if (r === this.rr) {
    +                        this.rr = e;
    +                        this.u.sr = e;
                         } else {
    -                        var n = i.rr;
    -                        if (n.K === i) {
    -                            n.K = e;
    -                        } else n.N = e;
    +                        var n = r.sr;
    +                        if (n.Y === r) {
    +                            n.Y = e;
    +                        } else n.Z = e;
                         }
    -                    e.rr = i.rr;
    -                    r.rr = e;
    -                    i.rr = e;
    -                    i.ee = 1;
    -                    return {
    -                        parentNode: r,
    -                        grandParent: i,
    -                        curNode: e
    -                    };
    +                    e.sr = r.sr;
    +                    i.sr = e;
    +                    r.sr = e;
    +                    r.ee = 1;
                     } else {
    -                    r.ee = 0;
    -                    if (i === this.W) {
    -                        this.W = i.ne();
    -                    } else i.ne();
    -                    i.ee = 1;
    +                    i.ee = 0;
    +                    if (r === this.rr) {
    +                        this.rr = r.te();
    +                    } else r.te();
    +                    r.ee = 1;
    +                    return;
                     }
                 }
    +            if (this.enableIndex) {
    +                i.ie();
    +                r.ie();
    +                e.ie();
    +            }
                 return;
             }
         };
    -    TreeContainer.prototype.se = function(e, r, i) {
    -        if (this.W === undefined) {
    -            this.M += 1;
    -            this.W = new this.re(e, r);
    -            this.W.ee = 0;
    -            this.W.rr = this.h;
    -            this.h.rr = this.W;
    -            this.h.K = this.W;
    -            this.h.N = this.W;
    -            return;
    +    TreeContainer.prototype.v = function(e, i, r) {
    +        if (this.rr === undefined) {
    +            this.i += 1;
    +            this.rr = new this.re(e, i, 0);
    +            this.rr.sr = this.u;
    +            this.u.sr = this.u.Y = this.u.Z = this.rr;
    +            return this.i;
             }
             var t;
    -        var n = this.h.K;
    -        var s = this.$(n.u, e);
    +        var n = this.u.Y;
    +        var s = this.j(n.p, e);
             if (s === 0) {
    -            n.p = r;
    -            return;
    +            n.H = i;
    +            return this.i;
             } else if (s > 0) {
    -            n.K = new this.re(e, r);
    -            n.K.rr = n;
    -            t = n.K;
    -            this.h.K = t;
    +            n.Y = new this.re(e, i);
    +            n.Y.sr = n;
    +            t = n.Y;
    +            this.u.Y = t;
             } else {
    -            var f = this.h.N;
    -            var h = this.$(f.u, e);
    +            var f = this.u.Z;
    +            var h = this.j(f.p, e);
                 if (h === 0) {
    -                f.p = r;
    -                return;
    +                f.H = i;
    +                return this.i;
                 } else if (h < 0) {
    -                f.N = new this.re(e, r);
    -                f.N.rr = f;
    -                t = f.N;
    -                this.h.N = t;
    +                f.Z = new this.re(e, i);
    +                f.Z.sr = f;
    +                t = f.Z;
    +                this.u.Z = t;
                 } else {
    -                if (i !== undefined) {
    -                    var u = i.o;
    -                    if (u !== this.h) {
    -                        var a = this.$(u.u, e);
    +                if (r !== undefined) {
    +                    var u = r.o;
    +                    if (u !== this.u) {
    +                        var a = this.j(u.p, e);
                             if (a === 0) {
    -                            u.p = r;
    -                            return;
    +                            u.H = i;
    +                            return this.i;
                             } else if (a > 0) {
                                 var o = u.L();
    -                            var l = this.$(o.u, e);
    +                            var l = this.j(o.p, e);
                                 if (l === 0) {
    -                                o.p = r;
    -                                return;
    +                                o.H = i;
    +                                return this.i;
                                 } else if (l < 0) {
    -                                t = new this.re(e, r);
    -                                if (o.N === undefined) {
    -                                    o.N = t;
    -                                    t.rr = o;
    +                                t = new this.re(e, i);
    +                                if (o.Z === undefined) {
    +                                    o.Z = t;
    +                                    t.sr = o;
                                     } else {
    -                                    u.K = t;
    -                                    t.rr = u;
    +                                    u.Y = t;
    +                                    t.sr = u;
                                     }
                                 }
                             }
                         }
                     }
                     if (t === undefined) {
    -                    t = this.W;
    +                    t = this.rr;
                         while (true) {
    -                        var v = this.$(t.u, e);
    +                        var v = this.j(t.p, e);
                             if (v > 0) {
    -                            if (t.K === undefined) {
    -                                t.K = new this.re(e, r);
    -                                t.K.rr = t;
    -                                t = t.K;
    +                            if (t.Y === undefined) {
    +                                t.Y = new this.re(e, i);
    +                                t.Y.sr = t;
    +                                t = t.Y;
                                     break;
                                 }
    -                            t = t.K;
    +                            t = t.Y;
                             } else if (v < 0) {
    -                            if (t.N === undefined) {
    -                                t.N = new this.re(e, r);
    -                                t.N.rr = t;
    -                                t = t.N;
    +                            if (t.Z === undefined) {
    +                                t.Z = new this.re(e, i);
    +                                t.Z.sr = t;
    +                                t = t.Z;
                                     break;
                                 }
    -                            t = t.N;
    +                            t = t.Z;
                             } else {
    -                            t.p = r;
    -                            return;
    +                            t.H = i;
    +                            return this.i;
                             }
                         }
                     }
                 }
             }
    -        this.M += 1;
    -        return t;
    +        if (this.enableIndex) {
    +            var d = t.sr;
    +            while (d !== this.u) {
    +                d.hr += 1;
    +                d = d.sr;
    +            }
    +        }
    +        this.fe(t);
    +        this.i += 1;
    +        return this.i;
         };
    -    TreeContainer.prototype.g = function(e, r) {
    +    TreeContainer.prototype.ar = function(e, i) {
             while (e) {
    -            var i = this.$(e.u, r);
    -            if (i < 0) {
    -                e = e.N;
    -            } else if (i > 0) {
    -                e = e.K;
    +            var r = this.j(e.p, i);
    +            if (r < 0) {
    +                e = e.Z;
    +            } else if (r > 0) {
    +                e = e.Y;
                 } else return e;
             }
    -        return e || this.h;
    +        return e || this.u;
         };
         TreeContainer.prototype.clear = function() {
    -        this.M = 0;
    -        this.W = undefined;
    -        this.h.rr = undefined;
    -        this.h.K = this.h.N = undefined;
    +        this.i = 0;
    +        this.rr = undefined;
    +        this.u.sr = undefined;
    +        this.u.Y = this.u.Z = undefined;
         };
    -    TreeContainer.prototype.updateKeyByIterator = function(e, r) {
    -        var i = e.o;
    -        if (i === this.h) {
    +    TreeContainer.prototype.updateKeyByIterator = function(e, i) {
    +        var r = e.o;
    +        if (r === this.u) {
                 throwIteratorAccessError();
             }
    -        if (this.M === 1) {
    -            i.u = r;
    +        if (this.i === 1) {
    +            r.p = i;
                 return true;
             }
    -        if (i === this.h.K) {
    -            if (this.$(i.m().u, r) > 0) {
    -                i.u = r;
    +        var t = r.m().p;
    +        if (r === this.u.Y) {
    +            if (this.j(t, i) > 0) {
    +                r.p = i;
                     return true;
                 }
                 return false;
             }
    -        if (i === this.h.N) {
    -            if (this.$(i.L().u, r) < 0) {
    -                i.u = r;
    +        var n = r.L().p;
    +        if (r === this.u.Z) {
    +            if (this.j(n, i) < 0) {
    +                r.p = i;
                     return true;
                 }
                 return false;
             }
    -        var t = i.L().u;
    -        if (this.$(t, r) >= 0) return false;
    -        var n = i.m().u;
    -        if (this.$(n, r) <= 0) return false;
    -        i.u = r;
    +        if (this.j(n, i) >= 0 || this.j(t, i) <= 0) return false;
    +        r.p = i;
             return true;
         };
         TreeContainer.prototype.eraseElementByPos = function(e) {
    -        if (e < 0 || e > this.M - 1) {
    +        if (e < 0 || e > this.i - 1) {
                 throw new RangeError;
             }
    -        var r = 0;
    -        var i = this;
    -        this.ae(this.W, (function(t) {
    -            if (e === r) {
    -                i.G(t);
    -                return true;
    -            }
    -            r += 1;
    -            return false;
    -        }));
    -        return this.M;
    +        var i = this.ir(e);
    +        this.U(i);
    +        return this.i;
         };
         TreeContainer.prototype.eraseElementByKey = function(e) {
    -        if (this.M === 0) return false;
    -        var r = this.g(this.W, e);
    -        if (r === this.h) return false;
    -        this.G(r);
    +        if (this.i === 0) return false;
    +        var i = this.ar(this.rr, e);
    +        if (i === this.u) return false;
    +        this.U(i);
             return true;
         };
         TreeContainer.prototype.eraseElementByIterator = function(e) {
    -        var r = e.o;
    -        if (r === this.h) {
    +        var i = e.o;
    +        if (i === this.u) {
                 throwIteratorAccessError();
             }
    -        var i = r.N === undefined;
    +        var r = i.Z === undefined;
             var t = e.iteratorType === 0;
             if (t) {
    -            if (i) e.next();
    +            if (r) e.next();
             } else {
    -            if (!i || r.K === undefined) e.next();
    +            if (!r || i.Y === undefined) e.next();
             }
    -        this.G(r);
    +        this.U(i);
             return e;
         };
    -    TreeContainer.prototype.forEach = function(e) {
    -        var r, i;
    -        var t = 0;
    -        try {
    -            for (var n = __values(this), s = n.next(); !s.done; s = n.next()) {
    -                var f = s.value;
    -                e(f, t++, this);
    -            }
    -        } catch (e) {
    -            r = {
    -                error: e
    -            };
    -        } finally {
    -            try {
    -                if (s && !s.done && (i = n.return)) i.call(n);
    -            } finally {
    -                if (r) throw r.error;
    -            }
    -        }
    -    };
    -    TreeContainer.prototype.getElementByPos = function(e) {
    -        var r, i;
    -        if (e < 0 || e > this.M - 1) {
    -            throw new RangeError;
    -        }
    -        var t;
    -        var n = 0;
    -        try {
    -            for (var s = __values(this), f = s.next(); !f.done; f = s.next()) {
    -                var h = f.value;
    -                if (n === e) {
    -                    t = h;
    -                    break;
    -                }
    -                n += 1;
    -            }
    -        } catch (e) {
    -            r = {
    -                error: e
    -            };
    -        } finally {
    -            try {
    -                if (f && !f.done && (i = s.return)) i.call(s);
    -            } finally {
    -                if (r) throw r.error;
    -            }
    -        }
    -        return t;
    -    };
         TreeContainer.prototype.getHeight = function() {
    -        if (this.M === 0) return 0;
    -        var traversal = function(e) {
    +        if (this.i === 0) return 0;
    +        function traversal(e) {
                 if (!e) return 0;
    -            return Math.max(traversal(e.K), traversal(e.N)) + 1;
    -        };
    -        return traversal(this.W);
    +            return Math.max(traversal(e.Y), traversal(e.Z)) + 1;
    +        }
    +        return traversal(this.rr);
         };
         return TreeContainer;
     }(Container);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedMap.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedMap.js
    index 90795d5119b963..e78db5c174e37c 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedMap.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedMap.js
    @@ -1,129 +1,114 @@
     var __extends = this && this.t || function() {
    -    var extendStatics = function(r, e) {
    +    var extendStatics = function(r, t) {
             extendStatics = Object.setPrototypeOf || {
                 __proto__: []
    -        } instanceof Array && function(r, e) {
    -            r.__proto__ = e;
    -        } || function(r, e) {
    -            for (var t in e) if (Object.prototype.hasOwnProperty.call(e, t)) r[t] = e[t];
    +        } instanceof Array && function(r, t) {
    +            r.__proto__ = t;
    +        } || function(r, t) {
    +            for (var e in t) if (Object.prototype.hasOwnProperty.call(t, e)) r[e] = t[e];
             };
    -        return extendStatics(r, e);
    +        return extendStatics(r, t);
         };
    -    return function(r, e) {
    -        if (typeof e !== "function" && e !== null) throw new TypeError("Class extends value " + String(e) + " is not a constructor or null");
    -        extendStatics(r, e);
    +    return function(r, t) {
    +        if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
    +        extendStatics(r, t);
             function __() {
                 this.constructor = r;
             }
    -        r.prototype = e === null ? Object.create(e) : (__.prototype = e.prototype, new __);
    +        r.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __);
         };
     }();
     
    -var __generator = this && this.i || function(r, e) {
    -    var t = {
    +var __generator = this && this.h || function(r, t) {
    +    var e = {
             label: 0,
             sent: function() {
    -            if (o[0] & 1) throw o[1];
    -            return o[1];
    +            if (a[0] & 1) throw a[1];
    +            return a[1];
             },
             trys: [],
             ops: []
    -    }, n, i, o, a;
    -    return a = {
    +    }, n, i, a, o;
    +    return o = {
             next: verb(0),
             throw: verb(1),
             return: verb(2)
    -    }, typeof Symbol === "function" && (a[Symbol.iterator] = function() {
    +    }, typeof Symbol === "function" && (o[Symbol.iterator] = function() {
             return this;
    -    }), a;
    +    }), o;
         function verb(r) {
    -        return function(e) {
    -            return step([ r, e ]);
    +        return function(t) {
    +            return step([ r, t ]);
             };
         }
    -    function step(a) {
    +    function step(o) {
             if (n) throw new TypeError("Generator is already executing.");
    -        while (t) try {
    -            if (n = 1, i && (o = a[0] & 2 ? i["return"] : a[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 
    -            0) : i.next) && !(o = o.call(i, a[1])).done) return o;
    -            if (i = 0, o) a = [ a[0] & 2, o.value ];
    -            switch (a[0]) {
    +        while (e) try {
    +            if (n = 1, i && (a = o[0] & 2 ? i["return"] : o[0] ? i["throw"] || ((a = i["return"]) && a.call(i), 
    +            0) : i.next) && !(a = a.call(i, o[1])).done) return a;
    +            if (i = 0, a) o = [ o[0] & 2, a.value ];
    +            switch (o[0]) {
                   case 0:
                   case 1:
    -                o = a;
    +                a = o;
                     break;
     
                   case 4:
    -                t.label++;
    +                e.label++;
                     return {
    -                    value: a[1],
    +                    value: o[1],
                         done: false
                     };
     
                   case 5:
    -                t.label++;
    -                i = a[1];
    -                a = [ 0 ];
    +                e.label++;
    +                i = o[1];
    +                o = [ 0 ];
                     continue;
     
                   case 7:
    -                a = t.ops.pop();
    -                t.trys.pop();
    +                o = e.ops.pop();
    +                e.trys.pop();
                     continue;
     
                   default:
    -                if (!(o = t.trys, o = o.length > 0 && o[o.length - 1]) && (a[0] === 6 || a[0] === 2)) {
    -                    t = 0;
    +                if (!(a = e.trys, a = a.length > 0 && a[a.length - 1]) && (o[0] === 6 || o[0] === 2)) {
    +                    e = 0;
                         continue;
                     }
    -                if (a[0] === 3 && (!o || a[1] > o[0] && a[1] < o[3])) {
    -                    t.label = a[1];
    +                if (o[0] === 3 && (!a || o[1] > a[0] && o[1] < a[3])) {
    +                    e.label = o[1];
                         break;
                     }
    -                if (a[0] === 6 && t.label < o[1]) {
    -                    t.label = o[1];
    -                    o = a;
    +                if (o[0] === 6 && e.label < a[1]) {
    +                    e.label = a[1];
    +                    a = o;
                         break;
                     }
    -                if (o && t.label < o[2]) {
    -                    t.label = o[2];
    -                    t.ops.push(a);
    +                if (a && e.label < a[2]) {
    +                    e.label = a[2];
    +                    e.ops.push(o);
                         break;
                     }
    -                if (o[2]) t.ops.pop();
    -                t.trys.pop();
    +                if (a[2]) e.ops.pop();
    +                e.trys.pop();
                     continue;
                 }
    -            a = e.call(r, t);
    +            o = t.call(r, e);
             } catch (r) {
    -            a = [ 6, r ];
    +            o = [ 6, r ];
                 i = 0;
             } finally {
    -            n = o = 0;
    +            n = a = 0;
             }
    -        if (a[0] & 5) throw a[1];
    +        if (o[0] & 5) throw o[1];
             return {
    -            value: a[0] ? a[1] : void 0,
    +            value: o[0] ? o[1] : void 0,
                 done: true
             };
         }
     };
     
    -var __values = this && this.V || function(r) {
    -    var e = typeof Symbol === "function" && Symbol.iterator, t = e && r[e], n = 0;
    -    if (t) return t.call(r);
    -    if (r && typeof r.length === "number") return {
    -        next: function() {
    -            if (r && n >= r.length) r = void 0;
    -            return {
    -                value: r && r[n++],
    -                done: !r
    -            };
    -        }
    -    };
    -    throw new TypeError(e ? "Object is not iterable." : "Symbol.iterator is not defined.");
    -};
    -
     import TreeContainer from "./Base";
     
     import TreeIterator from "./Base/TreeIterator";
    @@ -132,26 +117,26 @@ import { throwIteratorAccessError } from "../../utils/throwError";
     
     var OrderedMapIterator = function(r) {
         __extends(OrderedMapIterator, r);
    -    function OrderedMapIterator(e, t, n, i) {
    -        var o = r.call(this, e, t, i) || this;
    -        o.container = n;
    -        return o;
    +    function OrderedMapIterator(t, e, n, i) {
    +        var a = r.call(this, t, e, i) || this;
    +        a.container = n;
    +        return a;
         }
         Object.defineProperty(OrderedMapIterator.prototype, "pointer", {
             get: function() {
    -            if (this.o === this.h) {
    +            if (this.o === this.u) {
                     throwIteratorAccessError();
                 }
                 var r = this;
                 return new Proxy([], {
    -                get: function(e, t) {
    -                    if (t === "0") return r.o.u; else if (t === "1") return r.o.p;
    +                get: function(t, e) {
    +                    if (e === "0") return r.o.p; else if (e === "1") return r.o.H;
                     },
    -                set: function(e, t, n) {
    -                    if (t !== "1") {
    +                set: function(t, e, n) {
    +                    if (e !== "1") {
                             throw new TypeError("props must be 1");
                         }
    -                    r.o.p = n;
    +                    r.o.H = n;
                         return true;
                     }
                 });
    @@ -160,103 +145,119 @@ var OrderedMapIterator = function(r) {
             configurable: true
         });
         OrderedMapIterator.prototype.copy = function() {
    -        return new OrderedMapIterator(this.o, this.h, this.container, this.iteratorType);
    +        return new OrderedMapIterator(this.o, this.u, this.container, this.iteratorType);
         };
         return OrderedMapIterator;
     }(TreeIterator);
     
     var OrderedMap = function(r) {
         __extends(OrderedMap, r);
    -    function OrderedMap(e, t, n) {
    -        if (e === void 0) {
    -            e = [];
    +    function OrderedMap(t, e, n) {
    +        if (t === void 0) {
    +            t = [];
             }
    -        var i = r.call(this, t, n) || this;
    -        var o = i;
    -        e.forEach((function(r) {
    -            o.setElement(r[0], r[1]);
    +        var i = r.call(this, e, n) || this;
    +        var a = i;
    +        t.forEach((function(r) {
    +            a.setElement(r[0], r[1]);
             }));
             return i;
         }
    -    OrderedMap.prototype.P = function(r) {
    -        return __generator(this, (function(e) {
    -            switch (e.label) {
    -              case 0:
    -                if (r === undefined) return [ 2 ];
    -                return [ 5, __values(this.P(r.K)) ];
    -
    -              case 1:
    -                e.sent();
    -                return [ 4, [ r.u, r.p ] ];
    -
    -              case 2:
    -                e.sent();
    -                return [ 5, __values(this.P(r.N)) ];
    -
    -              case 3:
    -                e.sent();
    -                return [ 2 ];
    -            }
    -        }));
    -    };
         OrderedMap.prototype.begin = function() {
    -        return new OrderedMapIterator(this.h.K || this.h, this.h, this);
    +        return new OrderedMapIterator(this.u.Y || this.u, this.u, this);
         };
         OrderedMap.prototype.end = function() {
    -        return new OrderedMapIterator(this.h, this.h, this);
    +        return new OrderedMapIterator(this.u, this.u, this);
         };
         OrderedMap.prototype.rBegin = function() {
    -        return new OrderedMapIterator(this.h.N || this.h, this.h, this, 1);
    +        return new OrderedMapIterator(this.u.Z || this.u, this.u, this, 1);
         };
         OrderedMap.prototype.rEnd = function() {
    -        return new OrderedMapIterator(this.h, this.h, this, 1);
    +        return new OrderedMapIterator(this.u, this.u, this, 1);
         };
         OrderedMap.prototype.front = function() {
    -        if (this.M === 0) return;
    -        var r = this.h.K;
    -        return [ r.u, r.p ];
    +        if (this.i === 0) return;
    +        var r = this.u.Y;
    +        return [ r.p, r.H ];
         };
         OrderedMap.prototype.back = function() {
    -        if (this.M === 0) return;
    -        var r = this.h.N;
    -        return [ r.u, r.p ];
    +        if (this.i === 0) return;
    +        var r = this.u.Z;
    +        return [ r.p, r.H ];
         };
         OrderedMap.prototype.lowerBound = function(r) {
    -        var e = this.U(this.W, r);
    -        return new OrderedMapIterator(e, this.h, this);
    +        var t = this.$(this.rr, r);
    +        return new OrderedMapIterator(t, this.u, this);
         };
         OrderedMap.prototype.upperBound = function(r) {
    -        var e = this.X(this.W, r);
    -        return new OrderedMapIterator(e, this.h, this);
    +        var t = this.tr(this.rr, r);
    +        return new OrderedMapIterator(t, this.u, this);
         };
         OrderedMap.prototype.reverseLowerBound = function(r) {
    -        var e = this.Y(this.W, r);
    -        return new OrderedMapIterator(e, this.h, this);
    +        var t = this.er(this.rr, r);
    +        return new OrderedMapIterator(t, this.u, this);
         };
         OrderedMap.prototype.reverseUpperBound = function(r) {
    -        var e = this.Z(this.W, r);
    -        return new OrderedMapIterator(e, this.h, this);
    +        var t = this.nr(this.rr, r);
    +        return new OrderedMapIterator(t, this.u, this);
         };
    -    OrderedMap.prototype.setElement = function(r, e, t) {
    -        return this.v(r, e, t);
    +    OrderedMap.prototype.forEach = function(r) {
    +        this.ir((function(t, e, n) {
    +            r([ t.p, t.H ], e, n);
    +        }));
    +    };
    +    OrderedMap.prototype.setElement = function(r, t, e) {
    +        return this.v(r, t, e);
    +    };
    +    OrderedMap.prototype.getElementByPos = function(r) {
    +        if (r < 0 || r > this.i - 1) {
    +            throw new RangeError;
    +        }
    +        var t = this.ir(r);
    +        return [ t.p, t.H ];
         };
         OrderedMap.prototype.find = function(r) {
    -        var e = this.g(this.W, r);
    -        return new OrderedMapIterator(e, this.h, this);
    +        var t = this.ar(this.rr, r);
    +        return new OrderedMapIterator(t, this.u, this);
         };
         OrderedMap.prototype.getElementByKey = function(r) {
    -        var e = this.g(this.W, r);
    -        return e.p;
    +        var t = this.ar(this.rr, r);
    +        return t.H;
         };
         OrderedMap.prototype.union = function(r) {
    -        var e = this;
    +        var t = this;
             r.forEach((function(r) {
    -            e.setElement(r[0], r[1]);
    +            t.setElement(r[0], r[1]);
             }));
    -        return this.M;
    +        return this.i;
         };
         OrderedMap.prototype[Symbol.iterator] = function() {
    -        return this.P(this.W);
    +        var r, t, e, n;
    +        return __generator(this, (function(i) {
    +            switch (i.label) {
    +              case 0:
    +                r = this.i;
    +                t = this.ir();
    +                e = 0;
    +                i.label = 1;
    +
    +              case 1:
    +                if (!(e < r)) return [ 3, 4 ];
    +                n = t[e];
    +                return [ 4, [ n.p, n.H ] ];
    +
    +              case 2:
    +                i.sent();
    +                i.label = 3;
    +
    +              case 3:
    +                ++e;
    +                return [ 3, 1 ];
    +
    +              case 4:
    +                return [ 2 ];
    +            }
    +        }));
         };
         return OrderedMap;
     }(TreeContainer);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedSet.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedSet.js
    index 0bd127050f9219..f0cb9daa1f9754 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedSet.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/container/TreeContainer/OrderedSet.js
    @@ -1,26 +1,26 @@
     var __extends = this && this.t || function() {
    -    var extendStatics = function(e, t) {
    +    var extendStatics = function(e, r) {
             extendStatics = Object.setPrototypeOf || {
                 __proto__: []
    -        } instanceof Array && function(e, t) {
    -            e.__proto__ = t;
    -        } || function(e, t) {
    -            for (var r in t) if (Object.prototype.hasOwnProperty.call(t, r)) e[r] = t[r];
    +        } instanceof Array && function(e, r) {
    +            e.__proto__ = r;
    +        } || function(e, r) {
    +            for (var t in r) if (Object.prototype.hasOwnProperty.call(r, t)) e[t] = r[t];
             };
    -        return extendStatics(e, t);
    +        return extendStatics(e, r);
         };
    -    return function(e, t) {
    -        if (typeof t !== "function" && t !== null) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");
    -        extendStatics(e, t);
    +    return function(e, r) {
    +        if (typeof r !== "function" && r !== null) throw new TypeError("Class extends value " + String(r) + " is not a constructor or null");
    +        extendStatics(e, r);
             function __() {
                 this.constructor = e;
             }
    -        e.prototype = t === null ? Object.create(t) : (__.prototype = t.prototype, new __);
    +        e.prototype = r === null ? Object.create(r) : (__.prototype = r.prototype, new __);
         };
     }();
     
    -var __generator = this && this.i || function(e, t) {
    -    var r = {
    +var __generator = this && this.h || function(e, r) {
    +    var t = {
             label: 0,
             sent: function() {
                 if (o[0] & 1) throw o[1];
    @@ -28,102 +28,87 @@ var __generator = this && this.i || function(e, t) {
             },
             trys: [],
             ops: []
    -    }, n, i, o, u;
    -    return u = {
    +    }, n, i, o, s;
    +    return s = {
             next: verb(0),
             throw: verb(1),
             return: verb(2)
    -    }, typeof Symbol === "function" && (u[Symbol.iterator] = function() {
    +    }, typeof Symbol === "function" && (s[Symbol.iterator] = function() {
             return this;
    -    }), u;
    +    }), s;
         function verb(e) {
    -        return function(t) {
    -            return step([ e, t ]);
    +        return function(r) {
    +            return step([ e, r ]);
             };
         }
    -    function step(u) {
    +    function step(s) {
             if (n) throw new TypeError("Generator is already executing.");
    -        while (r) try {
    -            if (n = 1, i && (o = u[0] & 2 ? i["return"] : u[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 
    -            0) : i.next) && !(o = o.call(i, u[1])).done) return o;
    -            if (i = 0, o) u = [ u[0] & 2, o.value ];
    -            switch (u[0]) {
    +        while (t) try {
    +            if (n = 1, i && (o = s[0] & 2 ? i["return"] : s[0] ? i["throw"] || ((o = i["return"]) && o.call(i), 
    +            0) : i.next) && !(o = o.call(i, s[1])).done) return o;
    +            if (i = 0, o) s = [ s[0] & 2, o.value ];
    +            switch (s[0]) {
                   case 0:
                   case 1:
    -                o = u;
    +                o = s;
                     break;
     
                   case 4:
    -                r.label++;
    +                t.label++;
                     return {
    -                    value: u[1],
    +                    value: s[1],
                         done: false
                     };
     
                   case 5:
    -                r.label++;
    -                i = u[1];
    -                u = [ 0 ];
    +                t.label++;
    +                i = s[1];
    +                s = [ 0 ];
                     continue;
     
                   case 7:
    -                u = r.ops.pop();
    -                r.trys.pop();
    +                s = t.ops.pop();
    +                t.trys.pop();
                     continue;
     
                   default:
    -                if (!(o = r.trys, o = o.length > 0 && o[o.length - 1]) && (u[0] === 6 || u[0] === 2)) {
    -                    r = 0;
    +                if (!(o = t.trys, o = o.length > 0 && o[o.length - 1]) && (s[0] === 6 || s[0] === 2)) {
    +                    t = 0;
                         continue;
                     }
    -                if (u[0] === 3 && (!o || u[1] > o[0] && u[1] < o[3])) {
    -                    r.label = u[1];
    +                if (s[0] === 3 && (!o || s[1] > o[0] && s[1] < o[3])) {
    +                    t.label = s[1];
                         break;
                     }
    -                if (u[0] === 6 && r.label < o[1]) {
    -                    r.label = o[1];
    -                    o = u;
    +                if (s[0] === 6 && t.label < o[1]) {
    +                    t.label = o[1];
    +                    o = s;
                         break;
                     }
    -                if (o && r.label < o[2]) {
    -                    r.label = o[2];
    -                    r.ops.push(u);
    +                if (o && t.label < o[2]) {
    +                    t.label = o[2];
    +                    t.ops.push(s);
                         break;
                     }
    -                if (o[2]) r.ops.pop();
    -                r.trys.pop();
    +                if (o[2]) t.ops.pop();
    +                t.trys.pop();
                     continue;
                 }
    -            u = t.call(e, r);
    +            s = r.call(e, t);
             } catch (e) {
    -            u = [ 6, e ];
    +            s = [ 6, e ];
                 i = 0;
             } finally {
                 n = o = 0;
             }
    -        if (u[0] & 5) throw u[1];
    +        if (s[0] & 5) throw s[1];
             return {
    -            value: u[0] ? u[1] : void 0,
    +            value: s[0] ? s[1] : void 0,
                 done: true
             };
         }
     };
     
    -var __values = this && this.V || function(e) {
    -    var t = typeof Symbol === "function" && Symbol.iterator, r = t && e[t], n = 0;
    -    if (r) return r.call(e);
    -    if (e && typeof e.length === "number") return {
    -        next: function() {
    -            if (e && n >= e.length) e = void 0;
    -            return {
    -                value: e && e[n++],
    -                done: !e
    -            };
    -        }
    -    };
    -    throw new TypeError(t ? "Object is not iterable." : "Symbol.iterator is not defined.");
    -};
    -
     import TreeContainer from "./Base";
     
     import TreeIterator from "./Base/TreeIterator";
    @@ -132,111 +117,126 @@ import { throwIteratorAccessError } from "../../utils/throwError";
     
     var OrderedSetIterator = function(e) {
         __extends(OrderedSetIterator, e);
    -    function OrderedSetIterator(t, r, n, i) {
    -        var o = e.call(this, t, r, i) || this;
    +    function OrderedSetIterator(r, t, n, i) {
    +        var o = e.call(this, r, t, i) || this;
             o.container = n;
             return o;
         }
         Object.defineProperty(OrderedSetIterator.prototype, "pointer", {
             get: function() {
    -            if (this.o === this.h) {
    +            if (this.o === this.u) {
                     throwIteratorAccessError();
                 }
    -            return this.o.u;
    +            return this.o.p;
             },
             enumerable: false,
             configurable: true
         });
         OrderedSetIterator.prototype.copy = function() {
    -        return new OrderedSetIterator(this.o, this.h, this.container, this.iteratorType);
    +        return new OrderedSetIterator(this.o, this.u, this.container, this.iteratorType);
         };
         return OrderedSetIterator;
     }(TreeIterator);
     
     var OrderedSet = function(e) {
         __extends(OrderedSet, e);
    -    function OrderedSet(t, r, n) {
    -        if (t === void 0) {
    -            t = [];
    +    function OrderedSet(r, t, n) {
    +        if (r === void 0) {
    +            r = [];
             }
    -        var i = e.call(this, r, n) || this;
    +        var i = e.call(this, t, n) || this;
             var o = i;
    -        t.forEach((function(e) {
    +        r.forEach((function(e) {
                 o.insert(e);
             }));
             return i;
         }
    -    OrderedSet.prototype.P = function(e) {
    -        return __generator(this, (function(t) {
    -            switch (t.label) {
    -              case 0:
    -                if (e === undefined) return [ 2 ];
    -                return [ 5, __values(this.P(e.K)) ];
    -
    -              case 1:
    -                t.sent();
    -                return [ 4, e.u ];
    -
    -              case 2:
    -                t.sent();
    -                return [ 5, __values(this.P(e.N)) ];
    -
    -              case 3:
    -                t.sent();
    -                return [ 2 ];
    -            }
    -        }));
    -    };
         OrderedSet.prototype.begin = function() {
    -        return new OrderedSetIterator(this.h.K || this.h, this.h, this);
    +        return new OrderedSetIterator(this.u.Y || this.u, this.u, this);
         };
         OrderedSet.prototype.end = function() {
    -        return new OrderedSetIterator(this.h, this.h, this);
    +        return new OrderedSetIterator(this.u, this.u, this);
         };
         OrderedSet.prototype.rBegin = function() {
    -        return new OrderedSetIterator(this.h.N || this.h, this.h, this, 1);
    +        return new OrderedSetIterator(this.u.Z || this.u, this.u, this, 1);
         };
         OrderedSet.prototype.rEnd = function() {
    -        return new OrderedSetIterator(this.h, this.h, this, 1);
    +        return new OrderedSetIterator(this.u, this.u, this, 1);
         };
         OrderedSet.prototype.front = function() {
    -        return this.h.K ? this.h.K.u : undefined;
    +        return this.u.Y ? this.u.Y.p : undefined;
         };
         OrderedSet.prototype.back = function() {
    -        return this.h.N ? this.h.N.u : undefined;
    -    };
    -    OrderedSet.prototype.insert = function(e, t) {
    -        return this.v(e, undefined, t);
    -    };
    -    OrderedSet.prototype.find = function(e) {
    -        var t = this.g(this.W, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +        return this.u.Z ? this.u.Z.p : undefined;
         };
         OrderedSet.prototype.lowerBound = function(e) {
    -        var t = this.U(this.W, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +        var r = this.$(this.rr, e);
    +        return new OrderedSetIterator(r, this.u, this);
         };
         OrderedSet.prototype.upperBound = function(e) {
    -        var t = this.X(this.W, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +        var r = this.tr(this.rr, e);
    +        return new OrderedSetIterator(r, this.u, this);
         };
         OrderedSet.prototype.reverseLowerBound = function(e) {
    -        var t = this.Y(this.W, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +        var r = this.er(this.rr, e);
    +        return new OrderedSetIterator(r, this.u, this);
         };
         OrderedSet.prototype.reverseUpperBound = function(e) {
    -        var t = this.Z(this.W, e);
    -        return new OrderedSetIterator(t, this.h, this);
    +        var r = this.nr(this.rr, e);
    +        return new OrderedSetIterator(r, this.u, this);
    +    };
    +    OrderedSet.prototype.forEach = function(e) {
    +        this.ir((function(r, t, n) {
    +            e(r.p, t, n);
    +        }));
    +    };
    +    OrderedSet.prototype.insert = function(e, r) {
    +        return this.v(e, undefined, r);
    +    };
    +    OrderedSet.prototype.getElementByPos = function(e) {
    +        if (e < 0 || e > this.i - 1) {
    +            throw new RangeError;
    +        }
    +        var r = this.ir(e);
    +        return r.p;
    +    };
    +    OrderedSet.prototype.find = function(e) {
    +        var r = this.ar(this.rr, e);
    +        return new OrderedSetIterator(r, this.u, this);
         };
         OrderedSet.prototype.union = function(e) {
    -        var t = this;
    +        var r = this;
             e.forEach((function(e) {
    -            t.insert(e);
    +            r.insert(e);
             }));
    -        return this.M;
    +        return this.i;
         };
         OrderedSet.prototype[Symbol.iterator] = function() {
    -        return this.P(this.W);
    +        var e, r, t;
    +        return __generator(this, (function(n) {
    +            switch (n.label) {
    +              case 0:
    +                e = this.i;
    +                r = this.ir();
    +                t = 0;
    +                n.label = 1;
    +
    +              case 1:
    +                if (!(t < e)) return [ 3, 4 ];
    +                return [ 4, r[t].p ];
    +
    +              case 2:
    +                n.sent();
    +                n.label = 3;
    +
    +              case 3:
    +                ++t;
    +                return [ 3, 1 ];
    +
    +              case 4:
    +                return [ 2 ];
    +            }
    +        }));
         };
         return OrderedSet;
     }(TreeContainer);
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/utils/math.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/utils/math.js
    new file mode 100644
    index 00000000000000..4fde8a44f762aa
    --- /dev/null
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/esm/utils/math.js
    @@ -0,0 +1,6 @@
    +export function ceil(r, t) {
    +    return Math.floor((r + t - 1) / t);
    +}
    +
    +export var floor = Math.floor;
    +//# sourceMappingURL=math.js.map
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.js
    index bdeca2417982b8..41ad442d49bfa7 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.js
    @@ -1,5 +1,5 @@
     /*!
    - * js-sdsl v4.3.0
    + * js-sdsl v4.4.0
      * https://github.com/js-sdsl/js-sdsl
      * (c) 2021-present ZLY201 
      * MIT license
    @@ -753,6 +753,7 @@
           };
           Vector.prototype.reverse = function () {
             this._vector.reverse();
    +        return this;
           };
           Vector.prototype.unique = function () {
             var index = 1;
    @@ -766,6 +767,7 @@
           };
           Vector.prototype.sort = function (cmp) {
             this._vector.sort(cmp);
    +        return this;
           };
           Vector.prototype.forEach = function (callback) {
             for (var i = 0; i < this._length; ++i) {
    @@ -773,18 +775,17 @@
             }
           };
           Vector.prototype[Symbol.iterator] = function () {
    -        return function () {
    -          return __generator(this, function (_a) {
    -            switch (_a.label) {
    -              case 0:
    -                return [5 /*yield**/, __values(this._vector)];
    -              case 1:
    -                _a.sent();
    -                return [2 /*return*/];
    -            }
    -          });
    -        }.bind(this)();
    +        return __generator(this, function (_a) {
    +          switch (_a.label) {
    +            case 0:
    +              return [5 /*yield**/, __values(this._vector)];
    +            case 1:
    +              _a.sent();
    +              return [2 /*return*/];
    +          }
    +        });
           };
    +
           return Vector;
         }(SequentialContainer);
     
    @@ -1049,7 +1050,9 @@
             return this.end();
           };
           LinkList.prototype.reverse = function () {
    -        if (this._length <= 1) return;
    +        if (this._length <= 1) {
    +          return this;
    +        }
             var pHead = this._head;
             var pTail = this._tail;
             var cnt = 0;
    @@ -1061,6 +1064,7 @@
               pTail = pTail._pre;
               cnt += 1;
             }
    +        return this;
           };
           LinkList.prototype.unique = function () {
             if (this._length <= 1) {
    @@ -1080,7 +1084,9 @@
             return this._length;
           };
           LinkList.prototype.sort = function (cmp) {
    -        if (this._length <= 1) return;
    +        if (this._length <= 1) {
    +          return this;
    +        }
             var arr = [];
             this.forEach(function (el) {
               arr.push(el);
    @@ -1091,6 +1097,7 @@
               curNode._value = element;
               curNode = curNode._next;
             });
    +        return this;
           };
           /**
            * @description Merges two sorted lists.
    @@ -1127,30 +1134,43 @@
             }
           };
           LinkList.prototype[Symbol.iterator] = function () {
    -        return function () {
    -          var curNode;
    -          return __generator(this, function (_a) {
    -            switch (_a.label) {
    -              case 0:
    -                if (this._length === 0) return [2 /*return*/];
    -                curNode = this._head;
    -                _a.label = 1;
    -              case 1:
    -                if (!(curNode !== this._header)) return [3 /*break*/, 3];
    -                return [4 /*yield*/, curNode._value];
    -              case 2:
    -                _a.sent();
    -                curNode = curNode._next;
    -                return [3 /*break*/, 1];
    -              case 3:
    -                return [2 /*return*/];
    -            }
    -          });
    -        }.bind(this)();
    +        var curNode;
    +        return __generator(this, function (_a) {
    +          switch (_a.label) {
    +            case 0:
    +              if (this._length === 0) return [2 /*return*/];
    +              curNode = this._head;
    +              _a.label = 1;
    +            case 1:
    +              if (!(curNode !== this._header)) return [3 /*break*/, 3];
    +              return [4 /*yield*/, curNode._value];
    +            case 2:
    +              _a.sent();
    +              curNode = curNode._next;
    +              return [3 /*break*/, 1];
    +            case 3:
    +              return [2 /*return*/];
    +          }
    +        });
           };
    +
           return LinkList;
         }(SequentialContainer);
     
    +    /**
    +     * @description Same to Math.ceil(a / b).
    +     * @param a - numerator.
    +     * @param b - Denominator.
    +     * @internal
    +     */
    +    function ceil(a, b) {
    +      return Math.floor((a + b - 1) / b);
    +    }
    +    /**
    +     * @internal
    +     */
    +    var floor = Math.floor;
    +
         var DequeIterator = /** @class */function (_super) {
           __extends(DequeIterator, _super);
           function DequeIterator(node, container, iteratorType) {
    @@ -1204,11 +1224,11 @@
               throw new TypeError("Cannot get the length or size of the container");
             }();
             _this._bucketSize = _bucketSize;
    -        _this._bucketNum = Math.max(Math.ceil(_length / _this._bucketSize), 1);
    +        _this._bucketNum = ceil(_length, _this._bucketSize) || 1;
             for (var i = 0; i < _this._bucketNum; ++i) {
               _this._map.push(new Array(_this._bucketSize));
             }
    -        var needBucketNum = Math.ceil(_length / _this._bucketSize);
    +        var needBucketNum = ceil(_length, _this._bucketSize);
             _this._first = _this._last = (_this._bucketNum >> 1) - (needBucketNum >> 1);
             _this._curFirst = _this._curLast = _this._bucketSize - _length % _this._bucketSize >> 1;
             var self = _this;
    @@ -1221,9 +1241,9 @@
            * @description Growth the Deque.
            * @internal
            */
    -      Deque.prototype._reAllocate = function () {
    +      Deque.prototype._reAllocate = function (needBucketNum) {
             var newMap = [];
    -        var addBucketNum = Math.max(this._bucketNum >> 1, 1);
    +        var addBucketNum = needBucketNum || this._bucketNum >> 1 || 1;
             for (var i = 0; i < addBucketNum; ++i) {
               newMap[i] = new Array(this._bucketSize);
             }
    @@ -1248,13 +1268,16 @@
            * @internal
            */
           Deque.prototype._getElementIndex = function (pos) {
    -        var offset = this._curFirst + pos + 1;
    -        var offsetRemainder = offset % this._bucketSize;
    -        var curNodePointerIndex = offsetRemainder - 1;
    -        var curNodeBucketIndex = this._first + (offset - offsetRemainder) / this._bucketSize;
    -        if (offsetRemainder === 0) curNodeBucketIndex -= 1;
    -        curNodeBucketIndex %= this._bucketNum;
    -        if (curNodePointerIndex < 0) curNodePointerIndex += this._bucketSize;
    +        var curNodeBucketIndex, curNodePointerIndex;
    +        var index = this._curFirst + pos;
    +        curNodeBucketIndex = this._first + floor(index / this._bucketSize);
    +        if (curNodeBucketIndex >= this._bucketNum) {
    +          curNodeBucketIndex -= this._bucketNum;
    +        }
    +        curNodePointerIndex = (index + 1) % this._bucketSize - 1;
    +        if (curNodePointerIndex < 0) {
    +          curNodePointerIndex = this._bucketSize - 1;
    +        }
             return {
               curNodeBucketIndex: curNodeBucketIndex,
               curNodePointerIndex: curNodePointerIndex
    @@ -1387,7 +1410,8 @@
             if (num === void 0) {
               num = 1;
             }
    -        if (pos < 0 || pos > this._length) {
    +        var length = this._length;
    +        if (pos < 0 || pos > length) {
               throw new RangeError();
             }
             if (pos === 0) {
    @@ -1430,29 +1454,37 @@
               throw new RangeError();
             }
             if (pos === 0) this.popFront();else if (pos === this._length - 1) this.popBack();else {
    -          var arr = [];
    -          for (var i = pos + 1; i < this._length; ++i) {
    -            arr.push(this.getElementByPos(i));
    +          var length_1 = this._length - 1;
    +          var _a = this._getElementIndex(pos),
    +            curBucket = _a.curNodeBucketIndex,
    +            curPointer = _a.curNodePointerIndex;
    +          for (var i = pos; i < length_1; ++i) {
    +            var _b = this._getElementIndex(pos + 1),
    +              nextBucket = _b.curNodeBucketIndex,
    +              nextPointer = _b.curNodePointerIndex;
    +            this._map[curBucket][curPointer] = this._map[nextBucket][nextPointer];
    +            curBucket = nextBucket;
    +            curPointer = nextPointer;
               }
    -          this.cut(pos);
               this.popBack();
    -          var self_1 = this;
    -          arr.forEach(function (el) {
    -            self_1.pushBack(el);
    -          });
             }
             return this._length;
           };
           Deque.prototype.eraseElementByValue = function (value) {
    -        if (this._length === 0) return 0;
    -        var arr = [];
    -        for (var i = 0; i < this._length; ++i) {
    +        var length = this._length;
    +        if (length === 0) return 0;
    +        var i = 0;
    +        var index = 0;
    +        while (i < length) {
               var element = this.getElementByPos(i);
    -          if (element !== value) arr.push(element);
    +          if (element !== value) {
    +            this.setElementByPos(index, element);
    +            index += 1;
    +          }
    +          i += 1;
             }
    -        var _length = arr.length;
    -        for (var i = 0; i < _length; ++i) this.setElementByPos(i, arr[i]);
    -        return this.cut(_length - 1);
    +        this.cut(index - 1);
    +        return this._length;
           };
           Deque.prototype.eraseElementByIterator = function (iter) {
             var _node = iter._node;
    @@ -1469,15 +1501,19 @@
             return this.end();
           };
           Deque.prototype.reverse = function () {
    -        var l = 0;
    -        var r = this._length - 1;
    -        while (l < r) {
    -          var tmp = this.getElementByPos(l);
    -          this.setElementByPos(l, this.getElementByPos(r));
    -          this.setElementByPos(r, tmp);
    -          l += 1;
    -          r -= 1;
    -        }
    +        this._map.reverse().forEach(function (bucket) {
    +          bucket.reverse();
    +        });
    +        var _a = this,
    +          _first = _a._first,
    +          _last = _a._last,
    +          _curFirst = _a._curFirst,
    +          _curLast = _a._curLast;
    +        this._first = this._bucketNum - _last - 1;
    +        this._last = this._bucketNum - _first - 1;
    +        this._curFirst = this._bucketSize - _curLast - 1;
    +        this._curLast = this._bucketSize - _curFirst - 1;
    +        return this;
           };
           Deque.prototype.unique = function () {
             if (this._length <= 1) {
    @@ -1492,7 +1528,7 @@
                 this.setElementByPos(index++, cur);
               }
             }
    -        while (this._length > index) this.popBack();
    +        this.cut(index - 1);
             return this._length;
           };
           Deque.prototype.sort = function (cmp) {
    @@ -1501,24 +1537,32 @@
               arr.push(this.getElementByPos(i));
             }
             arr.sort(cmp);
    -        for (var i = 0; i < this._length; ++i) this.setElementByPos(i, arr[i]);
    +        for (var i = 0; i < this._length; ++i) {
    +          this.setElementByPos(i, arr[i]);
    +        }
    +        return this;
           };
           /**
            * @description Remove as much useless space as possible.
            */
           Deque.prototype.shrinkToFit = function () {
             if (this._length === 0) return;
    -        var arr = [];
    -        this.forEach(function (el) {
    -          arr.push(el);
    -        });
    -        this._bucketNum = Math.max(Math.ceil(this._length / this._bucketSize), 1);
    -        this._length = this._first = this._last = this._curFirst = this._curLast = 0;
    -        this._map = [];
    -        for (var i = 0; i < this._bucketNum; ++i) {
    -          this._map.push(new Array(this._bucketSize));
    +        var newMap = [];
    +        if (this._first === this._last) return;else if (this._first < this._last) {
    +          for (var i = this._first; i <= this._last; ++i) {
    +            newMap.push(this._map[i]);
    +          }
    +        } else {
    +          for (var i = this._first; i < this._bucketNum; ++i) {
    +            newMap.push(this._map[i]);
    +          }
    +          for (var i = 0; i <= this._last; ++i) {
    +            newMap.push(this._map[i]);
    +          }
             }
    -        for (var i = 0; i < arr.length; ++i) this.pushBack(arr[i]);
    +        this._first = 0;
    +        this._last = newMap.length - 1;
    +        this._map = newMap;
           };
           Deque.prototype.forEach = function (callback) {
             for (var i = 0; i < this._length; ++i) {
    @@ -1526,41 +1570,41 @@
             }
           };
           Deque.prototype[Symbol.iterator] = function () {
    -        return function () {
    -          var i;
    -          return __generator(this, function (_a) {
    -            switch (_a.label) {
    -              case 0:
    -                i = 0;
    -                _a.label = 1;
    -              case 1:
    -                if (!(i < this._length)) return [3 /*break*/, 4];
    -                return [4 /*yield*/, this.getElementByPos(i)];
    -              case 2:
    -                _a.sent();
    -                _a.label = 3;
    -              case 3:
    -                ++i;
    -                return [3 /*break*/, 1];
    -              case 4:
    -                return [2 /*return*/];
    -            }
    -          });
    -        }.bind(this)();
    +        var i;
    +        return __generator(this, function (_a) {
    +          switch (_a.label) {
    +            case 0:
    +              i = 0;
    +              _a.label = 1;
    +            case 1:
    +              if (!(i < this._length)) return [3 /*break*/, 4];
    +              return [4 /*yield*/, this.getElementByPos(i)];
    +            case 2:
    +              _a.sent();
    +              _a.label = 3;
    +            case 3:
    +              ++i;
    +              return [3 /*break*/, 1];
    +            case 4:
    +              return [2 /*return*/];
    +          }
    +        });
           };
    +
           return Deque;
         }(SequentialContainer);
     
         var TreeNode = /** @class */function () {
    -      function TreeNode(key, value) {
    -        this._color = 1 /* TreeNodeColor.RED */;
    -        this._key = undefined;
    -        this._value = undefined;
    +      function TreeNode(key, value, color) {
    +        if (color === void 0) {
    +          color = 1 /* TreeNodeColor.RED */;
    +        }
             this._left = undefined;
             this._right = undefined;
             this._parent = undefined;
             this._key = key;
             this._value = value;
    +        this._color = color;
           }
           /**
            * @description Get the pre node.
    @@ -1703,45 +1747,8 @@
              */
             _this._root = undefined;
             _this._cmp = cmp;
    -        if (enableIndex) {
    -          _this._TreeNodeClass = TreeNodeEnableIndex;
    -          _this._set = function (key, value, hint) {
    -            var curNode = this._preSet(key, value, hint);
    -            if (curNode) {
    -              var p = curNode._parent;
    -              while (p !== this._header) {
    -                p._subTreeSize += 1;
    -                p = p._parent;
    -              }
    -              var nodeList = this._insertNodeSelfBalance(curNode);
    -              if (nodeList) {
    -                var _a = nodeList,
    -                  parentNode = _a.parentNode,
    -                  grandParent = _a.grandParent,
    -                  curNode_1 = _a.curNode;
    -                parentNode._recount();
    -                grandParent._recount();
    -                curNode_1._recount();
    -              }
    -            }
    -            return this._length;
    -          };
    -          _this._eraseNode = function (curNode) {
    -            var p = this._preEraseNode(curNode);
    -            while (p !== this._header) {
    -              p._subTreeSize -= 1;
    -              p = p._parent;
    -            }
    -          };
    -        } else {
    -          _this._TreeNodeClass = TreeNode;
    -          _this._set = function (key, value, hint) {
    -            var curNode = this._preSet(key, value, hint);
    -            if (curNode) this._insertNodeSelfBalance(curNode);
    -            return this._length;
    -          };
    -          _this._eraseNode = _this._preEraseNode;
    -        }
    +        _this.enableIndex = enableIndex;
    +        _this._TreeNodeClass = enableIndex ? TreeNodeEnableIndex : TreeNode;
             _this._header = new _this._TreeNodeClass();
             return _this;
           }
    @@ -1878,11 +1885,10 @@
           /**
            * @internal
            */
    -      TreeContainer.prototype._preEraseNode = function (curNode) {
    -        var _a, _b;
    +      TreeContainer.prototype._eraseNode = function (curNode) {
             if (this._length === 1) {
               this.clear();
    -          return this._header;
    +          return;
             }
             var swapNode = curNode;
             while (swapNode._left || swapNode._right) {
    @@ -1892,8 +1898,12 @@
               } else {
                 swapNode = swapNode._left;
               }
    -          _a = __read([swapNode._key, curNode._key], 2), curNode._key = _a[0], swapNode._key = _a[1];
    -          _b = __read([swapNode._value, curNode._value], 2), curNode._value = _b[0], swapNode._value = _b[1];
    +          var key = curNode._key;
    +          curNode._key = swapNode._key;
    +          swapNode._key = key;
    +          var value = curNode._value;
    +          curNode._value = swapNode._value;
    +          swapNode._value = value;
               curNode = swapNode;
             }
             if (this._header._left === swapNode) {
    @@ -1908,17 +1918,37 @@
             } else _parent._right = undefined;
             this._length -= 1;
             this._root._color = 0 /* TreeNodeColor.BLACK */;
    -        return _parent;
    +        if (this.enableIndex) {
    +          while (_parent !== this._header) {
    +            _parent._subTreeSize -= 1;
    +            _parent = _parent._parent;
    +          }
    +        }
           };
           /**
            * @internal
            */
    -      TreeContainer.prototype._inOrderTraversal = function (curNode, callback) {
    -        if (curNode === undefined) return false;
    -        var ifReturn = this._inOrderTraversal(curNode._left, callback);
    -        if (ifReturn) return true;
    -        if (callback(curNode)) return true;
    -        return this._inOrderTraversal(curNode._right, callback);
    +      TreeContainer.prototype._inOrderTraversal = function (param) {
    +        var pos = typeof param === 'number' ? param : undefined;
    +        var callback = typeof param === 'function' ? param : undefined;
    +        var nodeList = typeof param === 'undefined' ? [] : undefined;
    +        var index = 0;
    +        var curNode = this._root;
    +        var stack = [];
    +        while (stack.length || curNode) {
    +          if (curNode) {
    +            stack.push(curNode);
    +            curNode = curNode._left;
    +          } else {
    +            curNode = stack.pop();
    +            if (index === pos) return curNode;
    +            nodeList && nodeList.push(curNode);
    +            callback && callback(curNode, index, this);
    +            index += 1;
    +            curNode = curNode._right;
    +          }
    +        }
    +        return nodeList;
           };
           /**
            * @internal
    @@ -1938,8 +1968,12 @@
                   continue;
                 } else if (curNode === parentNode._right) {
                   curNode._color = 0 /* TreeNodeColor.BLACK */;
    -              if (curNode._left) curNode._left._parent = parentNode;
    -              if (curNode._right) curNode._right._parent = grandParent;
    +              if (curNode._left) {
    +                curNode._left._parent = parentNode;
    +              }
    +              if (curNode._right) {
    +                curNode._right._parent = grandParent;
    +              }
                   parentNode._right = curNode._left;
                   grandParent._left = curNode._right;
                   curNode._left = parentNode;
    @@ -1957,17 +1991,13 @@
                   parentNode._parent = curNode;
                   grandParent._parent = curNode;
                   grandParent._color = 1 /* TreeNodeColor.RED */;
    -              return {
    -                parentNode: parentNode,
    -                grandParent: grandParent,
    -                curNode: curNode
    -              };
                 } else {
                   parentNode._color = 0 /* TreeNodeColor.BLACK */;
                   if (grandParent === this._root) {
                     this._root = grandParent._rotateRight();
                   } else grandParent._rotateRight();
                   grandParent._color = 1 /* TreeNodeColor.RED */;
    +              return;
                 }
               } else {
                 var uncle = grandParent._left;
    @@ -1979,8 +2009,12 @@
                   continue;
                 } else if (curNode === parentNode._left) {
                   curNode._color = 0 /* TreeNodeColor.BLACK */;
    -              if (curNode._left) curNode._left._parent = grandParent;
    -              if (curNode._right) curNode._right._parent = parentNode;
    +              if (curNode._left) {
    +                curNode._left._parent = grandParent;
    +              }
    +              if (curNode._right) {
    +                curNode._right._parent = parentNode;
    +              }
                   grandParent._right = curNode._left;
                   parentNode._left = curNode._right;
                   curNode._left = grandParent;
    @@ -1998,43 +2032,40 @@
                   parentNode._parent = curNode;
                   grandParent._parent = curNode;
                   grandParent._color = 1 /* TreeNodeColor.RED */;
    -              return {
    -                parentNode: parentNode,
    -                grandParent: grandParent,
    -                curNode: curNode
    -              };
                 } else {
                   parentNode._color = 0 /* TreeNodeColor.BLACK */;
                   if (grandParent === this._root) {
                     this._root = grandParent._rotateLeft();
                   } else grandParent._rotateLeft();
                   grandParent._color = 1 /* TreeNodeColor.RED */;
    +              return;
                 }
               }
    -
    +          if (this.enableIndex) {
    +            parentNode._recount();
    +            grandParent._recount();
    +            curNode._recount();
    +          }
               return;
             }
           };
           /**
            * @internal
            */
    -      TreeContainer.prototype._preSet = function (key, value, hint) {
    +      TreeContainer.prototype._set = function (key, value, hint) {
             if (this._root === undefined) {
               this._length += 1;
    -          this._root = new this._TreeNodeClass(key, value);
    -          this._root._color = 0 /* TreeNodeColor.BLACK */;
    +          this._root = new this._TreeNodeClass(key, value, 0 /* TreeNodeColor.BLACK */);
               this._root._parent = this._header;
    -          this._header._parent = this._root;
    -          this._header._left = this._root;
    -          this._header._right = this._root;
    -          return;
    +          this._header._parent = this._header._left = this._header._right = this._root;
    +          return this._length;
             }
             var curNode;
             var minNode = this._header._left;
             var compareToMin = this._cmp(minNode._key, key);
             if (compareToMin === 0) {
               minNode._value = value;
    -          return;
    +          return this._length;
             } else if (compareToMin > 0) {
               minNode._left = new this._TreeNodeClass(key, value);
               minNode._left._parent = minNode;
    @@ -2045,7 +2076,7 @@
               var compareToMax = this._cmp(maxNode._key, key);
               if (compareToMax === 0) {
                 maxNode._value = value;
    -            return;
    +            return this._length;
               } else if (compareToMax < 0) {
                 maxNode._right = new this._TreeNodeClass(key, value);
                 maxNode._right._parent = maxNode;
    @@ -2058,13 +2089,13 @@
                     var iterCmpRes = this._cmp(iterNode._key, key);
                     if (iterCmpRes === 0) {
                       iterNode._value = value;
    -                  return;
    +                  return this._length;
                     } else /* istanbul ignore else */if (iterCmpRes > 0) {
                         var preNode = iterNode._pre();
                         var preCmpRes = this._cmp(preNode._key, key);
                         if (preCmpRes === 0) {
                           preNode._value = value;
    -                      return;
    +                      return this._length;
                         } else if (preCmpRes < 0) {
                           curNode = new this._TreeNodeClass(key, value);
                           if (preNode._right === undefined) {
    @@ -2100,19 +2131,27 @@
                       curNode = curNode._right;
                     } else {
                       curNode._value = value;
    -                  return;
    +                  return this._length;
                     }
                   }
                 }
               }
             }
    +        if (this.enableIndex) {
    +          var parent_1 = curNode._parent;
    +          while (parent_1 !== this._header) {
    +            parent_1._subTreeSize += 1;
    +            parent_1 = parent_1._parent;
    +          }
    +        }
    +        this._insertNodeSelfBalance(curNode);
             this._length += 1;
    -        return curNode;
    +        return this._length;
           };
           /**
            * @internal
            */
    -      TreeContainer.prototype._findElementNode = function (curNode, key) {
    +      TreeContainer.prototype._getTreeNodeByKey = function (curNode, key) {
             while (curNode) {
               var cmpResult = this._cmp(curNode._key, key);
               if (cmpResult < 0) {
    @@ -2148,24 +2187,23 @@
               node._key = key;
               return true;
             }
    +        var nextKey = node._next()._key;
             if (node === this._header._left) {
    -          if (this._cmp(node._next()._key, key) > 0) {
    +          if (this._cmp(nextKey, key) > 0) {
                 node._key = key;
                 return true;
               }
               return false;
             }
    +        var preKey = node._pre()._key;
             if (node === this._header._right) {
    -          if (this._cmp(node._pre()._key, key) < 0) {
    +          if (this._cmp(preKey, key) < 0) {
                 node._key = key;
                 return true;
               }
               return false;
             }
    -        var preKey = node._pre()._key;
    -        if (this._cmp(preKey, key) >= 0) return false;
    -        var nextKey = node._next()._key;
    -        if (this._cmp(nextKey, key) <= 0) return false;
    +        if (this._cmp(preKey, key) >= 0 || this._cmp(nextKey, key) <= 0) return false;
             node._key = key;
             return true;
           };
    @@ -2173,16 +2211,8 @@
             if (pos < 0 || pos > this._length - 1) {
               throw new RangeError();
             }
    -        var index = 0;
    -        var self = this;
    -        this._inOrderTraversal(this._root, function (curNode) {
    -          if (pos === index) {
    -            self._eraseNode(curNode);
    -            return true;
    -          }
    -          index += 1;
    -          return false;
    -        });
    +        var node = this._inOrderTraversal(pos);
    +        this._eraseNode(node);
             return this._length;
           };
           /**
    @@ -2192,7 +2222,7 @@
            */
           TreeContainer.prototype.eraseElementByKey = function (key) {
             if (this._length === 0) return false;
    -        var curNode = this._findElementNode(this._root, key);
    +        var curNode = this._getTreeNodeByKey(this._root, key);
             if (curNode === this._header) return false;
             this._eraseNode(curNode);
             return true;
    @@ -2216,65 +2246,16 @@
             this._eraseNode(node);
             return iter;
           };
    -      TreeContainer.prototype.forEach = function (callback) {
    -        var e_1, _a;
    -        var index = 0;
    -        try {
    -          for (var _b = __values(this), _c = _b.next(); !_c.done; _c = _b.next()) {
    -            var element = _c.value;
    -            callback(element, index++, this);
    -          }
    -        } catch (e_1_1) {
    -          e_1 = {
    -            error: e_1_1
    -          };
    -        } finally {
    -          try {
    -            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
    -          } finally {
    -            if (e_1) throw e_1.error;
    -          }
    -        }
    -      };
    -      TreeContainer.prototype.getElementByPos = function (pos) {
    -        var e_2, _a;
    -        if (pos < 0 || pos > this._length - 1) {
    -          throw new RangeError();
    -        }
    -        var res;
    -        var index = 0;
    -        try {
    -          for (var _b = __values(this), _c = _b.next(); !_c.done; _c = _b.next()) {
    -            var element = _c.value;
    -            if (index === pos) {
    -              res = element;
    -              break;
    -            }
    -            index += 1;
    -          }
    -        } catch (e_2_1) {
    -          e_2 = {
    -            error: e_2_1
    -          };
    -        } finally {
    -          try {
    -            if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
    -          } finally {
    -            if (e_2) throw e_2.error;
    -          }
    -        }
    -        return res;
    -      };
           /**
            * @description Get the height of the tree.
            * @returns Number about the height of the RB-tree.
            */
           TreeContainer.prototype.getHeight = function () {
             if (this._length === 0) return 0;
    -        var traversal = function (curNode) {
    +        function traversal(curNode) {
               if (!curNode) return 0;
               return Math.max(traversal(curNode._left), traversal(curNode._right)) + 1;
    -        };
    +        }
             return traversal(this._root);
           };
           return TreeContainer;
    @@ -2408,28 +2389,6 @@
             });
             return _this;
           }
    -      /**
    -       * @internal
    -       */
    -      OrderedSet.prototype._iterationFunc = function (curNode) {
    -        return __generator(this, function (_a) {
    -          switch (_a.label) {
    -            case 0:
    -              if (curNode === undefined) return [2 /*return*/];
    -              return [5 /*yield**/, __values(this._iterationFunc(curNode._left))];
    -            case 1:
    -              _a.sent();
    -              return [4 /*yield*/, curNode._key];
    -            case 2:
    -              _a.sent();
    -              return [5 /*yield**/, __values(this._iterationFunc(curNode._right))];
    -            case 3:
    -              _a.sent();
    -              return [2 /*return*/];
    -          }
    -        });
    -      };
    -
           OrderedSet.prototype.begin = function () {
             return new OrderedSetIterator(this._header._left || this._header, this._header, this);
           };
    @@ -2450,6 +2409,27 @@
           OrderedSet.prototype.back = function () {
             return this._header._right ? this._header._right._key : undefined;
           };
    +      OrderedSet.prototype.lowerBound = function (key) {
    +        var resNode = this._lowerBound(this._root, key);
    +        return new OrderedSetIterator(resNode, this._header, this);
    +      };
    +      OrderedSet.prototype.upperBound = function (key) {
    +        var resNode = this._upperBound(this._root, key);
    +        return new OrderedSetIterator(resNode, this._header, this);
    +      };
    +      OrderedSet.prototype.reverseLowerBound = function (key) {
    +        var resNode = this._reverseLowerBound(this._root, key);
    +        return new OrderedSetIterator(resNode, this._header, this);
    +      };
    +      OrderedSet.prototype.reverseUpperBound = function (key) {
    +        var resNode = this._reverseUpperBound(this._root, key);
    +        return new OrderedSetIterator(resNode, this._header, this);
    +      };
    +      OrderedSet.prototype.forEach = function (callback) {
    +        this._inOrderTraversal(function (node, index, set) {
    +          callback(node._key, index, set);
    +        });
    +      };
           /**
            * @description Insert element to set.
            * @param key - The key want to insert.
    @@ -2464,24 +2444,15 @@
           OrderedSet.prototype.insert = function (key, hint) {
             return this._set(key, undefined, hint);
           };
    -      OrderedSet.prototype.find = function (element) {
    -        var resNode = this._findElementNode(this._root, element);
    -        return new OrderedSetIterator(resNode, this._header, this);
    -      };
    -      OrderedSet.prototype.lowerBound = function (key) {
    -        var resNode = this._lowerBound(this._root, key);
    -        return new OrderedSetIterator(resNode, this._header, this);
    -      };
    -      OrderedSet.prototype.upperBound = function (key) {
    -        var resNode = this._upperBound(this._root, key);
    -        return new OrderedSetIterator(resNode, this._header, this);
    -      };
    -      OrderedSet.prototype.reverseLowerBound = function (key) {
    -        var resNode = this._reverseLowerBound(this._root, key);
    -        return new OrderedSetIterator(resNode, this._header, this);
    +      OrderedSet.prototype.getElementByPos = function (pos) {
    +        if (pos < 0 || pos > this._length - 1) {
    +          throw new RangeError();
    +        }
    +        var node = this._inOrderTraversal(pos);
    +        return node._key;
           };
    -      OrderedSet.prototype.reverseUpperBound = function (key) {
    -        var resNode = this._reverseUpperBound(this._root, key);
    +      OrderedSet.prototype.find = function (element) {
    +        var resNode = this._getTreeNodeByKey(this._root, element);
             return new OrderedSetIterator(resNode, this._header, this);
           };
           OrderedSet.prototype.union = function (other) {
    @@ -2492,8 +2463,29 @@
             return this._length;
           };
           OrderedSet.prototype[Symbol.iterator] = function () {
    -        return this._iterationFunc(this._root);
    +        var length, nodeList, i;
    +        return __generator(this, function (_a) {
    +          switch (_a.label) {
    +            case 0:
    +              length = this._length;
    +              nodeList = this._inOrderTraversal();
    +              i = 0;
    +              _a.label = 1;
    +            case 1:
    +              if (!(i < length)) return [3 /*break*/, 4];
    +              return [4 /*yield*/, nodeList[i]._key];
    +            case 2:
    +              _a.sent();
    +              _a.label = 3;
    +            case 3:
    +              ++i;
    +              return [3 /*break*/, 1];
    +            case 4:
    +              return [2 /*return*/];
    +          }
    +        });
           };
    +
           return OrderedSet;
         }(TreeContainer);
     
    @@ -2554,28 +2546,6 @@
             });
             return _this;
           }
    -      /**
    -       * @internal
    -       */
    -      OrderedMap.prototype._iterationFunc = function (curNode) {
    -        return __generator(this, function (_a) {
    -          switch (_a.label) {
    -            case 0:
    -              if (curNode === undefined) return [2 /*return*/];
    -              return [5 /*yield**/, __values(this._iterationFunc(curNode._left))];
    -            case 1:
    -              _a.sent();
    -              return [4 /*yield*/, [curNode._key, curNode._value]];
    -            case 2:
    -              _a.sent();
    -              return [5 /*yield**/, __values(this._iterationFunc(curNode._right))];
    -            case 3:
    -              _a.sent();
    -              return [2 /*return*/];
    -          }
    -        });
    -      };
    -
           OrderedMap.prototype.begin = function () {
             return new OrderedMapIterator(this._header._left || this._header, this._header, this);
           };
    @@ -2616,6 +2586,11 @@
             var resNode = this._reverseUpperBound(this._root, key);
             return new OrderedMapIterator(resNode, this._header, this);
           };
    +      OrderedMap.prototype.forEach = function (callback) {
    +        this._inOrderTraversal(function (node, index, map) {
    +          callback([node._key, node._value], index, map);
    +        });
    +      };
           /**
            * @description Insert a key-value pair or set value by the given key.
            * @param key - The key want to insert.
    @@ -2631,8 +2606,15 @@
           OrderedMap.prototype.setElement = function (key, value, hint) {
             return this._set(key, value, hint);
           };
    +      OrderedMap.prototype.getElementByPos = function (pos) {
    +        if (pos < 0 || pos > this._length - 1) {
    +          throw new RangeError();
    +        }
    +        var node = this._inOrderTraversal(pos);
    +        return [node._key, node._value];
    +      };
           OrderedMap.prototype.find = function (key) {
    -        var curNode = this._findElementNode(this._root, key);
    +        var curNode = this._getTreeNodeByKey(this._root, key);
             return new OrderedMapIterator(curNode, this._header, this);
           };
           /**
    @@ -2642,7 +2624,7 @@
            * const val = container.getElementByKey(1);
            */
           OrderedMap.prototype.getElementByKey = function (key) {
    -        var curNode = this._findElementNode(this._root, key);
    +        var curNode = this._getTreeNodeByKey(this._root, key);
             return curNode._value;
           };
           OrderedMap.prototype.union = function (other) {
    @@ -2653,8 +2635,30 @@
             return this._length;
           };
           OrderedMap.prototype[Symbol.iterator] = function () {
    -        return this._iterationFunc(this._root);
    +        var length, nodeList, i, node;
    +        return __generator(this, function (_a) {
    +          switch (_a.label) {
    +            case 0:
    +              length = this._length;
    +              nodeList = this._inOrderTraversal();
    +              i = 0;
    +              _a.label = 1;
    +            case 1:
    +              if (!(i < length)) return [3 /*break*/, 4];
    +              node = nodeList[i];
    +              return [4 /*yield*/, [node._key, node._value]];
    +            case 2:
    +              _a.sent();
    +              _a.label = 3;
    +            case 3:
    +              ++i;
    +              return [3 /*break*/, 1];
    +            case 4:
    +              return [2 /*return*/];
    +          }
    +        });
           };
    +
           return OrderedMap;
         }(TreeContainer);
     
    @@ -2782,13 +2786,12 @@
                 node._value = value;
                 return this._length;
               }
    -          newTail = {
    +          this._originMap[key] = newTail = {
                 _key: key,
                 _value: value,
                 _pre: this._tail,
                 _next: this._header
               };
    -          this._originMap[key] = newTail;
             }
             if (this._length === 0) {
               this._head = newTail;
    @@ -2965,26 +2968,25 @@
             }
           };
           HashSet.prototype[Symbol.iterator] = function () {
    -        return function () {
    -          var node;
    -          return __generator(this, function (_a) {
    -            switch (_a.label) {
    -              case 0:
    -                node = this._head;
    -                _a.label = 1;
    -              case 1:
    -                if (!(node !== this._header)) return [3 /*break*/, 3];
    -                return [4 /*yield*/, node._key];
    -              case 2:
    -                _a.sent();
    -                node = node._next;
    -                return [3 /*break*/, 1];
    -              case 3:
    -                return [2 /*return*/];
    -            }
    -          });
    -        }.bind(this)();
    +        var node;
    +        return __generator(this, function (_a) {
    +          switch (_a.label) {
    +            case 0:
    +              node = this._head;
    +              _a.label = 1;
    +            case 1:
    +              if (!(node !== this._header)) return [3 /*break*/, 3];
    +              return [4 /*yield*/, node._key];
    +            case 2:
    +              _a.sent();
    +              node = node._next;
    +              return [3 /*break*/, 1];
    +            case 3:
    +              return [2 /*return*/];
    +          }
    +        });
           };
    +
           return HashSet;
         }(HashContainer);
     
    @@ -3115,26 +3117,25 @@
             }
           };
           HashMap.prototype[Symbol.iterator] = function () {
    -        return function () {
    -          var node;
    -          return __generator(this, function (_a) {
    -            switch (_a.label) {
    -              case 0:
    -                node = this._head;
    -                _a.label = 1;
    -              case 1:
    -                if (!(node !== this._header)) return [3 /*break*/, 3];
    -                return [4 /*yield*/, [node._key, node._value]];
    -              case 2:
    -                _a.sent();
    -                node = node._next;
    -                return [3 /*break*/, 1];
    -              case 3:
    -                return [2 /*return*/];
    -            }
    -          });
    -        }.bind(this)();
    +        var node;
    +        return __generator(this, function (_a) {
    +          switch (_a.label) {
    +            case 0:
    +              node = this._head;
    +              _a.label = 1;
    +            case 1:
    +              if (!(node !== this._header)) return [3 /*break*/, 3];
    +              return [4 /*yield*/, [node._key, node._value]];
    +            case 2:
    +              _a.sent();
    +              node = node._next;
    +              return [3 /*break*/, 1];
    +            case 3:
    +              return [2 /*return*/];
    +          }
    +        });
           };
    +
           return HashMap;
         }(HashContainer);
     
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.min.js b/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.min.js
    index d9e814ccfc0e50..1d205733ed9de0 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.min.js
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/dist/umd/js-sdsl.min.js
    @@ -1,8 +1,8 @@
     /*!
    - * js-sdsl v4.3.0
    + * js-sdsl v4.4.0
      * https://github.com/js-sdsl/js-sdsl
      * (c) 2021-present ZLY201 
      * MIT license
      */
    -!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self).sdsl={})}(this,function(t){"use strict";var L=function(t,i){return(L=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(t,i){t.__proto__=i}:function(t,i){for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r])}))(t,i)};function i(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=t}L(t,i),t.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}function r(e,n){var o,s,h,u={label:0,sent:function(){if(1&h[0])throw h[1];return h[1]},trys:[],ops:[]},f={next:t(0),throw:t(1),return:t(2)};return"function"==typeof Symbol&&(f[Symbol.iterator]=function(){return this}),f;function t(r){return function(t){var i=[r,t];if(o)throw new TypeError("Generator is already executing.");for(;u=f&&i[f=0]?0:u;)try{if(o=1,s&&(h=2&i[0]?s.return:i[0]?s.throw||((h=s.return)&&h.call(s),0):s.next)&&!(h=h.call(s,i[1])).done)return h;switch(s=0,(i=h?[2&i[0],h.value]:i)[0]){case 0:case 1:h=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,s=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(h=0<(h=u.trys).length&&h[h.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!h||i[1]>h[0]&&i[1]=t.length?void 0:t)&&t[e++],done:!t}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")}function h(t,i){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var e,n,o=r.call(t),s=[];try{for(;(void 0===i||0=i&&4096>1,e=this.l[r];if(this.v(e,i)<=0)break;this.l[t]=e,t=r}this.l[t]=i},p.prototype._=function(t,i){for(var r=this.l[t];t>1)),t},p.prototype.top=function(){return this.l[0]},p.prototype.find=function(t){return 0<=this.l.indexOf(t)},p.prototype.remove=function(t){t=this.l.indexOf(t);return!(t<0||(0===t?this.pop():t===this.i-1?(this.l.pop(),--this.i):(this.l.splice(t,1,this.l.pop()),--this.i,this.p(t),this._(t,this.i>>1)),0))},p.prototype.updateItem=function(t){t=this.l.indexOf(t);return!(t<0||(this.p(t),this._(t,this.i>>1),0))},p.prototype.toArray=function(){return f([],h(this.l),!1)};var U,n=p;function p(t,i,r){void 0===t&&(t=[]),void 0===i&&(i=function(t,i){return i>1),s=n.i-1>>1;0<=s;--s)n._(s,o);return n}i(Y,J=_);var J,c=Y;function Y(){return null!==J&&J.apply(this,arguments)||this}function a(){throw new RangeError("Iterator access denied!")}i(Z,z=e),Object.defineProperty(Z.prototype,"pointer",{get:function(){return this.container.getElementByPos(this.t)},set:function(t){this.container.setElementByPos(this.t,t)},enumerable:!1,configurable:!0});var z,W=Z;function Z(t,i){i=z.call(this,i)||this;return i.t=t,0===i.iteratorType?(i.pre=function(){return 0===this.t&&a(),--this.t,this},i.next=function(){return this.t===this.container.size()&&a(),this.t+=1,this}):(i.pre=function(){return this.t===this.container.size()-1&&a(),this.t+=1,this},i.next=function(){return-1===this.t&&a(),--this.t,this}),i}i(Q,$=W),Q.prototype.copy=function(){return new Q(this.t,this.container,this.iteratorType)};var $,y=Q;function Q(t,i,r){t=$.call(this,t,r)||this;return t.container=i,t}i(l,tt=c),l.prototype.clear=function(){this.i=0,this.I.length=0},l.prototype.begin=function(){return new y(0,this)},l.prototype.end=function(){return new y(this.i,this)},l.prototype.rBegin=function(){return new y(this.i-1,this,1)},l.prototype.rEnd=function(){return new y(-1,this,1)},l.prototype.front=function(){return this.I[0]},l.prototype.back=function(){return this.I[this.i-1]},l.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;return this.I[t]},l.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;return this.I.splice(t,1),--this.i,this.i},l.prototype.eraseElementByValue=function(t){for(var i=0,r=0;rthis.i-1)throw new RangeError;this.I[t]=i},l.prototype.insert=function(t,i,r){var e;if(void 0===r&&(r=1),t<0||t>this.i)throw new RangeError;return(e=this.I).splice.apply(e,f([t,0],h(new Array(r).fill(i)),!1)),this.i+=r,this.i},l.prototype.find=function(t){for(var i=0;ithis.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return i.k},S.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return this.M(i),this.i},S.prototype.eraseElementByValue=function(t){for(var i=this.H;i!==this.S;)i.k===t&&this.M(i),i=i.O;return this.i},S.prototype.eraseElementByIterator=function(t){var i=t.t;return i===this.S&&a(),t=t.next(),this.M(i),t},S.prototype.pushBack=function(t){return this.A(t,this.g),this.i},S.prototype.popBack=function(){var t;if(0!==this.i)return t=this.g.k,this.M(this.g),t},S.prototype.pushFront=function(t){return this.A(t,this.S),this.i},S.prototype.popFront=function(){var t;if(0!==this.i)return t=this.H.k,this.M(this.H),t},S.prototype.setElementByPos=function(t,i){if(t<0||t>this.i-1)throw new RangeError;for(var r=this.H;t--;)r=r.O;r.k=i},S.prototype.insert=function(t,i,r){if(void 0===r&&(r=1),t<0||t>this.i)throw new RangeError;if(!(r<=0))if(0===t)for(;r--;)this.pushFront(i);else if(t===this.i)for(;r--;)this.pushBack(i);else{for(var e=this.H,n=1;n>1,1),r=0;r>1},w.prototype.begin=function(){return new B(0,this)},w.prototype.end=function(){return new B(this.i,this)},w.prototype.rBegin=function(){return new B(this.i-1,this,1)},w.prototype.rEnd=function(){return new B(-1,this,1)},w.prototype.front=function(){if(0!==this.i)return this.m[this.u][this.T]},w.prototype.back=function(){if(0!==this.i)return this.m[this.C][this.q]},w.prototype.pushBack=function(t){return this.i&&(this.qthis.i-1)throw new RangeError;var t=this.R(t),i=t.curNodeBucketIndex,t=t.curNodePointerIndex;return this.m[i][t]},w.prototype.setElementByPos=function(t,i){if(t<0||t>this.i-1)throw new RangeError;var t=this.R(t),r=t.curNodeBucketIndex,t=t.curNodePointerIndex;this.m[r][t]=i},w.prototype.insert=function(t,i,r){if(void 0===r&&(r=1),t<0||t>this.i)throw new RangeError;if(0===t)for(;r--;)this.pushFront(i);else if(t===this.i)for(;r--;)this.pushBack(i);else{for(var e=[],n=t;nthis.i-1)throw new RangeError;if(0===t)this.popFront();else if(t===this.i-1)this.popBack();else{for(var i=[],r=t+1;rt;)this.popBack()}return this.i},w.prototype.sort=function(t){for(var i=[],r=0;r>1)-(i>>1),r.T=r.q=r.V-e%r.V>>1,r);return t.forEach(function(t){o.pushBack(t)}),r}g.prototype.L=function(){var t=this;if(1===t.N&&t.F.F===t)t=t.G;else if(t.B)for(t=t.B;t.G;)t=t.G;else{for(var i=t.F;i.B===t;)i=(t=i).F;t=i}return t},g.prototype.O=function(){var t=this;if(t.G){for(t=t.G;t.B;)t=t.B;return t}for(var i=t.F;i.G===t;)i=(t=i).F;return t.G!==i?i:t},g.prototype.J=function(){var t=this.F,i=this.G,r=i.B;return t.F===this?t.F=i:t.B===this?t.B=i:t.G=i,i.F=t,(i.B=this).F=i,(this.G=r)&&(r.F=this),i},g.prototype.K=function(){var t=this.F,i=this.B,r=i.G;return t.F===this?t.F=i:t.B===this?t.B=i:t.G=i,i.F=t,(i.G=this).F=i,(this.B=r)&&(r.F=this),i};var ut=g;function g(t,i){this.N=1,this.P=void 0,this.k=void 0,this.B=void 0,this.G=void 0,this.F=void 0,this.P=t,this.k=i}i(m,E=ut),m.prototype.J=function(){var t=E.prototype.J.call(this);return this.W(),t.W(),t},m.prototype.K=function(){var t=E.prototype.K.call(this);return this.W(),t.W(),t},m.prototype.W=function(){this.U=1,this.B&&(this.U+=this.B.U),this.G&&(this.U+=this.G.U)};var E,ft=m;function m(){var t=null!==E&&E.apply(this,arguments)||this;return t.U=1,t}i(P,pt=_),P.prototype.rt=function(t,i){for(var r=this.S;t;){var e=this.v(t.P,i);if(e<0)t=t.G;else{if(!(0this.i-1)throw new RangeError;var r=0,e=this;return this.ut(this.X,function(t){return i===r?(e.M(t),!0):(r+=1,!1)}),this.i},P.prototype.eraseElementByKey=function(t){return 0!==this.i&&(t=this.ot(this.X,t))!==this.S&&(this.M(t),!0)},P.prototype.eraseElementByIterator=function(t){var i=t.t,r=(i===this.S&&a(),void 0===i.G);return 0===t.iteratorType?r&&t.next():r&&void 0!==i.B||t.next(),this.M(i),t},P.prototype.forEach=function(t){var i,r,e=0;try{for(var n=u(this),o=n.next();!o.done;o=n.next())t(o.value,e++,this)}catch(t){i={error:t}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(i)throw i.error}}},P.prototype.getElementByPos=function(t){var i,r,e;if(t<0||t>this.i-1)throw new RangeError;var n=0;try{for(var o=u(this),s=o.next();!s.done;s=o.next()){var h=s.value;if(n===t){e=h;break}n+=1}}catch(t){i={error:t}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return e},P.prototype.getHeight=function(){var i;return 0===this.i?0:(i=function(t){return t?Math.max(i(t.B),i(t.G))+1:0})(this.X)};var pt,c=P;function P(t,i){void 0===t&&(t=function(t,i){return tthis.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return this.M(i),this.i};var mt,e=H;function H(){var t=mt.call(this)||this;return t.ct=[],t.vt={},t.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(t.vt,null),t.S={},t.S.L=t.S.O=t.H=t.g=t.S,t}i(x,Pt=c),Object.defineProperty(x.prototype,"pointer",{get:function(){return this.t===this.S&&a(),this.t.P},enumerable:!1,configurable:!0}),x.prototype.copy=function(){return new x(this.t,this.S,this.container,this.iteratorType)};var Pt,T=x;function x(t,i,r,e){t=Pt.call(this,t,i,e)||this;return t.container=r,t}i(X,bt=e),X.prototype.begin=function(){return new T(this.H,this.S,this)},X.prototype.end=function(){return new T(this.S,this.S,this)},X.prototype.rBegin=function(){return new T(this.g,this.S,this,1)},X.prototype.rEnd=function(){return new T(this.S,this.S,this,1)},X.prototype.front=function(){return this.H.P},X.prototype.back=function(){return this.g.P},X.prototype.insert=function(t,i){return this.Z(t,void 0,i)},X.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return i.P},X.prototype.find=function(t,i){t=this.ot(t,i);return new T(t,this.S,this)},X.prototype.forEach=function(t){for(var i=0,r=this.H;r!==this.S;)t(r.P,i++,this),r=r.O},X.prototype[Symbol.iterator]=function(){return function(){var i;return r(this,function(t){switch(t.label){case 0:i=this.H,t.label=1;case 1:return i===this.S?[3,3]:[4,i.P];case 2:return t.sent(),i=i.O,[3,1];case 3:return[2]}})}.bind(this)()};var bt,_=X;function X(t){void 0===t&&(t=[]);var i=bt.call(this)||this,r=i;return t.forEach(function(t){r.insert(t)}),i}i(Gt,kt=c),Object.defineProperty(Gt.prototype,"pointer",{get:function(){this.t===this.S&&a();var e=this;return new Proxy([],{get:function(t,i){return"0"===i?e.t.P:"1"===i?e.t.k:void 0},set:function(t,i,r){if("1"!==i)throw new TypeError("props must be 1");return e.t.k=r,!0}})},enumerable:!1,configurable:!0}),Gt.prototype.copy=function(){return new Gt(this.t,this.S,this.container,this.iteratorType)};var kt,I=Gt;function Gt(t,i,r,e){t=kt.call(this,t,i,e)||this;return t.container=r,t}i(A,Ot=e),A.prototype.begin=function(){return new I(this.H,this.S,this)},A.prototype.end=function(){return new I(this.S,this.S,this)},A.prototype.rBegin=function(){return new I(this.g,this.S,this,1)},A.prototype.rEnd=function(){return new I(this.S,this.S,this,1)},A.prototype.front=function(){if(0!==this.i)return[this.H.P,this.H.k]},A.prototype.back=function(){if(0!==this.i)return[this.g.P,this.g.k]},A.prototype.setElement=function(t,i,r){return this.Z(t,i,r)},A.prototype.getElementByKey=function(t,i){return(i=void 0===i?wt(t):i)?void 0!==(i=t[this.HASH_TAG])?this.ct[i].k:void 0:(i=this.vt[t])?i.k:void 0},A.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.O;return[i.P,i.k]},A.prototype.find=function(t,i){t=this.ot(t,i);return new I(t,this.S,this)},A.prototype.forEach=function(t){for(var i=0,r=this.H;r!==this.S;)t([r.P,r.k],i++,this),r=r.O},A.prototype[Symbol.iterator]=function(){return function(){var i;return r(this,function(t){switch(t.label){case 0:i=this.H,t.label=1;case 1:return i===this.S?[3,3]:[4,[i.P,i.k]];case 2:return t.sent(),i=i.O,[3,1];case 3:return[2]}})}.bind(this)()};var Ot,c=A;function A(t){void 0===t&&(t=[]);var i=Ot.call(this)||this,r=i;return t.forEach(function(t){r.setElement(t[0],t[1])}),i}t.Deque=W,t.HashMap=c,t.HashSet=_,t.LinkList=nt,t.OrderedMap=at,t.OrderedSet=dt,t.PriorityQueue=n,t.Queue=K,t.Stack=C,t.Vector=it,Object.defineProperty(t,"dt",{value:!0})});
    +!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t="undefined"!=typeof globalThis?globalThis:t||self).sdsl={})}(this,function(t){"use strict";var A=function(t,i){return(A=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(t,i){t.__proto__=i}:function(t,i){for(var r in i)Object.prototype.hasOwnProperty.call(i,r)&&(t[r]=i[r])}))(t,i)};function i(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function r(){this.constructor=t}A(t,i),t.prototype=null===i?Object.create(i):(r.prototype=i.prototype,new r)}function s(e,n){var s,o,h,u={label:0,sent:function(){if(1&h[0])throw h[1];return h[1]},trys:[],ops:[]},f={next:t(0),throw:t(1),return:t(2)};return"function"==typeof Symbol&&(f[Symbol.iterator]=function(){return this}),f;function t(r){return function(t){var i=[r,t];if(s)throw new TypeError("Generator is already executing.");for(;u=f&&i[f=0]?0:u;)try{if(s=1,o&&(h=2&i[0]?o.return:i[0]?o.throw||((h=o.return)&&h.call(o),0):o.next)&&!(h=h.call(o,i[1])).done)return h;switch(o=0,(i=h?[2&i[0],h.value]:i)[0]){case 0:case 1:h=i;break;case 4:return u.label++,{value:i[1],done:!1};case 5:u.label++,o=i[1],i=[0];continue;case 7:i=u.ops.pop(),u.trys.pop();continue;default:if(!(h=0<(h=u.trys).length&&h[h.length-1])&&(6===i[0]||2===i[0])){u=0;continue}if(3===i[0]&&(!h||i[1]>h[0]&&i[1]=i&&4096>1,e=this.l[r];if(this.v(e,i)<=0)break;this.l[t]=e,t=r}this.l[t]=i},f.prototype._=function(t,i){for(var r=this.l[t];t>1)),t},f.prototype.top=function(){return this.l[0]},f.prototype.find=function(t){return 0<=this.l.indexOf(t)},f.prototype.remove=function(t){t=this.l.indexOf(t);return!(t<0||(0===t?this.pop():t===this.i-1?(this.l.pop(),--this.i):(this.l.splice(t,1,this.l.pop()),--this.i,this.p(t),this._(t,this.i>>1)),0))},f.prototype.updateItem=function(t){t=this.l.indexOf(t);return!(t<0||(this.p(t),this._(t,this.i>>1),0))},f.prototype.toArray=function(){return u([],h(this.l),!1)};var U,e=f;function f(t,i,r){void 0===t&&(t=[]),void 0===i&&(i=function(t,i){return i>1),o=n.i-1>>1;0<=o;--o)n._(o,s);return n}i(z,J=q);var J,p=z;function z(){return null!==J&&J.apply(this,arguments)||this}function c(){throw new RangeError("Iterator access denied!")}i(Z,W=r),Object.defineProperty(Z.prototype,"pointer",{get:function(){return this.container.getElementByPos(this.t)},set:function(t){this.container.setElementByPos(this.t,t)},enumerable:!1,configurable:!0});var W,Y=Z;function Z(t,i){i=W.call(this,i)||this;return i.t=t,0===i.iteratorType?(i.pre=function(){return 0===this.t&&c(),--this.t,this},i.next=function(){return this.t===this.container.size()&&c(),this.t+=1,this}):(i.pre=function(){return this.t===this.container.size()-1&&c(),this.t+=1,this},i.next=function(){return-1===this.t&&c(),--this.t,this}),i}i(Q,$=Y),Q.prototype.copy=function(){return new Q(this.t,this.container,this.iteratorType)};var $,a=Q;function Q(t,i,r){t=$.call(this,t,r)||this;return t.container=i,t}i(l,tt=p),l.prototype.clear=function(){this.i=0,this.I.length=0},l.prototype.begin=function(){return new a(0,this)},l.prototype.end=function(){return new a(this.i,this)},l.prototype.rBegin=function(){return new a(this.i-1,this,1)},l.prototype.rEnd=function(){return new a(-1,this,1)},l.prototype.front=function(){return this.I[0]},l.prototype.back=function(){return this.I[this.i-1]},l.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;return this.I[t]},l.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;return this.I.splice(t,1),--this.i,this.i},l.prototype.eraseElementByValue=function(t){for(var i=0,r=0;rthis.i-1)throw new RangeError;this.I[t]=i},l.prototype.insert=function(t,i,r){var e;if(void 0===r&&(r=1),t<0||t>this.i)throw new RangeError;return(e=this.I).splice.apply(e,u([t,0],h(new Array(r).fill(i)),!1)),this.i+=r,this.i},l.prototype.find=function(t){for(var i=0;i=t.length?void 0:t)&&t[e++],done:!t}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")}(this.I)];case 1:return t.sent(),[2]}})};var tt,it=l;function l(t,i){void 0===t&&(t=[]),void 0===i&&(i=!0);var r,e=tt.call(this)||this;return Array.isArray(t)?(e.I=i?u([],h(t),!1):t,e.i=t.length):(e.I=[],r=e,t.forEach(function(t){r.pushBack(t)})),e}i(v,rt=r),Object.defineProperty(v.prototype,"pointer",{get:function(){return this.t===this.O&&c(),this.t.k},set:function(t){this.t===this.O&&c(),this.t.k=t},enumerable:!1,configurable:!0}),v.prototype.copy=function(){return new v(this.t,this.O,this.container,this.iteratorType)};var rt,y=v;function v(t,i,r,e){e=rt.call(this,e)||this;return e.t=t,e.O=i,e.container=r,0===e.iteratorType?(e.pre=function(){return this.t.S===this.O&&c(),this.t=this.t.S,this},e.next=function(){return this.t===this.O&&c(),this.t=this.t.L,this}):(e.pre=function(){return this.t.L===this.O&&c(),this.t=this.t.L,this},e.next=function(){return this.t===this.O&&c(),this.t=this.t.S,this}),e}i(O,et=p),O.prototype.M=function(t){var i=t.S,r=t.L;(i.L=r).S=i,t===this.H&&(this.H=r),t===this.g&&(this.g=i),--this.i},O.prototype.A=function(t,i){var r=i.L,t={k:t,S:i,L:r};i.L=t,r.S=t,i===this.O&&(this.H=t),r===this.O&&(this.g=t),this.i+=1},O.prototype.clear=function(){this.i=0,this.H=this.g=this.O.S=this.O.L=this.O},O.prototype.begin=function(){return new y(this.H,this.O,this)},O.prototype.end=function(){return new y(this.O,this.O,this)},O.prototype.rBegin=function(){return new y(this.g,this.O,this,1)},O.prototype.rEnd=function(){return new y(this.O,this.O,this,1)},O.prototype.front=function(){return this.H.k},O.prototype.back=function(){return this.g.k},O.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.L;return i.k},O.prototype.eraseElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.L;return this.M(i),this.i},O.prototype.eraseElementByValue=function(t){for(var i=this.H;i!==this.O;)i.k===t&&this.M(i),i=i.L;return this.i},O.prototype.eraseElementByIterator=function(t){var i=t.t;return i===this.O&&c(),t=t.next(),this.M(i),t},O.prototype.pushBack=function(t){return this.A(t,this.g),this.i},O.prototype.popBack=function(){var t;if(0!==this.i)return t=this.g.k,this.M(this.g),t},O.prototype.pushFront=function(t){return this.A(t,this.O),this.i},O.prototype.popFront=function(){var t;if(0!==this.i)return t=this.H.k,this.M(this.H),t},O.prototype.setElementByPos=function(t,i){if(t<0||t>this.i-1)throw new RangeError;for(var r=this.H;t--;)r=r.L;r.k=i},O.prototype.insert=function(t,i,r){if(void 0===r&&(r=1),t<0||t>this.i)throw new RangeError;if(!(r<=0))if(0===t)for(;r--;)this.pushFront(i);else if(t===this.i)for(;r--;)this.pushBack(i);else{for(var e=this.H,n=1;n>1||1,e=0;e=this.D&&(i-=this.D),{curNodeBucketIndex:i,curNodePointerIndex:i=(i=(t+1)%this.V-1)<0?this.V-1:i}},P.prototype.clear=function(){this.m=[new Array(this.V)],this.D=1,this.u=this.C=this.i=0,this.T=this.q=this.V>>1},P.prototype.begin=function(){return new d(0,this)},P.prototype.end=function(){return new d(this.i,this)},P.prototype.rBegin=function(){return new d(this.i-1,this,1)},P.prototype.rEnd=function(){return new d(-1,this,1)},P.prototype.front=function(){if(0!==this.i)return this.m[this.u][this.T]},P.prototype.back=function(){if(0!==this.i)return this.m[this.C][this.q]},P.prototype.pushBack=function(t){return this.i&&(this.qthis.i-1)throw new RangeError;var t=this.R(t),i=t.curNodeBucketIndex,t=t.curNodePointerIndex;return this.m[i][t]},P.prototype.setElementByPos=function(t,i){if(t<0||t>this.i-1)throw new RangeError;var t=this.R(t),r=t.curNodeBucketIndex,t=t.curNodePointerIndex;this.m[r][t]=i},P.prototype.insert=function(t,i,r){void 0===r&&(r=1);var e=this.i;if(t<0||ethis.i-1)throw new RangeError;if(0===t)this.popFront();else{if(t!==this.i-1)for(var i=this.i-1,r=this.R(t),e=r.curNodeBucketIndex,n=r.curNodePointerIndex,s=t;s>1)-(i>>1),r.T=r.q=r.V-e%r.V>>1,r);return t.forEach(function(t){s.pushBack(t)}),r}w.prototype.S=function(){var t=this;if(1===t.F&&t.B.B===t)t=t.N;else if(t.P)for(t=t.P;t.N;)t=t.N;else{for(var i=t.B;i.P===t;)i=(t=i).B;t=i}return t},w.prototype.L=function(){var t=this;if(t.N){for(t=t.N;t.P;)t=t.P;return t}for(var i=t.B;i.N===t;)i=(t=i).B;return t.N!==i?i:t},w.prototype.J=function(){var t=this.B,i=this.N,r=i.P;return t.B===this?t.B=i:t.P===this?t.P=i:t.N=i,i.B=t,(i.P=this).B=i,(this.N=r)&&(r.B=this),i},w.prototype.K=function(){var t=this.B,i=this.P,r=i.N;return t.B===this?t.B=i:t.P===this?t.P=i:t.N=i,i.B=t,(i.N=this).B=i,(this.P=r)&&(r.B=this),i};var pt=w;function w(t,i,r){void 0===r&&(r=1),this.P=void 0,this.N=void 0,this.B=void 0,this.G=t,this.k=i,this.F=r}i(g,B=pt),g.prototype.J=function(){var t=B.prototype.J.call(this);return this.W(),t.W(),t},g.prototype.K=function(){var t=B.prototype.K.call(this);return this.W(),t.W(),t},g.prototype.W=function(){this.U=1,this.P&&(this.U+=this.P.U),this.N&&(this.U+=this.N.U)};var B,ct=g;function g(){var t=null!==B&&B.apply(this,arguments)||this;return t.U=1,t}i(b,at=q),b.prototype.Z=function(t,i){for(var r=this.O;t;){var e=this.v(t.G,i);if(e<0)t=t.N;else{if(!(0this.i-1)throw new RangeError;t=this.et(t);return this.M(t),this.i},b.prototype.eraseElementByKey=function(t){return 0!==this.i&&(t=this.ht(this.X,t))!==this.O&&(this.M(t),!0)},b.prototype.eraseElementByIterator=function(t){var i=t.t,r=(i===this.O&&c(),void 0===i.N);return 0===t.iteratorType?r&&t.next():r&&void 0!==i.P||t.next(),this.M(i),t},b.prototype.getHeight=function(){return 0===this.i?0:function t(i){return i?Math.max(t(i.P),t(i.N))+1:0}(this.X)};var at,p=b;function b(t,i){void 0===t&&(t=function(t,i){return tthis.i-1)throw new RangeError;return this.et(t).G},k.prototype.find=function(t){t=this.ht(this.X,t);return new m(t,this.O,this)},k.prototype.union=function(t){var i=this;return t.forEach(function(t){i.insert(t)}),this.i},k.prototype[Symbol.iterator]=function(){var i,r,e;return s(this,function(t){switch(t.label){case 0:i=this.i,r=this.et(),e=0,t.label=1;case 1:return ethis.i-1)throw new RangeError;t=this.et(t);return[t.G,t.k]},L.prototype.find=function(t){t=this.ht(this.X,t);return new N(t,this.O,this)},L.prototype.getElementByKey=function(t){return this.ht(this.X,t).k},L.prototype.union=function(t){var i=this;return t.forEach(function(t){i.setElement(t[0],t[1])}),this.i},L.prototype[Symbol.iterator]=function(){var i,r,e,n;return s(this,function(t){switch(t.label){case 0:i=this.i,r=this.et(),e=0,t.label=1;case 1:return ethis.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.L;return this.M(i),this.i};var Et,r=S;function S(){var t=Et.call(this)||this;return t.ut=[],t.ot={},t.HASH_TAG=Symbol("@@HASH_TAG"),Object.setPrototypeOf(t.ot,null),t.O={},t.O.S=t.O.L=t.H=t.g=t.O,t}i(F,kt=p),Object.defineProperty(F.prototype,"pointer",{get:function(){return this.t===this.O&&c(),this.t.G},enumerable:!1,configurable:!0}),F.prototype.copy=function(){return new F(this.t,this.O,this.container,this.iteratorType)};var kt,G=F;function F(t,i,r,e){t=kt.call(this,t,i,e)||this;return t.container=r,t}i(I,Nt=r),I.prototype.begin=function(){return new G(this.H,this.O,this)},I.prototype.end=function(){return new G(this.O,this.O,this)},I.prototype.rBegin=function(){return new G(this.g,this.O,this,1)},I.prototype.rEnd=function(){return new G(this.O,this.O,this,1)},I.prototype.front=function(){return this.H.G},I.prototype.back=function(){return this.g.G},I.prototype.insert=function(t,i){return this.st(t,void 0,i)},I.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.L;return i.G},I.prototype.find=function(t,i){t=this.ft(t,i);return new G(t,this.O,this)},I.prototype.forEach=function(t){for(var i=0,r=this.H;r!==this.O;)t(r.G,i++,this),r=r.L},I.prototype[Symbol.iterator]=function(){var i;return s(this,function(t){switch(t.label){case 0:i=this.H,t.label=1;case 1:return i===this.O?[3,3]:[4,i.G];case 2:return t.sent(),i=i.L,[3,1];case 3:return[2]}})};var Nt,q=I;function I(t){void 0===t&&(t=[]);var i=Nt.call(this)||this,r=i;return t.forEach(function(t){r.insert(t)}),i}i(x,Ht=p),Object.defineProperty(x.prototype,"pointer",{get:function(){this.t===this.O&&c();var e=this;return new Proxy([],{get:function(t,i){return"0"===i?e.t.G:"1"===i?e.t.k:void 0},set:function(t,i,r){if("1"!==i)throw new TypeError("props must be 1");return e.t.k=r,!0}})},enumerable:!1,configurable:!0}),x.prototype.copy=function(){return new x(this.t,this.O,this.container,this.iteratorType)};var Ht,T=x;function x(t,i,r,e){t=Ht.call(this,t,i,e)||this;return t.container=r,t}i(X,Lt=r),X.prototype.begin=function(){return new T(this.H,this.O,this)},X.prototype.end=function(){return new T(this.O,this.O,this)},X.prototype.rBegin=function(){return new T(this.g,this.O,this,1)},X.prototype.rEnd=function(){return new T(this.O,this.O,this,1)},X.prototype.front=function(){if(0!==this.i)return[this.H.G,this.H.k]},X.prototype.back=function(){if(0!==this.i)return[this.g.G,this.g.k]},X.prototype.setElement=function(t,i,r){return this.st(t,i,r)},X.prototype.getElementByKey=function(t,i){return(i=void 0===i?gt(t):i)?void 0!==(i=t[this.HASH_TAG])?this.ut[i].k:void 0:(i=this.ot[t])?i.k:void 0},X.prototype.getElementByPos=function(t){if(t<0||t>this.i-1)throw new RangeError;for(var i=this.H;t--;)i=i.L;return[i.G,i.k]},X.prototype.find=function(t,i){t=this.ft(t,i);return new T(t,this.O,this)},X.prototype.forEach=function(t){for(var i=0,r=this.H;r!==this.O;)t([r.G,r.k],i++,this),r=r.L},X.prototype[Symbol.iterator]=function(){var i;return s(this,function(t){switch(t.label){case 0:i=this.H,t.label=1;case 1:return i===this.O?[3,3]:[4,[i.G,i.k]];case 2:return t.sent(),i=i.L,[3,1];case 3:return[2]}})};var Lt,p=X;function X(t){void 0===t&&(t=[]);var i=Lt.call(this)||this,r=i;return t.forEach(function(t){r.setElement(t[0],t[1])}),i}t.Deque=Y,t.HashMap=p,t.HashSet=q,t.LinkList=nt,t.OrderedMap=yt,t.OrderedSet=Pt,t.PriorityQueue=e,t.Queue=K,t.Stack=M,t.Vector=it,Object.defineProperty(t,"ct",{value:!0})});
     //# sourceMappingURL=js-sdsl.min.js.map
    diff --git a/tools/node_modules/eslint/node_modules/js-sdsl/package.json b/tools/node_modules/eslint/node_modules/js-sdsl/package.json
    index 1c35cd215288e7..2d3c84a4337902 100644
    --- a/tools/node_modules/eslint/node_modules/js-sdsl/package.json
    +++ b/tools/node_modules/eslint/node_modules/js-sdsl/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "js-sdsl",
    -  "version": "4.3.0",
    +  "version": "4.4.0",
       "description": "javascript standard data structure library which benchmark against C++ STL",
       "main": "./dist/cjs/index.js",
       "module": "./dist/esm/index.js",
    diff --git a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js
    index eb07b24d34085f..12e07535f6dd01 100644
    --- a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js
    +++ b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/dist/index.js
    @@ -136,7 +136,7 @@
                     return null;
                 }
                 return {
    -                type: type,
    +                type,
                     text: type
                 };
             };
    @@ -209,19 +209,13 @@
             makeKeyWordRule('readonly'),
             makeKeyWordRule('import'),
             makeKeyWordRule('is'),
    +        makeKeyWordRule('in'),
             numberRule,
             identifierRule,
             stringValueRule
         ];
         const breakingWhitespaceRegex = /^\s*\n\s*/;
         class Lexer {
    -        constructor(text, previous, current, next) {
    -            this.text = '';
    -            this.text = text;
    -            this.previous = previous;
    -            this.current = current;
    -            this.next = next;
    -        }
             static create(text) {
                 const current = this.read(text);
                 text = current.text;
    @@ -229,6 +223,13 @@
                 text = next.text;
                 return new Lexer(text, undefined, current.token, next.token);
             }
    +        constructor(text, previous, current, next) {
    +            this.text = '';
    +            this.text = text;
    +            this.previous = previous;
    +            this.current = current;
    +            this.next = next;
    +        }
             static read(text, startOfLine = false) {
                 startOfLine = startOfLine || breakingWhitespaceRegex.test(text);
                 text = text.trim();
    @@ -255,7 +256,10 @@
             if (result === undefined) {
                 throw new Error('Unexpected undefined');
             }
    -        if (result.type === 'JsdocTypeKeyValue' || result.type === 'JsdocTypeParameterList' || result.type === 'JsdocTypeProperty' || result.type === 'JsdocTypeReadonlyProperty') {
    +        if (result.type === 'JsdocTypeKeyValue' || result.type === 'JsdocTypeParameterList' ||
    +            result.type === 'JsdocTypeProperty' || result.type === 'JsdocTypeReadonlyProperty' ||
    +            result.type === 'JsdocTypeObjectField' || result.type === 'JsdocTypeJsdocObjectField' ||
    +            result.type === 'JsdocTypeIndexSignature' || result.type === 'JsdocTypeMappedType') {
                 throw new UnexpectedTypeError(result);
             }
             return result;
    @@ -273,13 +277,8 @@
             return assertPlainKeyValueResult(result);
         }
         function assertPlainKeyValueResult(result) {
    -        if (!isPlainKeyValue(result)) {
    -            if (result.type === 'JsdocTypeKeyValue') {
    -                throw new UnexpectedTypeError(result, 'Expecting no left side expression.');
    -            }
    -            else {
    -                throw new UnexpectedTypeError(result);
    -            }
    +        if (result.type !== 'JsdocTypeKeyValue') {
    +            throw new UnexpectedTypeError(result);
             }
             return result;
         }
    @@ -296,8 +295,8 @@
             }
             return result;
         }
    -    function isPlainKeyValue(result) {
    -        return result.type === 'JsdocTypeKeyValue' && !result.meta.hasLeftSideExpression;
    +    function isSquaredProperty(result) {
    +        return result.type === 'JsdocTypeIndexSignature' || result.type === 'JsdocTypeMappedType';
         }
     
         // higher precedence = higher importance
    @@ -318,15 +317,15 @@
             Precedence[Precedence["KEY_OF_TYPE_OF"] = 12] = "KEY_OF_TYPE_OF";
             Precedence[Precedence["FUNCTION"] = 13] = "FUNCTION";
             Precedence[Precedence["ARROW"] = 14] = "ARROW";
    -        Precedence[Precedence["GENERIC"] = 15] = "GENERIC";
    -        Precedence[Precedence["NAME_PATH"] = 16] = "NAME_PATH";
    -        Precedence[Precedence["ARRAY_BRACKETS"] = 17] = "ARRAY_BRACKETS";
    +        Precedence[Precedence["ARRAY_BRACKETS"] = 15] = "ARRAY_BRACKETS";
    +        Precedence[Precedence["GENERIC"] = 16] = "GENERIC";
    +        Precedence[Precedence["NAME_PATH"] = 17] = "NAME_PATH";
             Precedence[Precedence["PARENTHESIS"] = 18] = "PARENTHESIS";
             Precedence[Precedence["SPECIAL_TYPES"] = 19] = "SPECIAL_TYPES";
         })(Precedence || (Precedence = {}));
     
         class Parser {
    -        constructor(grammar, textOrLexer, parent) {
    +        constructor(grammar, textOrLexer, baseParser) {
                 this.grammar = grammar;
                 if (typeof textOrLexer === 'string') {
                     this._lexer = Lexer.create(textOrLexer);
    @@ -334,7 +333,7 @@
                 else {
                     this._lexer = textOrLexer;
                 }
    -            this.parent = parent;
    +            this.baseParser = baseParser;
             }
             get lexer() {
                 return this._lexer;
    @@ -528,7 +527,7 @@
                 if (result.type === 'JsdocTypeParameterList') {
                     return result;
                 }
    -            else if (result.type === 'JsdocTypeKeyValue' && isPlainKeyValue(result)) {
    +            else if (result.type === 'JsdocTypeKeyValue') {
                     return {
                         type: 'JsdocTypeParameterList',
                         elements: [result]
    @@ -689,7 +688,7 @@
             optionalParslet
         ];
     
    -    function createNamePathParslet({ allowJsdocNamePaths, pathGrammar }) {
    +    function createNamePathParslet({ allowSquareBracketsOnAnyType, allowJsdocNamePaths, pathGrammar }) {
             return function namePathParslet(parser, precedence, left) {
                 if ((left == null) || precedence >= Precedence.NAME_PATH) {
                     return null;
    @@ -697,7 +696,7 @@
                 const type = parser.lexer.current.type;
                 const next = parser.lexer.next.type;
                 const accept = (type === '.' && next !== '<') ||
    -                (type === '[' && left.type === 'JsdocTypeName') ||
    +                (type === '[' && (allowSquareBracketsOnAnyType || left.type === 'JsdocTypeName')) ||
                     (allowJsdocNamePaths && (type === '~' || type === '#'));
                 if (!accept) {
                     return null;
    @@ -772,7 +771,7 @@
                     type: 'JsdocTypeNamePath',
                     left: assertRootResult(left),
                     right,
    -                pathType: pathType
    +                pathType
                 };
             };
         }
    @@ -864,6 +863,7 @@
             stringValueParslet,
             numberParslet,
             createNamePathParslet({
    +            allowSquareBracketsOnAnyType: false,
                 allowJsdocNamePaths: true,
                 pathGrammar: null
             })
    @@ -932,7 +932,7 @@
                     else {
                         result.parameters = getParameters(value);
                         for (const p of result.parameters) {
    -                        if (p.type === 'JsdocTypeKeyValue' && (!allowNamedParameters.includes(p.key) || p.meta.quote !== undefined)) {
    +                        if (p.type === 'JsdocTypeKeyValue' && (!allowNamedParameters.includes(p.key))) {
                                 throw new Error(`only allowed named parameters are ${allowNamedParameters.join(', ')} but got ${p.type}`);
                             }
                         }
    @@ -1054,72 +1054,6 @@
             }
         });
     
    -    function createKeyValueParslet({ allowKeyTypes, allowReadonly, allowOptional, allowVariadic }) {
    -        return composeParslet({
    -            name: 'keyValueParslet',
    -            precedence: Precedence.KEY_VALUE,
    -            accept: type => type === ':',
    -            parseInfix: (parser, left) => {
    -                var _a;
    -                let optional = false;
    -                let readonlyProperty = false;
    -                let variadic = false;
    -                if (allowOptional && left.type === 'JsdocTypeNullable') {
    -                    optional = true;
    -                    left = left.element;
    -                }
    -                if (allowReadonly && left.type === 'JsdocTypeReadonlyProperty') {
    -                    readonlyProperty = true;
    -                    left = left.element;
    -                }
    -                if (allowVariadic && left.type === 'JsdocTypeVariadic' && left.element !== undefined) {
    -                    variadic = true;
    -                    left = left.element;
    -                }
    -                // object parslet uses a special grammar and for the value we want to switch back to the parent
    -                const parentParser = (_a = parser.parent) !== null && _a !== void 0 ? _a : parser;
    -                parentParser.acceptLexerState(parser);
    -                if (left.type === 'JsdocTypeNumber' || left.type === 'JsdocTypeName' || left.type === 'JsdocTypeStringValue') {
    -                    parentParser.consume(':');
    -                    let quote;
    -                    if (left.type === 'JsdocTypeStringValue') {
    -                        quote = left.meta.quote;
    -                    }
    -                    const right = parentParser.parseType(Precedence.KEY_VALUE);
    -                    parser.acceptLexerState(parentParser);
    -                    return {
    -                        type: 'JsdocTypeKeyValue',
    -                        key: left.value.toString(),
    -                        right,
    -                        optional,
    -                        readonly: readonlyProperty,
    -                        variadic,
    -                        meta: {
    -                            quote,
    -                            hasLeftSideExpression: false
    -                        }
    -                    };
    -                }
    -                else {
    -                    if (!allowKeyTypes) {
    -                        throw new UnexpectedTypeError(left);
    -                    }
    -                    parentParser.consume(':');
    -                    const right = parentParser.parseType(Precedence.KEY_VALUE);
    -                    parser.acceptLexerState(parentParser);
    -                    return {
    -                        type: 'JsdocTypeKeyValue',
    -                        left: assertRootResult(left),
    -                        right: right,
    -                        meta: {
    -                            hasLeftSideExpression: true
    -                        }
    -                    };
    -                }
    -            }
    -        });
    -    }
    -
         function createObjectParslet({ objectFieldGrammar, allowKeyTypes }) {
             return composeParslet({
                 name: 'objectParslet',
    @@ -1154,19 +1088,17 @@
                                     quote = field.meta.quote;
                                 }
                                 result.elements.push({
    -                                type: 'JsdocTypeKeyValue',
    +                                type: 'JsdocTypeObjectField',
                                     key: field.value.toString(),
                                     right: undefined,
    -                                optional: optional,
    +                                optional,
                                     readonly: false,
    -                                variadic: false,
                                     meta: {
    -                                    quote,
    -                                    hasLeftSideExpression: false
    +                                    quote
                                     }
                                 });
                             }
    -                        else if (field.type === 'JsdocTypeKeyValue') {
    +                        else if (field.type === 'JsdocTypeObjectField' || field.type === 'JsdocTypeJsdocObjectField') {
                                 result.elements.push(field);
                             }
                             else {
    @@ -1199,6 +1131,98 @@
             });
         }
     
    +    function createObjectFieldParslet({ allowSquaredProperties, allowKeyTypes, allowReadonly, allowOptional }) {
    +        return composeParslet({
    +            name: 'objectFieldParslet',
    +            precedence: Precedence.KEY_VALUE,
    +            accept: type => type === ':',
    +            parseInfix: (parser, left) => {
    +                var _a;
    +                let optional = false;
    +                let readonlyProperty = false;
    +                if (allowOptional && left.type === 'JsdocTypeNullable') {
    +                    optional = true;
    +                    left = left.element;
    +                }
    +                if (allowReadonly && left.type === 'JsdocTypeReadonlyProperty') {
    +                    readonlyProperty = true;
    +                    left = left.element;
    +                }
    +                // object parslet uses a special grammar and for the value we want to switch back to the parent
    +                const parentParser = (_a = parser.baseParser) !== null && _a !== void 0 ? _a : parser;
    +                parentParser.acceptLexerState(parser);
    +                if (left.type === 'JsdocTypeNumber' || left.type === 'JsdocTypeName' || left.type === 'JsdocTypeStringValue' ||
    +                    isSquaredProperty(left)) {
    +                    if (isSquaredProperty(left) && !allowSquaredProperties) {
    +                        throw new UnexpectedTypeError(left);
    +                    }
    +                    parentParser.consume(':');
    +                    let quote;
    +                    if (left.type === 'JsdocTypeStringValue') {
    +                        quote = left.meta.quote;
    +                    }
    +                    const right = parentParser.parseType(Precedence.KEY_VALUE);
    +                    parser.acceptLexerState(parentParser);
    +                    return {
    +                        type: 'JsdocTypeObjectField',
    +                        key: isSquaredProperty(left) ? left : left.value.toString(),
    +                        right,
    +                        optional,
    +                        readonly: readonlyProperty,
    +                        meta: {
    +                            quote
    +                        }
    +                    };
    +                }
    +                else {
    +                    if (!allowKeyTypes) {
    +                        throw new UnexpectedTypeError(left);
    +                    }
    +                    parentParser.consume(':');
    +                    const right = parentParser.parseType(Precedence.KEY_VALUE);
    +                    parser.acceptLexerState(parentParser);
    +                    return {
    +                        type: 'JsdocTypeJsdocObjectField',
    +                        left: assertRootResult(left),
    +                        right
    +                    };
    +                }
    +            }
    +        });
    +    }
    +
    +    function createKeyValueParslet({ allowOptional, allowVariadic }) {
    +        return composeParslet({
    +            name: 'keyValueParslet',
    +            precedence: Precedence.KEY_VALUE,
    +            accept: type => type === ':',
    +            parseInfix: (parser, left) => {
    +                let optional = false;
    +                let variadic = false;
    +                if (allowOptional && left.type === 'JsdocTypeNullable') {
    +                    optional = true;
    +                    left = left.element;
    +                }
    +                if (allowVariadic && left.type === 'JsdocTypeVariadic' && left.element !== undefined) {
    +                    variadic = true;
    +                    left = left.element;
    +                }
    +                if (left.type !== 'JsdocTypeName') {
    +                    throw new UnexpectedTypeError(left);
    +                }
    +                parser.consume(':');
    +                const right = parser.parseType(Precedence.KEY_VALUE);
    +                return {
    +                    type: 'JsdocTypeKeyValue',
    +                    key: left.value,
    +                    right,
    +                    optional,
    +                    variadic
    +                };
    +            }
    +        });
    +    }
    +
         const jsdocBaseGrammar = [
             ...baseGrammar,
             createFunctionParslet({
    @@ -1222,14 +1246,9 @@
             symbolParslet,
             arrayBracketsParslet,
             createNamePathParslet({
    +            allowSquareBracketsOnAnyType: false,
                 allowJsdocNamePaths: true,
                 pathGrammar
    -        }),
    -        createKeyValueParslet({
    -            allowKeyTypes: true,
    -            allowOptional: false,
    -            allowReadonly: false,
    -            allowVariadic: false
             })
         ];
         const jsdocGrammar = [
    @@ -1239,11 +1258,21 @@
                 // we leave out the object type deliberately
                 objectFieldGrammar: [
                     createNameParslet({
    -                    allowedAdditionalTokens: ['module']
    +                    allowedAdditionalTokens: ['module', 'in']
    +                }),
    +                createObjectFieldParslet({
    +                    allowSquaredProperties: false,
    +                    allowKeyTypes: true,
    +                    allowOptional: false,
    +                    allowReadonly: false
                     }),
                     ...jsdocBaseGrammar
                 ],
                 allowKeyTypes: true
    +        }),
    +        createKeyValueParslet({
    +            allowOptional: true,
    +            allowVariadic: true
             })
         ];
     
    @@ -1261,17 +1290,17 @@
     
         const objectFieldGrammar$1 = [
             createNameParslet({
    -            allowedAdditionalTokens: ['module', 'keyof', 'event', 'external']
    +            allowedAdditionalTokens: ['module', 'keyof', 'event', 'external', 'in']
             }),
             nullableParslet,
             optionalParslet,
             stringValueParslet,
             numberParslet,
    -        createKeyValueParslet({
    +        createObjectFieldParslet({
    +            allowSquaredProperties: false,
                 allowKeyTypes: false,
                 allowOptional: false,
    -            allowReadonly: false,
    -            allowVariadic: false
    +            allowReadonly: false
             })
         ];
         const closureGrammar = [
    @@ -1281,7 +1310,7 @@
                 objectFieldGrammar: objectFieldGrammar$1
             }),
             createNameParslet({
    -            allowedAdditionalTokens: ['event', 'external']
    +            allowedAdditionalTokens: ['event', 'external', 'in']
             }),
             typeOfParslet,
             createFunctionParslet({
    @@ -1303,13 +1332,12 @@
                 pathGrammar
             }),
             createNamePathParslet({
    +            allowSquareBracketsOnAnyType: false,
                 allowJsdocNamePaths: true,
                 pathGrammar
             }),
             createKeyValueParslet({
    -            allowKeyTypes: false,
                 allowOptional: false,
    -            allowReadonly: false,
                 allowVariadic: false
             }),
             symbolParslet
    @@ -1453,21 +1481,63 @@
             }
         });
     
    +    const objectSquaredPropertyParslet = composeParslet({
    +        name: 'objectSquareBracketPropertyParslet',
    +        accept: type => type === '[',
    +        parsePrefix: parser => {
    +            if (parser.baseParser === undefined) {
    +                throw new Error('Only allowed inside object grammar');
    +            }
    +            parser.consume('[');
    +            const key = parser.lexer.current.text;
    +            parser.consume('Identifier');
    +            let result;
    +            if (parser.consume(':')) {
    +                const parentParser = parser.baseParser;
    +                parentParser.acceptLexerState(parser);
    +                result = {
    +                    type: 'JsdocTypeIndexSignature',
    +                    key,
    +                    right: parentParser.parseType(Precedence.ARRAY_BRACKETS)
    +                };
    +                parser.acceptLexerState(parentParser);
    +            }
    +            else if (parser.consume('in')) {
    +                const parentParser = parser.baseParser;
    +                parentParser.acceptLexerState(parser);
    +                result = {
    +                    type: 'JsdocTypeMappedType',
    +                    key,
    +                    right: parentParser.parseType(Precedence.ARRAY_BRACKETS)
    +                };
    +                parser.acceptLexerState(parentParser);
    +            }
    +            else {
    +                throw new Error('Missing \':\' or \'in\' inside square bracketed property.');
    +            }
    +            if (!parser.consume(']')) {
    +                throw new Error('Unterminated square brackets');
    +            }
    +            return result;
    +        }
    +    });
    +
         const objectFieldGrammar = [
             readonlyPropertyParslet,
             createNameParslet({
    -            allowedAdditionalTokens: ['module', 'event', 'keyof', 'event', 'external']
    +            allowedAdditionalTokens: ['module', 'event', 'keyof', 'event', 'external', 'in']
             }),
             nullableParslet,
             optionalParslet,
             stringValueParslet,
             numberParslet,
    -        createKeyValueParslet({
    +        createObjectFieldParslet({
    +            allowSquaredProperties: true,
                 allowKeyTypes: false,
                 allowOptional: true,
    -            allowReadonly: true,
    -            allowVariadic: false
    -        })
    +            allowReadonly: true
    +        }),
    +        objectSquaredPropertyParslet
         ];
         const typescriptGrammar = [
             ...baseGrammar,
    @@ -1493,7 +1563,7 @@
                 allowPostfix: false
             }),
             createNameParslet({
    -            allowedAdditionalTokens: ['event', 'external']
    +            allowedAdditionalTokens: ['event', 'external', 'in']
             }),
             createSpecialNamePathParslet({
                 allowedTypes: ['module'],
    @@ -1502,17 +1572,16 @@
             arrayBracketsParslet,
             arrowFunctionParslet,
             createNamePathParslet({
    +            allowSquareBracketsOnAnyType: true,
                 allowJsdocNamePaths: false,
                 pathGrammar
             }),
    -        createKeyValueParslet({
    -            allowKeyTypes: false,
    -            allowOptional: true,
    -            allowReadonly: true,
    -            allowVariadic: true
    -        }),
             intersectionParslet,
    -        predicateParslet
    +        predicateParslet,
    +        createKeyValueParslet({
    +            allowVariadic: true,
    +            allowOptional: true
    +        })
         ];
     
         /**
    @@ -1565,7 +1634,7 @@
                 params: []
             };
             for (const param of source.parameters) {
    -            if (param.type === 'JsdocTypeKeyValue' && param.meta.quote === undefined) {
    +            if (param.type === 'JsdocTypeKeyValue') {
                     if (param.key === 'this') {
                         result.this = param.right;
                     }
    @@ -1660,28 +1729,43 @@
                     }
                 },
                 JsdocTypeImport: (result, transform) => `import(${transform(result.element)})`,
    -            JsdocTypeKeyValue: (result, transform) => {
    -                if (isPlainKeyValue(result)) {
    -                    let text = '';
    -                    if (result.readonly) {
    -                        text += 'readonly ';
    -                    }
    +            JsdocTypeObjectField: (result, transform) => {
    +                let text = '';
    +                if (result.readonly) {
    +                    text += 'readonly ';
    +                }
    +                if (typeof result.key === 'string') {
                         text += quote(result.key, result.meta.quote);
    -                    if (result.optional) {
    -                        text += '?';
    -                    }
    -                    if (result.variadic) {
    -                        text = '...' + text;
    -                    }
    -                    if (result.right === undefined) {
    -                        return text;
    -                    }
    -                    else {
    -                        return text + `: ${transform(result.right)}`;
    -                    }
                     }
                     else {
    -                    return `${transform(result.left)}: ${transform(result.right)}`;
    +                    text += transform(result.key);
    +                }
    +                if (result.optional) {
    +                    text += '?';
    +                }
    +                if (result.right === undefined) {
    +                    return text;
    +                }
    +                else {
    +                    return text + `: ${transform(result.right)}`;
    +                }
    +            },
    +            JsdocTypeJsdocObjectField: (result, transform) => {
    +                return `${transform(result.left)}: ${transform(result.right)}`;
    +            },
    +            JsdocTypeKeyValue: (result, transform) => {
    +                let text = result.key;
    +                if (result.optional) {
    +                    text += '?';
    +                }
    +                if (result.variadic) {
    +                    text = '...' + text;
    +                }
    +                if (result.right === undefined) {
    +                    return text;
    +                }
    +                else {
    +                    return text + `: ${transform(result.right)}`;
                     }
                 },
                 JsdocTypeSpecialNamePath: result => `${result.specialType}:${quote(result.value, result.meta.quote)}`,
    @@ -1698,7 +1782,9 @@
                 JsdocTypeUnknown: () => '?',
                 JsdocTypeIntersection: (result, transform) => result.elements.map(transform).join(' & '),
                 JsdocTypeProperty: result => quote(result.value, result.meta.quote),
    -            JsdocTypePredicate: (result, transform) => `${transform(result.left)} is ${transform(result.right)}`
    +            JsdocTypePredicate: (result, transform) => `${transform(result.left)} is ${transform(result.right)}`,
    +            JsdocTypeIndexSignature: (result, transform) => `[${result.key}: ${transform(result.right)}]`,
    +            JsdocTypeMappedType: (result, transform) => `[${result.key} in ${transform(result.right)}]`
             };
         }
         const storedStringifyRules = stringifyRules();
    @@ -1832,7 +1918,7 @@
                     fields: []
                 };
                 for (const field of result.elements) {
    -                if (field.type !== 'JsdocTypeKeyValue') {
    +                if (field.type !== 'JsdocTypeObjectField' && field.type !== 'JsdocTypeJsdocObjectField') {
                         transformed.fields.push({
                             type: 'FieldType',
                             key: transform(field),
    @@ -1845,25 +1931,31 @@
                 }
                 return transformed;
             },
    +        JsdocTypeObjectField: (result, transform) => {
    +            if (typeof result.key !== 'string') {
    +                throw new Error('Index signatures and mapped types are not supported');
    +            }
    +            return {
    +                type: 'FieldType',
    +                key: makeName(quote(result.key, result.meta.quote)),
    +                value: result.right === undefined ? undefined : transform(result.right)
    +            };
    +        },
    +        JsdocTypeJsdocObjectField: (result, transform) => ({
    +            type: 'FieldType',
    +            key: transform(result.left),
    +            value: transform(result.right)
    +        }),
             JsdocTypeUnion: (result, transform) => ({
                 type: 'TypeUnion',
                 elements: result.elements.map(e => transform(e))
             }),
             JsdocTypeKeyValue: (result, transform) => {
    -            if (isPlainKeyValue(result)) {
    -                return {
    -                    type: 'FieldType',
    -                    key: makeName(quote(result.key, result.meta.quote)),
    -                    value: result.right === undefined ? undefined : transform(result.right)
    -                };
    -            }
    -            else {
    -                return {
    -                    type: 'FieldType',
    -                    key: transform(result.left),
    -                    value: transform(result.right)
    -                };
    -            }
    +            return {
    +                type: 'FieldType',
    +                key: makeName(result.key),
    +                value: result.right === undefined ? undefined : transform(result.right)
    +            };
             },
             JsdocTypeNamePath: (result, transform) => {
                 const leftResult = transform(result.left);
    @@ -1902,6 +1994,8 @@
                 return makeName(`${result.value}(${value})`);
             },
             JsdocTypeParenthesis: (result, transform) => transform(assertRootResult(result.element)),
    +        JsdocTypeMappedType: notAvailableTransform,
    +        JsdocTypeIndexSignature: notAvailableTransform,
             JsdocTypeImport: notAvailableTransform,
             JsdocTypeKeyof: notAvailableTransform,
             JsdocTypeTuple: notAvailableTransform,
    @@ -2072,14 +2166,14 @@
                 }
                 return transformed;
             },
    -        JsdocTypeKeyValue: (result, transform) => {
    -            if (!isPlainKeyValue(result)) {
    -                throw new Error('Keys may not be typed in jsdoctypeparser.');
    +        JsdocTypeObjectField: (result, transform) => {
    +            if (typeof result.key !== 'string') {
    +                throw new Error('Index signatures and mapped types are not supported');
                 }
                 if (result.right === undefined) {
                     return {
                         type: 'RECORD_ENTRY',
    -                    key: result.key.toString(),
    +                    key: result.key,
                         quoteStyle: getQuoteStyle(result.meta.quote),
                         value: null,
                         readonly: false
    @@ -2103,10 +2197,41 @@
                     readonly: false
                 };
             },
    +        JsdocTypeJsdocObjectField: () => {
    +            throw new Error('Keys may not be typed in jsdoctypeparser.');
    +        },
    +        JsdocTypeKeyValue: (result, transform) => {
    +            if (result.right === undefined) {
    +                return {
    +                    type: 'RECORD_ENTRY',
    +                    key: result.key,
    +                    quoteStyle: 'none',
    +                    value: null,
    +                    readonly: false
    +                };
    +            }
    +            let right = transform(result.right);
    +            if (result.optional) {
    +                right = {
    +                    type: 'OPTIONAL',
    +                    value: right,
    +                    meta: {
    +                        syntax: 'SUFFIX_KEY_QUESTION_MARK'
    +                    }
    +                };
    +            }
    +            return {
    +                type: 'RECORD_ENTRY',
    +                key: result.key,
    +                quoteStyle: 'none',
    +                value: right,
    +                readonly: false
    +            };
    +        },
             JsdocTypeObject: (result, transform) => {
                 const entries = [];
                 for (const field of result.elements) {
    -                if (field.type === 'JsdocTypeKeyValue') {
    +                if (field.type === 'JsdocTypeObjectField' || field.type === 'JsdocTypeJsdocObjectField') {
                         entries.push(transform(field));
                     }
                 }
    @@ -2182,7 +2307,9 @@
             }),
             JsdocTypeSymbol: notAvailableTransform,
             JsdocTypeProperty: notAvailableTransform,
    -        JsdocTypePredicate: notAvailableTransform
    +        JsdocTypePredicate: notAvailableTransform,
    +        JsdocTypeMappedType: notAvailableTransform,
    +        JsdocTypeIndexSignature: notAvailableTransform
         };
         function jtpTransform(result) {
             return transform(jtpRules, result);
    @@ -2248,26 +2375,27 @@
                     }
                 }),
                 JsdocTypeSpecialNamePath: result => result,
    +            JsdocTypeObjectField: (result, transform) => ({
    +                type: 'JsdocTypeObjectField',
    +                key: result.key,
    +                right: result.right === undefined ? undefined : transform(result.right),
    +                optional: result.optional,
    +                readonly: result.readonly,
    +                meta: result.meta
    +            }),
    +            JsdocTypeJsdocObjectField: (result, transform) => ({
    +                type: 'JsdocTypeJsdocObjectField',
    +                left: transform(result.left),
    +                right: transform(result.right)
    +            }),
                 JsdocTypeKeyValue: (result, transform) => {
    -                if (isPlainKeyValue(result)) {
    -                    return {
    -                        type: 'JsdocTypeKeyValue',
    -                        key: result.key,
    -                        right: result.right === undefined ? undefined : transform(result.right),
    -                        optional: result.optional,
    -                        readonly: result.readonly,
    -                        variadic: result.variadic,
    -                        meta: result.meta
    -                    };
    -                }
    -                else {
    -                    return {
    -                        type: 'JsdocTypeKeyValue',
    -                        left: transform(result.left),
    -                        right: transform(result.right),
    -                        meta: result.meta
    -                    };
    -                }
    +                return {
    +                    type: 'JsdocTypeKeyValue',
    +                    key: result.key,
    +                    right: result.right === undefined ? undefined : transform(result.right),
    +                    optional: result.optional,
    +                    variadic: result.variadic
    +                };
                 },
                 JsdocTypeImport: (result, transform) => ({
                     type: 'JsdocTypeImport',
    @@ -2320,6 +2448,16 @@
                     type: 'JsdocTypePredicate',
                     left: transform(result.left),
                     right: transform(result.right)
    +            }),
    +            JsdocTypeIndexSignature: (result, transform) => ({
    +                type: 'JsdocTypeIndexSignature',
    +                key: result.key,
    +                right: transform(result.right)
    +            }),
    +            JsdocTypeMappedType: (result, transform) => ({
    +                type: 'JsdocTypeMappedType',
    +                key: result.key,
    +                right: transform(result.right)
                 })
             };
         }
    @@ -2329,9 +2467,11 @@
             JsdocTypeFunction: ['parameters', 'returnType'],
             JsdocTypeGeneric: ['left', 'elements'],
             JsdocTypeImport: [],
    +        JsdocTypeIndexSignature: ['right'],
             JsdocTypeIntersection: ['elements'],
             JsdocTypeKeyof: ['element'],
             JsdocTypeKeyValue: ['right'],
    +        JsdocTypeMappedType: ['right'],
             JsdocTypeName: [],
             JsdocTypeNamePath: ['left', 'right'],
             JsdocTypeNotNullable: ['element'],
    @@ -2339,6 +2479,8 @@
             JsdocTypeNullable: ['element'],
             JsdocTypeNumber: [],
             JsdocTypeObject: ['elements'],
    +        JsdocTypeObjectField: ['right'],
    +        JsdocTypeJsdocObjectField: ['left', 'right'],
             JsdocTypeOptional: ['element'],
             JsdocTypeParenthesis: ['element'],
             JsdocTypeSpecialNamePath: [],
    @@ -2393,6 +2535,4 @@
         exports.tryParse = tryParse;
         exports.visitorKeys = visitorKeys;
     
    -    Object.defineProperty(exports, '__esModule', { value: true });
    -
     }));
    diff --git a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json
    index 6bab2e1197b8aa..3f508ec8242f6c 100644
    --- a/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json
    +++ b/tools/node_modules/eslint/node_modules/jsdoc-type-pratt-parser/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "jsdoc-type-pratt-parser",
    -  "version": "3.1.0",
    +  "version": "4.0.0",
       "description": "",
       "main": "dist/index.js",
       "types": "dist/src/index.d.ts",
    @@ -19,7 +19,8 @@
         "preversion": "npm test",
         "prepublishOnly": "npm run build",
         "semantic-release": "semantic-release",
    -    "benchmark": "npm run build && node benchmark/benchmark.js"
    +    "benchmark": "npm run build && node benchmark/benchmark.js",
    +    "upgrade": "npm-upgrade"
       },
       "author": "Simon Seyock (https://github.com/simonseyock)",
       "contributors": [
    @@ -30,32 +31,32 @@
         "node": ">=12.0.0"
       },
       "devDependencies": {
    -    "@rollup/plugin-typescript": "^8.3.0",
    -    "@semantic-release/changelog": "^6.0.1",
    +    "@rollup/plugin-typescript": "^11.0.0",
    +    "@semantic-release/changelog": "^6.0.2",
         "@semantic-release/git": "^10.0.1",
    -    "@types/chai": "^4.3.0",
    -    "@types/mocha": "^9.0.0",
    -    "@types/node": "^17.0.5",
    -    "@types/sinon": "^10.0.6",
    -    "@types/sinon-chai": "^3.2.7",
    +    "@types/chai": "^4.3.4",
    +    "@types/mocha": "^10.0.1",
    +    "@types/node": "^18.15.1",
    +    "@types/sinon": "^10.0.13",
    +    "@types/sinon-chai": "^3.2.9",
         "benchmark": "^2.1.4",
         "catharsis": "^0.9.0",
    -    "chai": "^4.3.4",
    +    "chai": "^4.3.7",
         "coveralls": "^3.1.1",
    -    "eslint-config-standard-with-typescript": "^21.0.1",
    +    "eslint-config-standard-with-typescript": "^34.0.0",
         "jsdoctypeparser": "^9.0.0",
    -    "mocha": "^9.1.3",
    -    "npm-upgrade": "^3.0.0",
    +    "mocha": "^10.2.0",
    +    "npm-upgrade": "^3.1.0",
         "nyc": "^15.1.0",
    -    "rollup": "^2.62.0",
    -    "semantic-release": "^18.0.1",
    -    "sinon": "^12.0.1",
    +    "rollup": "^3.19.1",
    +    "semantic-release": "^20.1.1",
    +    "sinon": "^15.0.2",
         "sinon-chai": "^3.7.0",
    -    "ts-node": "^10.4.0",
    -    "ts-standard": "^11.0.0",
    -    "typedoc": "^0.22.10",
    -    "typedoc-plugin-merge-modules": "^3.1.0",
    -    "typescript": "^4.5.4"
    +    "ts-node": "^10.9.1",
    +    "ts-standard": "^12.0.2",
    +    "typedoc": "^0.23.26",
    +    "typedoc-plugin-merge-modules": "^4.0.1",
    +    "typescript": "^4.9.5"
       },
       "ts-standard": {
         "ignore": [
    diff --git a/tools/node_modules/eslint/package.json b/tools/node_modules/eslint/package.json
    index c435893941df5c..ce90ab4a236753 100644
    --- a/tools/node_modules/eslint/package.json
    +++ b/tools/node_modules/eslint/package.json
    @@ -1,6 +1,6 @@
     {
       "name": "eslint",
    -  "version": "8.36.0",
    +  "version": "8.37.0",
       "author": "Nicholas C. Zakas ",
       "description": "An AST-based pattern checker for JavaScript.",
       "bin": {
    @@ -62,8 +62,8 @@
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/regexpp": "^4.4.0",
    -    "@eslint/eslintrc": "^2.0.1",
    -    "@eslint/js": "8.36.0",
    +    "@eslint/eslintrc": "^2.0.2",
    +    "@eslint/js": "8.37.0",
         "@humanwhocodes/config-array": "^0.11.8",
         "@humanwhocodes/module-importer": "^1.0.1",
         "@nodelib/fs.walk": "^1.2.8",
    @@ -74,8 +74,8 @@
         "doctrine": "^3.0.0",
         "escape-string-regexp": "^4.0.0",
         "eslint-scope": "^7.1.1",
    -    "eslint-visitor-keys": "^3.3.0",
    -    "espree": "^9.5.0",
    +    "eslint-visitor-keys": "^3.4.0",
    +    "espree": "^9.5.1",
         "esquery": "^1.4.2",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
    
    From 0ef549d7a433a10ec00237b317e5019915ed693e Mon Sep 17 00:00:00 2001
    From: Deokjin Kim 
    Date: Sat, 1 Apr 2023 00:37:56 +0900
    Subject: [PATCH 087/131] doc: add importing util to example of
     `process.report.getReport'
    
    util.inspect() is used, but `util` is not imported. So added
    importing util to example of `process.report.getReport`.
    Plus, fix wrong importing in example of `process.memoryUsage.rss()`.
    
    PR-URL: https://github.com/nodejs/node/pull/47298
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Harshitha K P 
    ---
     doc/api/process.md | 4 +++-
     1 file changed, 3 insertions(+), 1 deletion(-)
    
    diff --git a/doc/api/process.md b/doc/api/process.md
    index 3a0b27b625e416..5bd6a0904d1032 100644
    --- a/doc/api/process.md
    +++ b/doc/api/process.md
    @@ -2361,7 +2361,7 @@ console.log(memoryUsage.rss());
     ```
     
     ```cjs
    -const { rss } = require('node:process');
    +const { memoryUsage } = require('node:process');
     
     console.log(memoryUsage.rss());
     // 35655680
    @@ -2873,6 +2873,7 @@ present.
     
     ```mjs
     import { report } from 'node:process';
    +import util from 'node:util';
     
     const data = report.getReport();
     console.log(data.header.nodejsVersion);
    @@ -2884,6 +2885,7 @@ fs.writeFileSync('my-report.log', util.inspect(data), 'utf8');
     
     ```cjs
     const { report } = require('node:process');
    +const util = require('node:util');
     
     const data = report.getReport();
     console.log(data.header.nodejsVersion);
    
    From 6cda0382f94069f7a462267162d3ad46fee9ff1e Mon Sep 17 00:00:00 2001
    From: Antoine du Hamel 
    Date: Fri, 31 Mar 2023 18:27:52 +0200
    Subject: [PATCH 088/131] util: fix inspecting error with a throwing getter for
     `cause`
    
    PR-URL: https://github.com/nodejs/node/pull/47163
    Reviewed-By: Moshe Atlow 
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Chengzhong Wu 
    ---
     lib/internal/util/inspect.js              | 11 +++++++++--
     test/message/util-inspect-error-cause.js  |  6 ++++++
     test/message/util-inspect-error-cause.out | 10 ++++++++++
     3 files changed, 25 insertions(+), 2 deletions(-)
    
    diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js
    index e6db302e9be719..57ffa96c97da40 100644
    --- a/lib/internal/util/inspect.js
    +++ b/lib/internal/util/inspect.js
    @@ -1243,9 +1243,16 @@ function getStackString(error) {
     function getStackFrames(ctx, err, stack) {
       const frames = StringPrototypeSplit(stack, '\n');
     
    +  let cause;
    +  try {
    +    ({ cause } = err);
    +  } catch {
    +    // If 'cause' is a getter that throws, ignore it.
    +  }
    +
       // Remove stack frames identical to frames in cause.
    -  if (err.cause && isError(err.cause)) {
    -    const causeStack = getStackString(err.cause);
    +  if (cause != null && isError(cause)) {
    +    const causeStack = getStackString(cause);
         const causeStackStart = StringPrototypeIndexOf(causeStack, '\n    at');
         if (causeStackStart !== -1) {
           const causeFrames = StringPrototypeSplit(StringPrototypeSlice(causeStack, causeStackStart + 1), '\n');
    diff --git a/test/message/util-inspect-error-cause.js b/test/message/util-inspect-error-cause.js
    index d34a908d374975..ed9d8230fe0c40 100644
    --- a/test/message/util-inspect-error-cause.js
    +++ b/test/message/util-inspect-error-cause.js
    @@ -46,3 +46,9 @@ process.nextTick(() => {
       console.log(inspect(cause3));
       console.log(inspect(error2));
     });
    +
    +{
    +  const error = new Error('cause that throws');
    +  Reflect.defineProperty(error, 'cause', { get() { throw new Error(); } });
    +  console.log(inspect(error));
    +}
    diff --git a/test/message/util-inspect-error-cause.out b/test/message/util-inspect-error-cause.out
    index c7a04f4a09309c..73f0a673d76e1f 100644
    --- a/test/message/util-inspect-error-cause.out
    +++ b/test/message/util-inspect-error-cause.out
    @@ -33,6 +33,16 @@ Error: undefined cause
         at * {
       [cause]: undefined
     }
    +Error: cause that throws
    +    at *
    +    at *
    +    at *
    +    at *
    +    at *
    +    at *
    +    at * {
    +  [cause]: [Getter]
    +}
     RangeError: New Stack Frames
         at *
     *[90m    at *[39m {
    
    From 3374f4db471bbc8fc498a3498ed6082009220d22 Mon Sep 17 00:00:00 2001
    From: Stephen Belanger 
    Date: Fri, 31 Mar 2023 10:40:30 -0700
    Subject: [PATCH 089/131] lib: add tracing channel to diagnostics_channel
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/44943
    Reviewed-By: Matteo Collina 
    Reviewed-By: Benjamin Gruenbaum 
    Reviewed-By: Chengzhong Wu 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Gerhard Stöbich 
    Reviewed-By: Rafael Gonzaga 
    Reviewed-By: Bryan English 
    ---
     doc/api/diagnostics_channel.md                | 647 ++++++++++++++++++
     lib/diagnostics_channel.js                    | 307 ++++++++-
     src/node_util.cc                              |  13 +-
     src/node_util.h                               |   1 -
     .../test-diagnostics-channel-bind-store.js    | 108 +++
     ...ics-channel-tracing-channel-async-error.js |  46 ++
     ...agnostics-channel-tracing-channel-async.js |  60 ++
     ...nel-tracing-channel-callback-run-stores.js |  29 +
     ...nnel-tracing-channel-promise-run-stores.js |  24 +
     ...tics-channel-tracing-channel-run-stores.js |  21 +
     ...tics-channel-tracing-channel-sync-error.js |  39 ++
     ...iagnostics-channel-tracing-channel-sync.js |  46 ++
     tools/doc/type-parser.mjs                     |   3 +
     13 files changed, 1309 insertions(+), 35 deletions(-)
     create mode 100644 test/parallel/test-diagnostics-channel-bind-store.js
     create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-async-error.js
     create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-async.js
     create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js
     create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
     create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js
     create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
     create mode 100644 test/parallel/test-diagnostics-channel-tracing-channel-sync.js
    
    diff --git a/doc/api/diagnostics_channel.md b/doc/api/diagnostics_channel.md
    index 30257c1e9efde2..35a41c51c9577f 100644
    --- a/doc/api/diagnostics_channel.md
    +++ b/doc/api/diagnostics_channel.md
    @@ -229,6 +229,56 @@ diagnostics_channel.subscribe('my-channel', onMessage);
     diagnostics_channel.unsubscribe('my-channel', onMessage);
     ```
     
    +#### `diagnostics_channel.tracingChannel(nameOrChannels)`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `nameOrChannels` {string|TracingChannel} Channel name or
    +  object containing all the [TracingChannel Channels][]
    +* Returns: {TracingChannel} Collection of channels to trace with
    +
    +Creates a [`TracingChannel`][] wrapper for the given
    +[TracingChannel Channels][]. If a name is given, the corresponding tracing
    +channels will be created in the form of `tracing:${name}:${eventType}` where
    +`eventType` corresponds to the types of [TracingChannel Channels][].
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +
    +const channelsByName = diagnostics_channel.tracingChannel('my-channel');
    +
    +// or...
    +
    +const channelsByCollection = diagnostics_channel.tracingChannel({
    +  start: diagnostics_channel.channel('tracing:my-channel:start'),
    +  end: diagnostics_channel.channel('tracing:my-channel:end'),
    +  asyncStart: diagnostics_channel.channel('tracing:my-channel:asyncStart'),
    +  asyncEnd: diagnostics_channel.channel('tracing:my-channel:asyncEnd'),
    +  error: diagnostics_channel.channel('tracing:my-channel:error'),
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +
    +const channelsByName = diagnostics_channel.tracingChannel('my-channel');
    +
    +// or...
    +
    +const channelsByCollection = diagnostics_channel.tracingChannel({
    +  start: diagnostics_channel.channel('tracing:my-channel:start'),
    +  end: diagnostics_channel.channel('tracing:my-channel:end'),
    +  asyncStart: diagnostics_channel.channel('tracing:my-channel:asyncStart'),
    +  asyncEnd: diagnostics_channel.channel('tracing:my-channel:asyncEnd'),
    +  error: diagnostics_channel.channel('tracing:my-channel:error'),
    +});
    +```
    +
     ### Class: `Channel`
     
     
    +
    +> Stability: 1 - Experimental
    +
    +* `store` {AsyncLocalStorage} The store to which to bind the context data
    +* `transform` {Function} Transform context data before setting the store context
    +
    +When [`channel.runStores(context, ...)`][] is called, the given context data
    +will be applied to any store bound to the channel. If the store has already been
    +bound the previous `transform` function will be replaced with the new one.
    +The `transform` function may be omitted to set the given context data as the
    +context directly.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +import { AsyncLocalStorage } from 'node:async_hooks';
    +
    +const store = new AsyncLocalStorage();
    +
    +const channel = diagnostics_channel.channel('my-channel');
    +
    +channel.bindStore(store, (data) => {
    +  return { data };
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +const { AsyncLocalStorage } = require('node:async_hooks');
    +
    +const store = new AsyncLocalStorage();
    +
    +const channel = diagnostics_channel.channel('my-channel');
    +
    +channel.bindStore(store, (data) => {
    +  return { data };
    +});
    +```
    +
    +#### `channel.unbindStore(store)`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `store` {AsyncLocalStorage} The store to unbind from the channel.
    +* Returns: {boolean} `true` if the store was found, `false` otherwise.
    +
    +Remove a message handler previously registered to this channel with
    +[`channel.bindStore(store)`][].
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +import { AsyncLocalStorage } from 'node:async_hooks';
    +
    +const store = new AsyncLocalStorage();
    +
    +const channel = diagnostics_channel.channel('my-channel');
    +
    +channel.bindStore(store);
    +channel.unbindStore(store);
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +const { AsyncLocalStorage } = require('node:async_hooks');
    +
    +const store = new AsyncLocalStorage();
    +
    +const channel = diagnostics_channel.channel('my-channel');
    +
    +channel.bindStore(store);
    +channel.unbindStore(store);
    +```
    +
    +#### `channel.runStores(context, fn[, thisArg[, ...args]])`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `context` {any} Message to send to subscribers and bind to stores
    +* `fn` {Function} Handler to run within the entered storage context
    +* `thisArg` {any} The receiver to be used for the function call.
    +* `...args` {any} Optional arguments to pass to the function.
    +
    +Applies the given data to any AsyncLocalStorage instances bound to the channel
    +for the duration of the given function, then publishes to the channel within
    +the scope of that data is applied to the stores.
    +
    +If a transform function was given to [`channel.bindStore(store)`][] it will be
    +applied to transform the message data before it becomes the context value for
    +the store. The prior storage context is accessible from within the transform
    +function in cases where context linking is required.
    +
    +The context applied to the store should be accesible in any async code which
    +continues from execution which began during the given function, however
    +there are some situations in which [context loss][] may occur.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +import { AsyncLocalStorage } from 'node:async_hooks';
    +
    +const store = new AsyncLocalStorage();
    +
    +const channel = diagnostics_channel.channel('my-channel');
    +
    +channel.bindStore(store, (message) => {
    +  const parent = store.getStore();
    +  return new Span(message, parent);
    +});
    +channel.runStores({ some: 'message' }, () => {
    +  store.getStore(); // Span({ some: 'message' })
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +const { AsyncLocalStorage } = require('node:async_hooks');
    +
    +const store = new AsyncLocalStorage();
    +
    +const channel = diagnostics_channel.channel('my-channel');
    +
    +channel.bindStore(store, (message) => {
    +  const parent = store.getStore();
    +  return new Span(message, parent);
    +});
    +channel.runStores({ some: 'message' }, () => {
    +  store.getStore(); // Span({ some: 'message' })
    +});
    +```
    +
    +### Class: `TracingChannel`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +The class `TracingChannel` is a collection of [TracingChannel Channels][] which
    +together express a single traceable action. It is used to formalize and
    +simplify the process of producing events for tracing application flow.
    +[`diagnostics_channel.tracingChannel()`][] is used to construct a
    +`TracingChannel`. As with `Channel` it is recommended to create and reuse a
    +single `TracingChannel` at the top-level of the file rather than creating them
    +dynamically.
    +
    +#### `tracingChannel.subscribe(subscribers)`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `subscribers` {Object} Set of [TracingChannel Channels][] subscribers
    +  * `start` {Function} The [`start` event][] subscriber
    +  * `end` {Function} The [`end` event][] subscriber
    +  * `asyncStart` {Function} The [`asyncStart` event][] subscriber
    +  * `asyncEnd` {Function} The [`asyncEnd` event][] subscriber
    +  * `error` {Function} The [`error` event][] subscriber
    +
    +Helper to subscribe a collection of functions to the corresponding channels.
    +This is the same as calling [`channel.subscribe(onMessage)`][] on each channel
    +individually.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.subscribe({
    +  start(message) {
    +    // Handle start message
    +  },
    +  end(message) {
    +    // Handle end message
    +  },
    +  asyncStart(message) {
    +    // Handle asyncStart message
    +  },
    +  asyncEnd(message) {
    +    // Handle asyncEnd message
    +  },
    +  error(message) {
    +    // Handle error message
    +  },
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.subscribe({
    +  start(message) {
    +    // Handle start message
    +  },
    +  end(message) {
    +    // Handle end message
    +  },
    +  asyncStart(message) {
    +    // Handle asyncStart message
    +  },
    +  asyncEnd(message) {
    +    // Handle asyncEnd message
    +  },
    +  error(message) {
    +    // Handle error message
    +  },
    +});
    +```
    +
    +#### `tracingChannel.unsubscribe(subscribers)`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `subscribers` {Object} Set of [TracingChannel Channels][] subscribers
    +  * `start` {Function} The [`start` event][] subscriber
    +  * `end` {Function} The [`end` event][] subscriber
    +  * `asyncStart` {Function} The [`asyncStart` event][] subscriber
    +  * `asyncEnd` {Function} The [`asyncEnd` event][] subscriber
    +  * `error` {Function} The [`error` event][] subscriber
    +* Returns: {boolean} `true` if all handlers were successfully unsubscribed,
    +  and `false` otherwise.
    +
    +Helper to unsubscribe a collection of functions from the corresponding channels.
    +This is the same as calling [`channel.unsubscribe(onMessage)`][] on each channel
    +individually.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.unsubscribe({
    +  start(message) {
    +    // Handle start message
    +  },
    +  end(message) {
    +    // Handle end message
    +  },
    +  asyncStart(message) {
    +    // Handle asyncStart message
    +  },
    +  asyncEnd(message) {
    +    // Handle asyncEnd message
    +  },
    +  error(message) {
    +    // Handle error message
    +  },
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.unsubscribe({
    +  start(message) {
    +    // Handle start message
    +  },
    +  end(message) {
    +    // Handle end message
    +  },
    +  asyncStart(message) {
    +    // Handle asyncStart message
    +  },
    +  asyncEnd(message) {
    +    // Handle asyncEnd message
    +  },
    +  error(message) {
    +    // Handle error message
    +  },
    +});
    +```
    +
    +#### `tracingChannel.traceSync(fn[, context[, thisArg[, ...args]]])`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `fn` {Function} Function to wrap a trace around
    +* `context` {Object} Shared object to correlate events through
    +* `thisArg` {any} The receiver to be used for the function call
    +* `...args` {any} Optional arguments to pass to the function
    +* Returns: {any} The return value of the given function
    +
    +Trace a synchronous function call. This will always produce a [`start` event][]
    +and [`end` event][] around the execution and may produce an [`error` event][]
    +if the given function throws an error. This will run the given function using
    +[`channel.runStores(context, ...)`][] on the `start` channel which ensures all
    +events should have any bound stores set to match this trace context.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.traceSync(() => {
    +  // Do something
    +}, {
    +  some: 'thing',
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.traceSync(() => {
    +  // Do something
    +}, {
    +  some: 'thing',
    +});
    +```
    +
    +#### `tracingChannel.tracePromise(fn[, context[, thisArg[, ...args]]])`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `fn` {Function} Promise-returning function to wrap a trace around
    +* `context` {Object} Shared object to correlate trace events through
    +* `thisArg` {any} The receiver to be used for the function call
    +* `...args` {any} Optional arguments to pass to the function
    +* Returns: {Promise} Chained from promise returned by the given function
    +
    +Trace a promise-returning function call. This will always produce a
    +[`start` event][] and [`end` event][] around the synchronous portion of the
    +function execution, and will produce an [`asyncStart` event][] and
    +[`asyncEnd` event][] when a promise continuation is reached. It may also
    +produce an [`error` event][] if the given function throws an error or the
    +returned promise rejects. This will run the given function using
    +[`channel.runStores(context, ...)`][] on the `start` channel which ensures all
    +events should have any bound stores set to match this trace context.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.tracePromise(async () => {
    +  // Do something
    +}, {
    +  some: 'thing',
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.tracePromise(async () => {
    +  // Do something
    +}, {
    +  some: 'thing',
    +});
    +```
    +
    +#### `tracingChannel.traceCallback(fn[, position[, context[, thisArg[, ...args]]]])`
    +
    +
    +
    +> Stability: 1 - Experimental
    +
    +* `fn` {Function} callback using function to wrap a trace around
    +* `position` {number} Zero-indexed argument position of expected callback
    +* `context` {Object} Shared object to correlate trace events through
    +* `thisArg` {any} The receiver to be used for the function call
    +* `...args` {any} Optional arguments to pass to the function
    +* Returns: {any} The return value of the given function
    +
    +Trace a callback-receiving function call. This will always produce a
    +[`start` event][] and [`end` event][] around the synchronous portion of the
    +function execution, and will produce a [`asyncStart` event][] and
    +[`asyncEnd` event][] around the callback execution. It may also produce an
    +[`error` event][] if the given function throws an error or the returned
    +promise rejects. This will run the given function using
    +[`channel.runStores(context, ...)`][] on the `start` channel which ensures all
    +events should have any bound stores set to match this trace context.
    +
    +The `position` will be -1 by default to indicate the final argument should
    +be used as the callback.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.traceCallback((arg1, callback) => {
    +  // Do something
    +  callback(null, 'result');
    +}, 1, {
    +  some: 'thing',
    +}, thisArg, arg1, callback);
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +
    +channels.traceCallback((arg1, callback) => {
    +  // Do something
    +  callback(null, 'result');
    +}, {
    +  some: 'thing',
    +}, thisArg, arg1, callback);
    +```
    +
    +The callback will also be run with [`channel.runStores(context, ...)`][] which
    +enables context loss recovery in some cases.
    +
    +```mjs
    +import diagnostics_channel from 'node:diagnostics_channel';
    +import { AsyncLocalStorage } from 'node:async_hooks';
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +const myStore = new AsyncLocalStorage();
    +
    +// The start channel sets the initial store data to something
    +// and stores that store data value on the trace context object
    +channels.start.bindStore(myStore, (data) => {
    +  const span = new Span(data);
    +  data.span = span;
    +  return span;
    +});
    +
    +// Then asyncStart can restore from that data it stored previously
    +channels.asyncStart.bindStore(myStore, (data) => {
    +  return data.span;
    +});
    +```
    +
    +```cjs
    +const diagnostics_channel = require('node:diagnostics_channel');
    +const { AsyncLocalStorage } = require('node:async_hooks');
    +
    +const channels = diagnostics_channel.tracingChannel('my-channel');
    +const myStore = new AsyncLocalStorage();
    +
    +// The start channel sets the initial store data to something
    +// and stores that store data value on the trace context object
    +channels.start.bindStore(myStore, (data) => {
    +  const span = new Span(data);
    +  data.span = span;
    +  return span;
    +});
    +
    +// Then asyncStart can restore from that data it stored previously
    +channels.asyncStart.bindStore(myStore, (data) => {
    +  return data.span;
    +});
    +```
    +
    +### TracingChannel Channels
    +
    +A TracingChannel is a collection of several diagnostics\_channels representing
    +specific points in the execution lifecycle of a single traceable action. The
    +behaviour is split into five diagnostics\_channels consisting of `start`,
    +`end`, `asyncStart`, `asyncEnd`, and `error`. A single traceable action will
    +share the same event object between all events, this can be helpful for
    +managing correlation through a weakmap.
    +
    +These event objects will be extended with `result` or `error` values when
    +the task "completes". In the case of a synchronous task the `result` will be
    +the return value and the `error` will be anything thrown from the function.
    +With callback-based async functions the `result` will be the second argument
    +of the callback while the `error` will either be a thrown error visible in the
    +`end` event or the first callback argument in either of the `asyncStart` or
    +`asyncEnd` events.
    +
    +Tracing channels should follow a naming pattern of:
    +
    +* `tracing:module.class.method:start` or `tracing:module.function:start`
    +* `tracing:module.class.method:end` or `tracing:module.function:end`
    +* `tracing:module.class.method:asyncStart` or `tracing:module.function:asyncStart`
    +* `tracing:module.class.method:asyncEnd` or `tracing:module.function:asyncEnd`
    +* `tracing:module.class.method:error` or `tracing:module.function:error`
    +
    +#### `start(event)`
    +
    +* Name: `tracing:${name}:start`
    +
    +The `start` event represents the point at which a function is called. At this
    +point the event data may contain function arguments or anything else available
    +at the very start of the execution of the function.
    +
    +#### `end(event)`
    +
    +* Name: `tracing:${name}:end`
    +
    +The `end` event represents the point at which a function call returns a value.
    +In the case of an async function this is when the promise returned not when the
    +function itself makes a return statement internally. At this point, if the
    +traced function was synchronous the `result` field will be set to the return
    +value of the function. Alternatively, the `error` field may be present to
    +represent any thrown errors.
    +
    +It is recommended to listen specifically to the `error` event to track errors
    +as it may be possible for a traceable action to produce multiple errors. For
    +example, an async task which fails may be started internally before the sync
    +part of the task then throws an error.
    +
    +#### `asyncStart(event)`
    +
    +* Name: `tracing:${name}:asyncStart`
    +
    +The `asyncStart` event represents the callback or continuation of a traceable
    +function being reached. At this point things like callback arguments may be
    +available, or anything else expressing the "result" of the action.
    +
    +For callbacks-based functions, the first argument of the callback will be
    +assigned to the `error` field, if not `undefined` or `null`, and the second
    +argument will be assigned to the `result` field.
    +
    +For promises, the argument to the `resolve` path will be assigned to `result`
    +or the argument to the `reject` path will be assign to `error`.
    +
    +It is recommended to listen specifically to the `error` event to track errors
    +as it may be possible for a traceable action to produce multiple errors. For
    +example, an async task which fails may be started internally before the sync
    +part of the task then throws an error.
    +
    +#### `asyncEnd(event)`
    +
    +* Name: `tracing:${name}:asyncEnd`
    +
    +The `asyncEnd` event represents the callback of an asynchronous function
    +returning. It's not likely event data will change after the `asyncStart` event,
    +however it may be useful to see the point where the callback completes.
    +
    +#### `error(event)`
    +
    +* Name: `tracing:${name}:error`
    +
    +The `error` event represents any error produced by the traceable function
    +either synchronously or asynchronously. If an error is thrown in the
    +synchronous portion of the traced function the error will be assigned to the
    +`error` field of the event and the `error` event will be triggered. If an error
    +is received asynchronously through a callback or promise rejection it will also
    +be assigned to the `error` field of the event and trigger the `error` event.
    +
    +It is possible for a single traceable function call to produce errors multiple
    +times so this should be considered when consuming this event. For example, if
    +another async task is triggered internally which fails and then the sync part
    +of the function then throws and error two `error` events will be emitted, one
    +for the sync error and one for the async error.
    +
     ### Built-in Channels
     
     > Stability: 1 - Experimental
    @@ -496,9 +1131,21 @@ added: v16.18.0
     
     Emitted when a new thread is created.
     
    +[TracingChannel Channels]: #tracingchannel-channels
     [`'uncaughtException'`]: process.md#event-uncaughtexception
    +[`TracingChannel`]: #class-tracingchannel
     [`Worker`]: worker_threads.md#class-worker
    +[`asyncEnd` event]: #asyncendevent
    +[`asyncStart` event]: #asyncstartevent
    +[`channel.bindStore(store)`]: #channelbindstorestore-transform
    +[`channel.runStores(context, ...)`]: #channelrunstorescontext-fn-thisarg-args
     [`channel.subscribe(onMessage)`]: #channelsubscribeonmessage
    +[`channel.unsubscribe(onMessage)`]: #channelunsubscribeonmessage
     [`diagnostics_channel.channel(name)`]: #diagnostics_channelchannelname
     [`diagnostics_channel.subscribe(name, onMessage)`]: #diagnostics_channelsubscribename-onmessage
    +[`diagnostics_channel.tracingChannel()`]: #diagnostics_channeltracingchannelnameorchannels
     [`diagnostics_channel.unsubscribe(name, onMessage)`]: #diagnostics_channelunsubscribename-onmessage
    +[`end` event]: #endevent
    +[`error` event]: #errorevent
    +[`start` event]: #startevent
    +[context loss]: async_context.md#troubleshooting-context-loss
    diff --git a/lib/diagnostics_channel.js b/lib/diagnostics_channel.js
    index c54a5914d8d71d..be50c3b8f6e48d 100644
    --- a/lib/diagnostics_channel.js
    +++ b/lib/diagnostics_channel.js
    @@ -1,11 +1,18 @@
     'use strict';
     
     const {
    +  ArrayPrototypeAt,
       ArrayPrototypeIndexOf,
       ArrayPrototypePush,
       ArrayPrototypeSplice,
       ObjectGetPrototypeOf,
       ObjectSetPrototypeOf,
    +  Promise,
    +  PromisePrototypeThen,
    +  PromiseResolve,
    +  PromiseReject,
    +  ReflectApply,
    +  SafeMap,
       SymbolHasInstance,
     } = primordials;
     
    @@ -22,11 +29,59 @@ const { triggerUncaughtException } = internalBinding('errors');
     
     const { WeakReference } = internalBinding('util');
     
    +function decRef(channel) {
    +  if (channels.get(channel.name).decRef() === 0) {
    +    channels.delete(channel.name);
    +  }
    +}
    +
    +function incRef(channel) {
    +  channels.get(channel.name).incRef();
    +}
    +
    +function markActive(channel) {
    +  // eslint-disable-next-line no-use-before-define
    +  ObjectSetPrototypeOf(channel, ActiveChannel.prototype);
    +  channel._subscribers = [];
    +  channel._stores = new SafeMap();
    +}
    +
    +function maybeMarkInactive(channel) {
    +  // When there are no more active subscribers or bound, restore to fast prototype.
    +  if (!channel._subscribers.length && !channel._stores.size) {
    +    // eslint-disable-next-line no-use-before-define
    +    ObjectSetPrototypeOf(channel, Channel.prototype);
    +    channel._subscribers = undefined;
    +    channel._stores = undefined;
    +  }
    +}
    +
    +function defaultTransform(data) {
    +  return data;
    +}
    +
    +function wrapStoreRun(store, data, next, transform = defaultTransform) {
    +  return () => {
    +    let context;
    +    try {
    +      context = transform(data);
    +    } catch (err) {
    +      process.nextTick(() => {
    +        triggerUncaughtException(err, false);
    +      });
    +      return next();
    +    }
    +
    +    return store.run(context, next);
    +  };
    +}
    +
     // TODO(qard): should there be a C++ channel interface?
     class ActiveChannel {
       subscribe(subscription) {
         validateFunction(subscription, 'subscription');
         ArrayPrototypePush(this._subscribers, subscription);
    +    incRef(this);
       }
     
       unsubscribe(subscription) {
    @@ -35,12 +90,28 @@ class ActiveChannel {
     
         ArrayPrototypeSplice(this._subscribers, index, 1);
     
    -    // When there are no more active subscribers, restore to fast prototype.
    -    if (!this._subscribers.length) {
    -      // eslint-disable-next-line no-use-before-define
    -      ObjectSetPrototypeOf(this, Channel.prototype);
    +    decRef(this);
    +    maybeMarkInactive(this);
    +
    +    return true;
    +  }
    +
    +  bindStore(store, transform) {
    +    const replacing = this._stores.has(store);
    +    if (!replacing) incRef(this);
    +    this._stores.set(store, transform);
    +  }
    +
    +  unbindStore(store) {
    +    if (!this._stores.has(store)) {
    +      return false;
         }
     
    +    this._stores.delete(store);
    +
    +    decRef(this);
    +    maybeMarkInactive(this);
    +
         return true;
       }
     
    @@ -60,12 +131,30 @@ class ActiveChannel {
           }
         }
       }
    +
    +  runStores(data, fn, thisArg, ...args) {
    +    let run = () => {
    +      this.publish(data);
    +      return ReflectApply(fn, thisArg, args);
    +    };
    +
    +    for (const entry of this._stores.entries()) {
    +      const store = entry[0];
    +      const transform = entry[1];
    +      run = wrapStoreRun(store, data, run, transform);
    +    }
    +
    +    return run();
    +  }
     }
     
     class Channel {
       constructor(name) {
         this._subscribers = undefined;
    +    this._stores = undefined;
         this.name = name;
    +
    +    channels.set(name, new WeakReference(this));
       }
     
       static [SymbolHasInstance](instance) {
    @@ -75,8 +164,7 @@ class Channel {
       }
     
       subscribe(subscription) {
    -    ObjectSetPrototypeOf(this, ActiveChannel.prototype);
    -    this._subscribers = [];
    +    markActive(this);
         this.subscribe(subscription);
       }
     
    @@ -84,18 +172,31 @@ class Channel {
         return false;
       }
     
    +  bindStore(store, transform) {
    +    markActive(this);
    +    this.bindStore(store, transform);
    +  }
    +
    +  unbindStore() {
    +    return false;
    +  }
    +
       get hasSubscribers() {
         return false;
       }
     
       publish() {}
    +
    +  runStores(data, fn, thisArg, ...args) {
    +    return ReflectApply(fn, thisArg, args);
    +  }
     }
     
    -const channels = { __proto__: null };
    +const channels = new SafeMap();
     
     function channel(name) {
       let channel;
    -  const ref = channels[name];
    +  const ref = channels.get(name);
       if (ref) channel = ref.get();
       if (channel) return channel;
     
    @@ -103,33 +204,20 @@ function channel(name) {
         throw new ERR_INVALID_ARG_TYPE('channel', ['string', 'symbol'], name);
       }
     
    -  channel = new Channel(name);
    -  channels[name] = new WeakReference(channel);
    -  return channel;
    +  return new Channel(name);
     }
     
     function subscribe(name, subscription) {
    -  const chan = channel(name);
    -  channels[name].incRef();
    -  chan.subscribe(subscription);
    +  return channel(name).subscribe(subscription);
     }
     
     function unsubscribe(name, subscription) {
    -  const chan = channel(name);
    -  if (!chan.unsubscribe(subscription)) {
    -    return false;
    -  }
    -
    -  channels[name].decRef();
    -  if (channels[name].getRef() === 0) {
    -    delete channels[name];
    -  }
    -  return true;
    +  return channel(name).unsubscribe(subscription);
     }
     
     function hasSubscribers(name) {
       let channel;
    -  const ref = channels[name];
    +  const ref = channels.get(name);
       if (ref) channel = ref.get();
       if (!channel) {
         return false;
    @@ -138,10 +226,179 @@ function hasSubscribers(name) {
       return channel.hasSubscribers;
     }
     
    +const traceEvents = [
    +  'start',
    +  'end',
    +  'asyncStart',
    +  'asyncEnd',
    +  'error',
    +];
    +
    +function assertChannel(value, name) {
    +  if (!(value instanceof Channel)) {
    +    throw new ERR_INVALID_ARG_TYPE(name, ['Channel'], value);
    +  }
    +}
    +
    +class TracingChannel {
    +  constructor(nameOrChannels) {
    +    if (typeof nameOrChannels === 'string') {
    +      this.start = channel(`tracing:${nameOrChannels}:start`);
    +      this.end = channel(`tracing:${nameOrChannels}:end`);
    +      this.asyncStart = channel(`tracing:${nameOrChannels}:asyncStart`);
    +      this.asyncEnd = channel(`tracing:${nameOrChannels}:asyncEnd`);
    +      this.error = channel(`tracing:${nameOrChannels}:error`);
    +    } else if (typeof nameOrChannels === 'object') {
    +      const { start, end, asyncStart, asyncEnd, error } = nameOrChannels;
    +
    +      assertChannel(start, 'nameOrChannels.start');
    +      assertChannel(end, 'nameOrChannels.end');
    +      assertChannel(asyncStart, 'nameOrChannels.asyncStart');
    +      assertChannel(asyncEnd, 'nameOrChannels.asyncEnd');
    +      assertChannel(error, 'nameOrChannels.error');
    +
    +      this.start = start;
    +      this.end = end;
    +      this.asyncStart = asyncStart;
    +      this.asyncEnd = asyncEnd;
    +      this.error = error;
    +    } else {
    +      throw new ERR_INVALID_ARG_TYPE('nameOrChannels',
    +                                     ['string', 'object', 'Channel'],
    +                                     nameOrChannels);
    +    }
    +  }
    +
    +  subscribe(handlers) {
    +    for (const name of traceEvents) {
    +      if (!handlers[name]) continue;
    +
    +      this[name]?.subscribe(handlers[name]);
    +    }
    +  }
    +
    +  unsubscribe(handlers) {
    +    let done = true;
    +
    +    for (const name of traceEvents) {
    +      if (!handlers[name]) continue;
    +
    +      if (!this[name]?.unsubscribe(handlers[name])) {
    +        done = false;
    +      }
    +    }
    +
    +    return done;
    +  }
    +
    +  traceSync(fn, context = {}, thisArg, ...args) {
    +    const { start, end, error } = this;
    +
    +    return start.runStores(context, () => {
    +      try {
    +        const result = ReflectApply(fn, thisArg, args);
    +        context.result = result;
    +        return result;
    +      } catch (err) {
    +        context.error = err;
    +        error.publish(context);
    +        throw err;
    +      } finally {
    +        end.publish(context);
    +      }
    +    });
    +  }
    +
    +  tracePromise(fn, context = {}, thisArg, ...args) {
    +    const { start, end, asyncStart, asyncEnd, error } = this;
    +
    +    function reject(err) {
    +      context.error = err;
    +      error.publish(context);
    +      asyncStart.publish(context);
    +      // TODO: Is there a way to have asyncEnd _after_ the continuation?
    +      asyncEnd.publish(context);
    +      return PromiseReject(err);
    +    }
    +
    +    function resolve(result) {
    +      context.result = result;
    +      asyncStart.publish(context);
    +      // TODO: Is there a way to have asyncEnd _after_ the continuation?
    +      asyncEnd.publish(context);
    +      return result;
    +    }
    +
    +    return start.runStores(context, () => {
    +      try {
    +        let promise = ReflectApply(fn, thisArg, args);
    +        // Convert thenables to native promises
    +        if (!(promise instanceof Promise)) {
    +          promise = PromiseResolve(promise);
    +        }
    +        return PromisePrototypeThen(promise, resolve, reject);
    +      } catch (err) {
    +        context.error = err;
    +        error.publish(context);
    +        throw err;
    +      } finally {
    +        end.publish(context);
    +      }
    +    });
    +  }
    +
    +  traceCallback(fn, position = -1, context = {}, thisArg, ...args) {
    +    const { start, end, asyncStart, asyncEnd, error } = this;
    +
    +    function wrappedCallback(err, res) {
    +      if (err) {
    +        context.error = err;
    +        error.publish(context);
    +      } else {
    +        context.result = res;
    +      }
    +
    +      // Using runStores here enables manual context failure recovery
    +      asyncStart.runStores(context, () => {
    +        try {
    +          if (callback) {
    +            return ReflectApply(callback, this, arguments);
    +          }
    +        } finally {
    +          asyncEnd.publish(context);
    +        }
    +      });
    +    }
    +
    +    const callback = ArrayPrototypeAt(args, position);
    +    if (typeof callback !== 'function') {
    +      throw new ERR_INVALID_ARG_TYPE('callback', ['function'], callback);
    +    }
    +    ArrayPrototypeSplice(args, position, 1, wrappedCallback);
    +
    +    return start.runStores(context, () => {
    +      try {
    +        return ReflectApply(fn, thisArg, args);
    +      } catch (err) {
    +        context.error = err;
    +        error.publish(context);
    +        throw err;
    +      } finally {
    +        end.publish(context);
    +      }
    +    });
    +  }
    +}
    +
    +function tracingChannel(nameOrChannels) {
    +  return new TracingChannel(nameOrChannels);
    +}
    +
     module.exports = {
       channel,
       hasSubscribers,
       subscribe,
    +  tracingChannel,
       unsubscribe,
       Channel,
     };
    diff --git a/src/node_util.cc b/src/node_util.cc
    index f7467caf899d9c..a069fa2aa1665c 100644
    --- a/src/node_util.cc
    +++ b/src/node_util.cc
    @@ -262,18 +262,13 @@ void WeakReference::Get(const FunctionCallbackInfo& args) {
         args.GetReturnValue().Set(weak_ref->target_.Get(isolate));
     }
     
    -void WeakReference::GetRef(const FunctionCallbackInfo& args) {
    -  WeakReference* weak_ref = Unwrap(args.Holder());
    -  Isolate* isolate = args.GetIsolate();
    -  args.GetReturnValue().Set(
    -      v8::Number::New(isolate, weak_ref->reference_count_));
    -}
    -
     void WeakReference::IncRef(const FunctionCallbackInfo& args) {
       WeakReference* weak_ref = Unwrap(args.Holder());
       weak_ref->reference_count_++;
       if (weak_ref->target_.IsEmpty()) return;
       if (weak_ref->reference_count_ == 1) weak_ref->target_.ClearWeak();
    +  args.GetReturnValue().Set(
    +      v8::Number::New(args.GetIsolate(), weak_ref->reference_count_));
     }
     
     void WeakReference::DecRef(const FunctionCallbackInfo& args) {
    @@ -282,6 +277,8 @@ void WeakReference::DecRef(const FunctionCallbackInfo& args) {
       weak_ref->reference_count_--;
       if (weak_ref->target_.IsEmpty()) return;
       if (weak_ref->reference_count_ == 0) weak_ref->target_.SetWeak();
    +  args.GetReturnValue().Set(
    +      v8::Number::New(args.GetIsolate(), weak_ref->reference_count_));
     }
     
     static void GuessHandleType(const FunctionCallbackInfo& args) {
    @@ -365,7 +362,6 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
       registry->Register(ArrayBufferViewHasBuffer);
       registry->Register(WeakReference::New);
       registry->Register(WeakReference::Get);
    -  registry->Register(WeakReference::GetRef);
       registry->Register(WeakReference::IncRef);
       registry->Register(WeakReference::DecRef);
       registry->Register(GuessHandleType);
    @@ -457,7 +453,6 @@ void Initialize(Local target,
           WeakReference::kInternalFieldCount);
       weak_ref->Inherit(BaseObject::GetConstructorTemplate(env));
       SetProtoMethod(isolate, weak_ref, "get", WeakReference::Get);
    -  SetProtoMethod(isolate, weak_ref, "getRef", WeakReference::GetRef);
       SetProtoMethod(isolate, weak_ref, "incRef", WeakReference::IncRef);
       SetProtoMethod(isolate, weak_ref, "decRef", WeakReference::DecRef);
       SetConstructorFunction(context, target, "WeakReference", weak_ref);
    diff --git a/src/node_util.h b/src/node_util.h
    index fa0faa618a61bc..715686856db879 100644
    --- a/src/node_util.h
    +++ b/src/node_util.h
    @@ -21,7 +21,6 @@ class WeakReference : public SnapshotableObject {
                     v8::Local target);
       static void New(const v8::FunctionCallbackInfo& args);
       static void Get(const v8::FunctionCallbackInfo& args);
    -  static void GetRef(const v8::FunctionCallbackInfo& args);
       static void IncRef(const v8::FunctionCallbackInfo& args);
       static void DecRef(const v8::FunctionCallbackInfo& args);
     
    diff --git a/test/parallel/test-diagnostics-channel-bind-store.js b/test/parallel/test-diagnostics-channel-bind-store.js
    new file mode 100644
    index 00000000000000..81fb299c2f637c
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-bind-store.js
    @@ -0,0 +1,108 @@
    +'use strict';
    +
    +const common = require('../common');
    +const assert = require('assert');
    +const dc = require('diagnostics_channel');
    +const { AsyncLocalStorage } = require('async_hooks');
    +
    +let n = 0;
    +const thisArg = new Date();
    +const inputs = [
    +  { foo: 'bar' },
    +  { baz: 'buz' },
    +];
    +
    +const channel = dc.channel('test');
    +
    +// Bind a storage directly to published data
    +const store1 = new AsyncLocalStorage();
    +channel.bindStore(store1);
    +let store1bound = true;
    +
    +// Bind a store with transformation of published data
    +const store2 = new AsyncLocalStorage();
    +channel.bindStore(store2, common.mustCall((data) => {
    +  assert.strictEqual(data, inputs[n]);
    +  return { data };
    +}, 4));
    +
    +// Regular subscribers should see publishes from runStores calls
    +channel.subscribe(common.mustCall((data) => {
    +  if (store1bound) {
    +    assert.deepStrictEqual(data, store1.getStore());
    +  }
    +  assert.deepStrictEqual({ data }, store2.getStore());
    +  assert.strictEqual(data, inputs[n]);
    +}, 4));
    +
    +// Verify stores are empty before run
    +assert.strictEqual(store1.getStore(), undefined);
    +assert.strictEqual(store2.getStore(), undefined);
    +
    +channel.runStores(inputs[n], common.mustCall(function(a, b) {
    +  // Verify this and argument forwarding
    +  assert.strictEqual(this, thisArg);
    +  assert.strictEqual(a, 1);
    +  assert.strictEqual(b, 2);
    +
    +  // Verify store 1 state matches input
    +  assert.strictEqual(store1.getStore(), inputs[n]);
    +
    +  // Verify store 2 state has expected transformation
    +  assert.deepStrictEqual(store2.getStore(), { data: inputs[n] });
    +
    +  // Should support nested contexts
    +  n++;
    +  channel.runStores(inputs[n], common.mustCall(function() {
    +    // Verify this and argument forwarding
    +    assert.strictEqual(this, undefined);
    +
    +    // Verify store 1 state matches input
    +    assert.strictEqual(store1.getStore(), inputs[n]);
    +
    +    // Verify store 2 state has expected transformation
    +    assert.deepStrictEqual(store2.getStore(), { data: inputs[n] });
    +  }));
    +  n--;
    +
    +  // Verify store 1 state matches input
    +  assert.strictEqual(store1.getStore(), inputs[n]);
    +
    +  // Verify store 2 state has expected transformation
    +  assert.deepStrictEqual(store2.getStore(), { data: inputs[n] });
    +}), thisArg, 1, 2);
    +
    +// Verify stores are empty after run
    +assert.strictEqual(store1.getStore(), undefined);
    +assert.strictEqual(store2.getStore(), undefined);
    +
    +// Verify unbinding works
    +assert.ok(channel.unbindStore(store1));
    +store1bound = false;
    +
    +// Verify unbinding a store that is not bound returns false
    +assert.ok(!channel.unbindStore(store1));
    +
    +n++;
    +channel.runStores(inputs[n], common.mustCall(() => {
    +  // Verify after unbinding store 1 will remain undefined
    +  assert.strictEqual(store1.getStore(), undefined);
    +
    +  // Verify still bound store 2 receives expected data
    +  assert.deepStrictEqual(store2.getStore(), { data: inputs[n] });
    +}));
    +
    +// Contain transformer errors and emit on next tick
    +const fail = new Error('fail');
    +channel.bindStore(store1, () => {
    +  throw fail;
    +});
    +
    +let calledRunStores = false;
    +process.once('uncaughtException', common.mustCall((err) => {
    +  assert.strictEqual(calledRunStores, true);
    +  assert.strictEqual(err, fail);
    +}));
    +
    +channel.runStores(inputs[n], common.mustCall());
    +calledRunStores = true;
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-async-error.js b/test/parallel/test-diagnostics-channel-tracing-channel-async-error.js
    new file mode 100644
    index 00000000000000..7335e15de9dfb5
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-async-error.js
    @@ -0,0 +1,46 @@
    +'use strict';
    +
    +const common = require('../common');
    +const dc = require('diagnostics_channel');
    +const assert = require('assert');
    +
    +const channel = dc.tracingChannel('test');
    +
    +const expectedError = new Error('test');
    +const input = { foo: 'bar' };
    +const thisArg = { baz: 'buz' };
    +
    +function check(found) {
    +  assert.deepStrictEqual(found, input);
    +}
    +
    +const handlers = {
    +  start: common.mustCall(check, 2),
    +  end: common.mustCall(check, 2),
    +  asyncStart: common.mustCall(check, 2),
    +  asyncEnd: common.mustCall(check, 2),
    +  error: common.mustCall((found) => {
    +    check(found);
    +    assert.deepStrictEqual(found.error, expectedError);
    +  }, 2)
    +};
    +
    +channel.subscribe(handlers);
    +
    +channel.traceCallback(function(cb, err) {
    +  assert.deepStrictEqual(this, thisArg);
    +  setImmediate(cb, err);
    +}, 0, input, thisArg, common.mustCall((err, res) => {
    +  assert.strictEqual(err, expectedError);
    +  assert.strictEqual(res, undefined);
    +}), expectedError);
    +
    +channel.tracePromise(function(value) {
    +  assert.deepStrictEqual(this, thisArg);
    +  return Promise.reject(value);
    +}, input, thisArg, expectedError).then(
    +  common.mustNotCall(),
    +  common.mustCall((value) => {
    +    assert.deepStrictEqual(value, expectedError);
    +  })
    +);
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-async.js b/test/parallel/test-diagnostics-channel-tracing-channel-async.js
    new file mode 100644
    index 00000000000000..03bdc85fb14e70
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-async.js
    @@ -0,0 +1,60 @@
    +'use strict';
    +
    +const common = require('../common');
    +const dc = require('diagnostics_channel');
    +const assert = require('assert');
    +
    +const channel = dc.tracingChannel('test');
    +
    +const expectedResult = { foo: 'bar' };
    +const input = { foo: 'bar' };
    +const thisArg = { baz: 'buz' };
    +
    +function check(found) {
    +  assert.deepStrictEqual(found, input);
    +}
    +
    +const handlers = {
    +  start: common.mustCall(check, 2),
    +  end: common.mustCall(check, 2),
    +  asyncStart: common.mustCall((found) => {
    +    check(found);
    +    assert.strictEqual(found.error, undefined);
    +    assert.deepStrictEqual(found.result, expectedResult);
    +  }, 2),
    +  asyncEnd: common.mustCall((found) => {
    +    check(found);
    +    assert.strictEqual(found.error, undefined);
    +    assert.deepStrictEqual(found.result, expectedResult);
    +  }, 2),
    +  error: common.mustNotCall()
    +};
    +
    +channel.subscribe(handlers);
    +
    +channel.traceCallback(function(cb, err, res) {
    +  assert.deepStrictEqual(this, thisArg);
    +  setImmediate(cb, err, res);
    +}, 0, input, thisArg, common.mustCall((err, res) => {
    +  assert.strictEqual(err, null);
    +  assert.deepStrictEqual(res, expectedResult);
    +}), null, expectedResult);
    +
    +channel.tracePromise(function(value) {
    +  assert.deepStrictEqual(this, thisArg);
    +  return Promise.resolve(value);
    +}, input, thisArg, expectedResult).then(
    +  common.mustCall((value) => {
    +    assert.deepStrictEqual(value, expectedResult);
    +  }),
    +  common.mustNotCall()
    +);
    +
    +let failed = false;
    +try {
    +  channel.traceCallback(common.mustNotCall(), 0, input, thisArg, 1, 2, 3);
    +} catch (err) {
    +  assert.ok(/"callback" argument must be of type function/.test(err.message));
    +  failed = true;
    +}
    +assert.strictEqual(failed, true);
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js b/test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js
    new file mode 100644
    index 00000000000000..874433efd2cb4a
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js
    @@ -0,0 +1,29 @@
    +'use strict';
    +
    +const common = require('../common');
    +const { AsyncLocalStorage } = require('async_hooks');
    +const dc = require('diagnostics_channel');
    +const assert = require('assert');
    +
    +const channel = dc.tracingChannel('test');
    +const store = new AsyncLocalStorage();
    +
    +const firstContext = { foo: 'bar' };
    +const secondContext = { baz: 'buz' };
    +
    +channel.start.bindStore(store, common.mustCall(() => {
    +  return firstContext;
    +}));
    +
    +channel.asyncStart.bindStore(store, common.mustCall(() => {
    +  return secondContext;
    +}));
    +
    +assert.strictEqual(store.getStore(), undefined);
    +channel.traceCallback(common.mustCall((cb) => {
    +  assert.deepStrictEqual(store.getStore(), firstContext);
    +  setImmediate(cb);
    +}), 0, {}, null, common.mustCall(() => {
    +  assert.deepStrictEqual(store.getStore(), secondContext);
    +}));
    +assert.strictEqual(store.getStore(), undefined);
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js b/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
    new file mode 100644
    index 00000000000000..bd88e5553359bd
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
    @@ -0,0 +1,24 @@
    +'use strict';
    +
    +const common = require('../common');
    +const { setTimeout } = require('node:timers/promises');
    +const { AsyncLocalStorage } = require('async_hooks');
    +const dc = require('diagnostics_channel');
    +const assert = require('assert');
    +
    +const channel = dc.tracingChannel('test');
    +const store = new AsyncLocalStorage();
    +
    +const context = { foo: 'bar' };
    +
    +channel.start.bindStore(store, common.mustCall(() => {
    +  return context;
    +}));
    +
    +assert.strictEqual(store.getStore(), undefined);
    +channel.tracePromise(common.mustCall(async () => {
    +  assert.deepStrictEqual(store.getStore(), context);
    +  await setTimeout(1);
    +  assert.deepStrictEqual(store.getStore(), context);
    +}));
    +assert.strictEqual(store.getStore(), undefined);
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js b/test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js
    new file mode 100644
    index 00000000000000..3ffe5e6720c0e4
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-run-stores.js
    @@ -0,0 +1,21 @@
    +'use strict';
    +
    +const common = require('../common');
    +const { AsyncLocalStorage } = require('async_hooks');
    +const dc = require('diagnostics_channel');
    +const assert = require('assert');
    +
    +const channel = dc.tracingChannel('test');
    +const store = new AsyncLocalStorage();
    +
    +const context = { foo: 'bar' };
    +
    +channel.start.bindStore(store, common.mustCall(() => {
    +  return context;
    +}));
    +
    +assert.strictEqual(store.getStore(), undefined);
    +channel.traceSync(common.mustCall(() => {
    +  assert.deepStrictEqual(store.getStore(), context);
    +}));
    +assert.strictEqual(store.getStore(), undefined);
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js b/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
    new file mode 100644
    index 00000000000000..0965bf3fb495f0
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-sync-error.js
    @@ -0,0 +1,39 @@
    +'use strict';
    +
    +const common = require('../common');
    +const dc = require('diagnostics_channel');
    +const assert = require('assert');
    +
    +const channel = dc.tracingChannel('test');
    +
    +const expectedError = new Error('test');
    +const input = { foo: 'bar' };
    +const thisArg = { baz: 'buz' };
    +
    +function check(found) {
    +  assert.deepStrictEqual(found, input);
    +}
    +
    +const handlers = {
    +  start: common.mustCall(check),
    +  end: common.mustCall(check),
    +  asyncStart: common.mustNotCall(),
    +  asyncEnd: common.mustNotCall(),
    +  error: common.mustCall((found) => {
    +    check(found);
    +    assert.deepStrictEqual(found.error, expectedError);
    +  })
    +};
    +
    +channel.subscribe(handlers);
    +try {
    +  channel.traceSync(function(err) {
    +    assert.deepStrictEqual(this, thisArg);
    +    assert.strictEqual(err, expectedError);
    +    throw err;
    +  }, input, thisArg, expectedError);
    +
    +  throw new Error('It should not reach this error');
    +} catch (error) {
    +  assert.deepStrictEqual(error, expectedError);
    +}
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-sync.js b/test/parallel/test-diagnostics-channel-tracing-channel-sync.js
    new file mode 100644
    index 00000000000000..b28b47256b755d
    --- /dev/null
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-sync.js
    @@ -0,0 +1,46 @@
    +'use strict';
    +
    +const common = require('../common');
    +const dc = require('diagnostics_channel');
    +const assert = require('assert');
    +
    +const channel = dc.tracingChannel('test');
    +
    +const expectedResult = { foo: 'bar' };
    +const input = { foo: 'bar' };
    +const thisArg = { baz: 'buz' };
    +const arg = { baz: 'buz' };
    +
    +function check(found) {
    +  assert.strictEqual(found, input);
    +}
    +
    +const handlers = {
    +  start: common.mustCall(check),
    +  end: common.mustCall((found) => {
    +    check(found);
    +    assert.strictEqual(found.result, expectedResult);
    +  }),
    +  asyncStart: common.mustNotCall(),
    +  asyncEnd: common.mustNotCall(),
    +  error: common.mustNotCall()
    +};
    +
    +assert.strictEqual(channel.start.hasSubscribers, false);
    +channel.subscribe(handlers);
    +assert.strictEqual(channel.start.hasSubscribers, true);
    +const result1 = channel.traceSync(function(arg1) {
    +  assert.strictEqual(arg1, arg);
    +  assert.strictEqual(this, thisArg);
    +  return expectedResult;
    +}, input, thisArg, arg);
    +assert.strictEqual(result1, expectedResult);
    +
    +channel.unsubscribe(handlers);
    +assert.strictEqual(channel.start.hasSubscribers, false);
    +const result2 = channel.traceSync(function(arg1) {
    +  assert.strictEqual(arg1, arg);
    +  assert.strictEqual(this, thisArg);
    +  return expectedResult;
    +}, input, thisArg, arg);
    +assert.strictEqual(result2, expectedResult);
    diff --git a/tools/doc/type-parser.mjs b/tools/doc/type-parser.mjs
    index afca9383fc0b04..6073241f119543 100644
    --- a/tools/doc/type-parser.mjs
    +++ b/tools/doc/type-parser.mjs
    @@ -57,6 +57,8 @@ const customTypesMap = {
       'Module Namespace Object':
         'https://tc39.github.io/ecma262/#sec-module-namespace-exotic-objects',
     
    +  'AsyncLocalStorage': 'async_context.html#class-asynclocalstorage',
    +
       'AsyncHook': 'async_hooks.html#async_hookscreatehookcallbacks',
       'AsyncResource': 'async_hooks.html#class-asyncresource',
     
    @@ -108,6 +110,7 @@ const customTypesMap = {
       'dgram.Socket': 'dgram.html#class-dgramsocket',
     
       'Channel': 'diagnostics_channel.html#class-channel',
    +  'TracingChannel': 'diagnostics_channel.html#class-tracingchannel',
     
       'Domain': 'domain.html#class-domain',
     
    
    From 761cd1601b54cf7632c166140c839987fc4b112e Mon Sep 17 00:00:00 2001
    From: Filip Skokan 
    Date: Fri, 31 Mar 2023 19:49:09 +0200
    Subject: [PATCH 090/131] meta: fix notable-change comment label url
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47300
    Reviewed-By: Tierney Cyren 
    Reviewed-By: Michaël Zasso 
    ---
     .github/workflows/comment-labeled.yml | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/.github/workflows/comment-labeled.yml b/.github/workflows/comment-labeled.yml
    index 278a4e45b16210..228875e0cba30a 100644
    --- a/.github/workflows/comment-labeled.yml
    +++ b/.github/workflows/comment-labeled.yml
    @@ -11,7 +11,7 @@ env:
         If it should remain open, please leave a comment explaining why it should remain open.
       FAST_TRACK_MESSAGE: Fast-track has been requested by @${{ github.actor }}. Please 👍 to approve.
       NOTABLE_CHANGE_MESSAGE: |
    -    The ${{ github.event.label.url }} label has been added by @${{ github.actor }}.
    +    The https://github.com/nodejs/node/labels/notable-change label has been added by @${{ github.actor }}.
     
         Please suggest a text for the release notes if you'd like to include a more detailed summary, then proceed to update the PR description with the text or a link to the notable change suggested text comment.
     
    
    From f7569069182edbae0b3699b61d38d21777e15338 Mon Sep 17 00:00:00 2001
    From: Filip Skokan 
    Date: Fri, 31 Mar 2023 19:56:40 +0200
    Subject: [PATCH 091/131] test: run WPT files in parallel again
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47283
    Refs: https://github.com/nodejs/node/issues/47146
    Reviewed-By: Michaël Zasso 
    Reviewed-By: Yagiz Nizipli 
    ---
     Makefile                    |  1 +
     test/common/wpt.js          | 83 +++++++++++++++++++++++--------------
     test/wpt/testcfg.py         |  2 +-
     tools/merge-wpt-reports.mjs | 32 ++++++++++++++
     4 files changed, 87 insertions(+), 31 deletions(-)
     create mode 100644 tools/merge-wpt-reports.mjs
    
    diff --git a/Makefile b/Makefile
    index 0be0659d372d2d..d8a5b88a5235b1 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -603,6 +603,7 @@ test-wpt-report:
     	$(RM) -r out/wpt
     	mkdir -p out/wpt
     	WPT_REPORT=1 $(PYTHON) tools/test.py --shell $(NODE) $(PARALLEL_ARGS) wpt
    +	$(NODE) "$$PWD/tools/merge-wpt-reports.mjs"
     
     .PHONY: test-simple
     test-simple: | cctest # Depends on 'all'.
    diff --git a/test/common/wpt.js b/test/common/wpt.js
    index 57c409f5cc8a0f..342324182138ea 100644
    --- a/test/common/wpt.js
    +++ b/test/common/wpt.js
    @@ -10,6 +10,8 @@ const os = require('os');
     const { inspect } = require('util');
     const { Worker } = require('worker_threads');
     
    +const workerPath = path.join(__dirname, 'wpt/worker.js');
    +
     function getBrowserProperties() {
       const { node: version } = process.versions; // e.g. 18.13.0, 20.0.0-nightly202302078e6e215481
       const release = /^\d+\.\d+\.\d+$/.test(version);
    @@ -57,7 +59,8 @@ function codeUnitStr(char) {
     }
     
     class WPTReport {
    -  constructor() {
    +  constructor(path) {
    +    this.filename = `report-${path.replaceAll('/', '-')}.json`;
         this.results = [];
         this.time_start = Date.now();
       }
    @@ -96,26 +99,18 @@ class WPTReport {
           return result;
         });
     
    -    if (fs.existsSync('out/wpt/wptreport.json')) {
    -      const prev = JSON.parse(fs.readFileSync('out/wpt/wptreport.json'));
    -      this.results = [...prev.results, ...this.results];
    -      this.time_start = prev.time_start;
    -      this.time_end = Math.max(this.time_end, prev.time_end);
    -      this.run_info = prev.run_info;
    -    } else {
    -      /**
    -       * Return required and some optional properties
    -       * https://github.com/web-platform-tests/wpt.fyi/blob/60da175/api/README.md?plain=1#L331-L335
    -       */
    -      this.run_info = {
    -        product: 'node.js',
    -        ...getBrowserProperties(),
    -        revision: process.env.WPT_REVISION || 'unknown',
    -        os: getOs(),
    -      };
    -    }
    +    /**
    +     * Return required and some optional properties
    +     * https://github.com/web-platform-tests/wpt.fyi/blob/60da175/api/README.md?plain=1#L331-L335
    +     */
    +    this.run_info = {
    +      product: 'node.js',
    +      ...getBrowserProperties(),
    +      revision: process.env.WPT_REVISION || 'unknown',
    +      os: getOs(),
    +    };
     
    -    fs.writeFileSync('out/wpt/wptreport.json', JSON.stringify(this));
    +    fs.writeFileSync(`out/wpt/${this.filename}`, JSON.stringify(this));
       }
     }
     
    @@ -402,6 +397,29 @@ const kIncomplete = 'incomplete';
     const kUncaught = 'uncaught';
     const NODE_UNCAUGHT = 100;
     
    +const limit = (concurrency) => {
    +  let running = 0;
    +  const queue = [];
    +
    +  const execute = async (fn) => {
    +    if (running < concurrency) {
    +      running++;
    +      try {
    +        await fn();
    +      } finally {
    +        running--;
    +        if (queue.length > 0) {
    +          execute(queue.shift());
    +        }
    +      }
    +    } else {
    +      queue.push(fn);
    +    }
    +  };
    +
    +  return execute;
    +};
    +
     class WPTRunner {
       constructor(path) {
         this.path = path;
    @@ -425,7 +443,7 @@ class WPTRunner {
         this.scriptsModifier = null;
     
         if (process.env.WPT_REPORT != null) {
    -      this.report = new WPTReport();
    +      this.report = new WPTReport(path);
         }
       }
     
    @@ -543,6 +561,8 @@ class WPTRunner {
     
         this.inProgress = new Set(queue.map((spec) => spec.filename));
     
    +    const run = limit(os.availableParallelism());
    +
         for (const spec of queue) {
           const testFileName = spec.filename;
           const content = spec.getContent();
    @@ -576,15 +596,7 @@ class WPTRunner {
           this.scriptsModifier?.(obj);
           scriptsToRun.push(obj);
     
    -      /**
    -       * Example test with no META variant
    -       * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.https.any.js#L1-L4
    -       *
    -       * Example test with multiple META variants
    -       * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js#L1-L9
    -       */
    -      for (const variant of meta.variant || ['']) {
    -        const workerPath = path.join(__dirname, 'wpt/worker.js');
    +      const runWorker = async (variant) => {
             const worker = new Worker(workerPath, {
               execArgv: this.flags,
               workerData: {
    @@ -635,6 +647,17 @@ class WPTRunner {
             });
     
             await events.once(worker, 'exit').catch(() => {});
    +      };
    +
    +      /**
    +       * Example test with no META variant
    +       * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/sign_verify/hmac.https.any.js#L1-L4
    +       *
    +       * Example test with multiple META variants
    +       * https://github.com/nodejs/node/blob/03854f6/test/fixtures/wpt/WebCryptoAPI/generateKey/successes_RSASSA-PKCS1-v1_5.https.any.js#L1-L9
    +       */
    +      for (const variant of meta.variant || ['']) {
    +        run(() => runWorker(variant));
           }
         }
     
    diff --git a/test/wpt/testcfg.py b/test/wpt/testcfg.py
    index 3c356cf474d83c..db235699ddfe57 100644
    --- a/test/wpt/testcfg.py
    +++ b/test/wpt/testcfg.py
    @@ -3,4 +3,4 @@
     import testpy
     
     def GetConfiguration(context, root):
    -  return testpy.SimpleTestConfiguration(context, root, 'wpt')
    +  return testpy.ParallelTestConfiguration(context, root, 'wpt')
    diff --git a/tools/merge-wpt-reports.mjs b/tools/merge-wpt-reports.mjs
    new file mode 100644
    index 00000000000000..9199714f4b1032
    --- /dev/null
    +++ b/tools/merge-wpt-reports.mjs
    @@ -0,0 +1,32 @@
    +import * as fs from 'node:fs';
    +import * as path from 'node:path';
    +import * as url from 'node:url';
    +
    +const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
    +
    +const outDir = path.resolve(__dirname, '../out/wpt');
    +const files = fs.readdirSync(outDir);
    +const reports = files.filter((file) => file.endsWith('.json'));
    +
    +const startTimes = [];
    +const endTimes = [];
    +const results = [];
    +let runInfo;
    +
    +for (const file of reports) {
    +  const report = JSON.parse(fs.readFileSync(path.resolve(outDir, file)));
    +  fs.unlinkSync(path.resolve(outDir, file));
    +  results.push(...report.results);
    +  startTimes.push(report.time_start);
    +  endTimes.push(report.time_end);
    +  runInfo ||= report.run_info;
    +}
    +
    +const mergedReport = {
    +  time_start: Math.min(...startTimes),
    +  time_end: Math.max(...endTimes),
    +  run_info: runInfo,
    +  results,
    +};
    +
    +fs.writeFileSync(path.resolve(outDir, 'wptreport.json'), JSON.stringify(mergedReport));
    
    From 41933efeb3f2c45b42174028f84c05ff705a958f Mon Sep 17 00:00:00 2001
    From: Dmitry Vyukov 
    Date: Fri, 31 Mar 2023 22:47:16 +0200
    Subject: [PATCH 092/131] src: don't reset embeder signal handlers
    
    The only bad handler value we can inhert from before exec is SIG_IGN
    (any actual function pointer is reset to SIG_DFL during exec).
    If that's the case, we want to reset it back to SIG_DFL.
    However, it's also possible that an embeder (or an LD_PRELOAD-ed
    library) has set up own signal handler for own purposes
    (e.g. profiling). If that's the case, keep it intact.
    
    Fix #47013
    
    PR-URL: https://github.com/nodejs/node/pull/47188
    Reviewed-By: Ben Noordhuis 
    Reviewed-By: James M Snell 
    ---
     src/node.cc | 11 +++++++++++
     1 file changed, 11 insertions(+)
    
    diff --git a/src/node.cc b/src/node.cc
    index 6bdcbb3de9064b..924584477dd2a0 100644
    --- a/src/node.cc
    +++ b/src/node.cc
    @@ -447,6 +447,17 @@ void ResetSignalHandlers() {
         if (nr == SIGKILL || nr == SIGSTOP)
           continue;
         act.sa_handler = (nr == SIGPIPE || nr == SIGXFSZ) ? SIG_IGN : SIG_DFL;
    +    if (act.sa_handler == SIG_DFL) {
    +      // The only bad handler value we can inhert from before exec is SIG_IGN
    +      // (any actual function pointer is reset to SIG_DFL during exec).
    +      // If that's the case, we want to reset it back to SIG_DFL.
    +      // However, it's also possible that an embeder (or an LD_PRELOAD-ed
    +      // library) has set up own signal handler for own purposes
    +      // (e.g. profiling). If that's the case, we want to keep it intact.
    +      struct sigaction old;
    +      CHECK_EQ(0, sigaction(nr, nullptr, &old));
    +      if ((old.sa_flags & SA_SIGINFO) || old.sa_handler != SIG_IGN) continue;
    +    }
         CHECK_EQ(0, sigaction(nr, &act, nullptr));
       }
     #endif  // __POSIX__
    
    From c73e526e639bb2d0411fc7a4b0c79c7e9dbd68bf Mon Sep 17 00:00:00 2001
    From: "Node.js GitHub Bot" 
    Date: Fri, 31 Mar 2023 22:39:46 +0100
    Subject: [PATCH 093/131] deps: update timezone to 2023c
    
    PR-URL: https://github.com/nodejs/node/pull/47302
    Reviewed-By: Mohammed Keyvanzadeh 
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Michael Dawson 
    Reviewed-By: Richard Lau 
    Reviewed-By: Rich Trott 
    Reviewed-By: James M Snell 
    ---
     test/fixtures/tz-version.txt | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/test/fixtures/tz-version.txt b/test/fixtures/tz-version.txt
    index b74fa117a22328..7daa77e00d9977 100644
    --- a/test/fixtures/tz-version.txt
    +++ b/test/fixtures/tz-version.txt
    @@ -1 +1 @@
    -2022g
    +2023c
    
    From 97eb79615658fe67b146b57b7d7727af11101106 Mon Sep 17 00:00:00 2001
    From: Khafra <42794878+KhafraDev@users.noreply.github.com>
    Date: Fri, 31 Mar 2023 15:41:39 -0400
    Subject: [PATCH 094/131] benchmark: lower URL.canParse runs
    
    PR-URL: https://github.com/nodejs/node/pull/47351
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Stephen Belanger 
    Reviewed-By: James M Snell 
    ---
     benchmark/url/whatwgurl-canParse.js | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/benchmark/url/whatwgurl-canParse.js b/benchmark/url/whatwgurl-canParse.js
    index 65741d9884f106..3896d78578f2e3 100644
    --- a/benchmark/url/whatwgurl-canParse.js
    +++ b/benchmark/url/whatwgurl-canParse.js
    @@ -3,7 +3,7 @@ const common = require('../common.js');
     
     const bench = common.createBenchmark(main, {
       type: Object.keys(common.urls),
    -  n: [25e6],
    +  n: [1e6],
     });
     
     function main({ type, n }) {
    
    From 53f3eed879d3963c18394be5e999cade0e22dd77 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= 
    Date: Sat, 1 Apr 2023 09:08:22 +0200
    Subject: [PATCH 095/131] tools: disable Codecov commit statuses
    
    We don't want (yet?) to consider coverage as a requirement for
    landing a pull request.
    
    Refs: https://github.com/nodejs/node/pull/47285#issuecomment-1488892696
    Refs: https://docs.codecov.com/docs/commit-status#disabling-a-status
    PR-URL: https://github.com/nodejs/node/pull/47306
    Reviewed-By: Moshe Atlow 
    Reviewed-By: Filip Skokan 
    Reviewed-By: Richard Lau 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Jiawen Geng 
    Reviewed-By: Rich Trott 
    Reviewed-By: James M Snell 
    ---
     codecov.yml | 5 +++++
     1 file changed, 5 insertions(+)
    
    diff --git a/codecov.yml b/codecov.yml
    index 8160a5e229130d..80ee32b360abce 100644
    --- a/codecov.yml
    +++ b/codecov.yml
    @@ -12,3 +12,8 @@ codecov:
       notify:
         # Wait for all coverage builds:
         after_n_builds: 2
    +
    +coverage:
    +  status:
    +    project: off
    +    patch: off
    
    From 8425ea3babccc78420c45a1c94d3ae27cec7bb3d Mon Sep 17 00:00:00 2001
    From: Antoine du Hamel 
    Date: Sat, 1 Apr 2023 09:43:38 +0200
    Subject: [PATCH 096/131] esm: skip file: URL conversion to path when possible
    
    PR-URL: https://github.com/nodejs/node/pull/46305
    Reviewed-By: Geoffrey Booth 
    Reviewed-By: Guy Bedford 
    Reviewed-By: Jacob Smith 
    Reviewed-By: James M Snell 
    ---
     lib/internal/modules/esm/get_format.js  | 32 ++++++++++++++++++++++---
     lib/internal/modules/esm/translators.js |  7 ++----
     test/parallel/test-esm-url-extname.js   | 27 +++++++++++++++++++++
     3 files changed, 58 insertions(+), 8 deletions(-)
     create mode 100644 test/parallel/test-esm-url-extname.js
    
    diff --git a/lib/internal/modules/esm/get_format.js b/lib/internal/modules/esm/get_format.js
    index a9653d43173c05..d8cfb6df710540 100644
    --- a/lib/internal/modules/esm/get_format.js
    +++ b/lib/internal/modules/esm/get_format.js
    @@ -4,9 +4,10 @@ const {
       ObjectPrototypeHasOwnProperty,
       PromisePrototypeThen,
       PromiseResolve,
    +  StringPrototypeCharCodeAt,
       StringPrototypeSlice,
     } = primordials;
    -const { basename, extname, relative } = require('path');
    +const { basename, relative } = require('path');
     const { getOptionValue } = require('internal/options');
     const {
       extensionFormatMap,
    @@ -41,6 +42,30 @@ function getDataProtocolModuleFormat(parsed) {
       return mimeToFormat(mime);
     }
     
    +const DOT_CODE = 46;
    +const SLASH_CODE = 47;
    +
    +/**
    + * Returns the file extension from a URL. Should give similar result to
    + * `require('node:path').extname(require('node:url').fileURLToPath(url))`
    + * when used with a `file:` URL.
    + * @param {URL} url
    + * @returns {string}
    + */
    +function extname(url) {
    +  const { pathname } = url;
    +  for (let i = pathname.length - 1; i > 0; i--) {
    +    switch (StringPrototypeCharCodeAt(pathname, i)) {
    +      case SLASH_CODE:
    +        return '';
    +
    +      case DOT_CODE:
    +        return StringPrototypeCharCodeAt(pathname, i - 1) === SLASH_CODE ? '' : StringPrototypeSlice(pathname, i);
    +    }
    +  }
    +  return '';
    +}
    +
     /**
      * @param {URL} url
      * @param {{parentURL: string}} context
    @@ -48,8 +73,7 @@ function getDataProtocolModuleFormat(parsed) {
      * @returns {string}
      */
     function getFileProtocolModuleFormat(url, context, ignoreErrors) {
    -  const filepath = fileURLToPath(url);
    -  const ext = extname(filepath);
    +  const ext = extname(url);
       if (ext === '.js') {
         return getPackageType(url) === 'module' ? 'module' : 'commonjs';
       }
    @@ -59,6 +83,7 @@ function getFileProtocolModuleFormat(url, context, ignoreErrors) {
     
       // Explicit undefined return indicates load hook should rerun format check
       if (ignoreErrors) { return undefined; }
    +  const filepath = fileURLToPath(url);
       let suggestion = '';
       if (getPackageType(url) === 'module' && ext === '') {
         const config = getPackageScopeConfig(url);
    @@ -119,4 +144,5 @@ module.exports = {
       defaultGetFormat,
       defaultGetFormatWithoutErrors,
       extensionFormatMap,
    +  extname,
     };
    diff --git a/lib/internal/modules/esm/translators.js b/lib/internal/modules/esm/translators.js
    index e185e29ad046f3..267d89f1d44730 100644
    --- a/lib/internal/modules/esm/translators.js
    +++ b/lib/internal/modules/esm/translators.js
    @@ -35,8 +35,7 @@ const {
       Module: CJSModule,
       cjsParseCache,
     } = require('internal/modules/cjs/loader');
    -const internalURLModule = require('internal/url');
    -const { fileURLToPath, URL } = require('url');
    +const { fileURLToPath, URL } = require('internal/url');
     let debug = require('internal/util/debuglog').debuglog('esm', (fn) => {
       debug = fn;
     });
    @@ -147,9 +146,7 @@ translators.set('commonjs', async function commonjsStrategy(url, source,
                                                                 isMain) {
       debug(`Translating CJSModule ${url}`);
     
    -  let filename = internalURLModule.fileURLToPath(new URL(url));
    -  if (isWindows)
    -    filename = StringPrototypeReplaceAll(filename, '/', '\\');
    +  const filename = fileURLToPath(new URL(url));
     
       if (!cjsParse) await initCJSParse();
       const { module, exportNames } = cjsPreparseModuleExports(filename);
    diff --git a/test/parallel/test-esm-url-extname.js b/test/parallel/test-esm-url-extname.js
    new file mode 100644
    index 00000000000000..d40601243e609a
    --- /dev/null
    +++ b/test/parallel/test-esm-url-extname.js
    @@ -0,0 +1,27 @@
    +// Flags: --expose-internals
    +'use strict';
    +require('../common');
    +const assert = require('node:assert');
    +const path = require('node:path');
    +const { extname } = require('node:internal/modules/esm/get_format');
    +const { fileURLToPath } = require('node:url');
    +
    +[
    +  'file:///c:/path/to/file',
    +  'file:///c:/path/to/file.ext',
    +  'file:///c:/path.to/file.ext',
    +  'file:///c:/path.to/file',
    +  'file:///c:/path.to/.file',
    +  'file:///c:/path.to/.file.ext',
    +  'file:///c:/path/to/f.ext',
    +  'file:///c:/path/to/..ext',
    +  'file:///c:/path/to/..',
    +  'file:///c:/file',
    +  'file:///c:/file.ext',
    +  'file:///c:/.file',
    +  'file:///c:/.file.ext',
    +].forEach((input) => {
    +  const inputAsURL = new URL(input);
    +  const inputAsPath = fileURLToPath(inputAsURL);
    +  assert.strictEqual(extname(inputAsURL), path.extname(inputAsPath));
    +});
    
    From 8d08443ac994567b750dff2493c5407193dab629 Mon Sep 17 00:00:00 2001
    From: Vladimir de Turckheim 
    Date: Sat, 1 Apr 2023 14:54:43 +0200
    Subject: [PATCH 097/131] doc: remove Vladimir de Turckheim from Security
     release stewards
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47318
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Michaël Zasso 
    Reviewed-By: Matteo Collina 
    Reviewed-By: Rafael Gonzaga 
    Reviewed-By: Richard Lau 
    Reviewed-By: Darshan Sen 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Tobias Nießen 
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Michael Dawson 
    Reviewed-By: Marco Ippolito 
    Reviewed-By: Rich Trott 
    ---
     README.md                                    | 2 --
     doc/contributing/security-release-process.md | 3 +--
     2 files changed, 1 insertion(+), 4 deletions(-)
    
    diff --git a/README.md b/README.md
    index 0084841e921e86..e3539ef01dfc46 100644
    --- a/README.md
    +++ b/README.md
    @@ -806,8 +806,6 @@ releases on a rotation basis as outlined in the
     * Datadog
       * [bengl](https://github.com/bengl) -
         **Bryan English** <> (he/him)
    -  * [vdeturckheim](https://github.com/vdeturckheim) -
    -    **Vladimir de Turckheim** <> (he/him)
     * NearForm
       * [RafaelGSS](https://github.com/RafaelGSS) -
         **Rafael Gonzaga** <> (he/him)
    diff --git a/doc/contributing/security-release-process.md b/doc/contributing/security-release-process.md
    index 25f61c2ac1d4c7..517dc94348e1fc 100644
    --- a/doc/contributing/security-release-process.md
    +++ b/doc/contributing/security-release-process.md
    @@ -32,7 +32,6 @@ The current security stewards are documented in the main Node.js
     | Datadog      | Bryan           |              |
     | IBM          | Joe             |              |
     | NearForm     | Rafael          |              |
    -| Datadog      | Vladimir        |              |
     | NodeSource   | Juan            |              |
     | Red Hat      | Michael         |              |
     
    @@ -109,7 +108,7 @@ The current security stewards are documented in the main Node.js
       For more information see: https://nodejs.org/en/blog/vulnerability/month-year-security-releases/
       ```
       (Get access from existing manager: Matteo Collina, Rodd Vagg, Michael Dawson,
    -  Bryan English, Vladimir de Turckheim)
    +  Bryan English)
     
     * [ ] CC `oss-security@lists.openwall.com` on pre-release
     
    
    From d149a456110b7b57932f7edeeefa4380d134d682 Mon Sep 17 00:00:00 2001
    From: Khafra 
    Date: Sat, 1 Apr 2023 10:51:26 -0400
    Subject: [PATCH 098/131] buffer: fix blob range error with many chunks
    
    PR-URL: https://github.com/nodejs/node/pull/47320
    Reviewed-By: James M Snell 
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Mohammed Keyvanzadeh 
    ---
     lib/internal/blob.js       |  4 +++-
     test/parallel/test-blob.js | 13 +++++++++++++
     2 files changed, 16 insertions(+), 1 deletion(-)
    
    diff --git a/lib/internal/blob.js b/lib/internal/blob.js
    index 4188d999f7fde7..9c6be6981f5b88 100644
    --- a/lib/internal/blob.js
    +++ b/lib/internal/blob.js
    @@ -69,6 +69,8 @@ const {
       CountQueuingStrategy,
     } = require('internal/webstreams/queuingstrategies');
     
    +const { queueMicrotask } = require('internal/process/task_queues');
    +
     const kHandle = Symbol('kHandle');
     const kType = Symbol('kType');
     const kLength = Symbol('kLength');
    @@ -284,7 +286,7 @@ class Blob {
             }
             if (buffer !== undefined)
               buffers.push(buffer);
    -        readNext();
    +        queueMicrotask(() => readNext());
           });
         };
         readNext();
    diff --git a/test/parallel/test-blob.js b/test/parallel/test-blob.js
    index 68fd2d547a0e80..6b6ce70687660e 100644
    --- a/test/parallel/test-blob.js
    +++ b/test/parallel/test-blob.js
    @@ -315,3 +315,16 @@ assert.throws(() => new Blob({}), {
     
       delete Object.prototype.type;
     }
    +
    +(async () => {
    +  // Refs: https://github.com/nodejs/node/issues/47301
    +
    +  const random = Buffer.alloc(256).fill('0');
    +  const chunks = [];
    +
    +  for (let i = 0; i < random.length; i += 2) {
    +    chunks.push(random.subarray(i, i + 2));
    +  }
    +
    +  await new Blob(chunks).arrayBuffer();
    +})().then(common.mustCall());
    
    From 217fc568278cebff01f245511d42e85866f28a65 Mon Sep 17 00:00:00 2001
    From: Pulkit Gupta 
    Date: Sun, 2 Apr 2023 22:48:48 +0530
    Subject: [PATCH 099/131] test_runner: add code coverage support to spec
     reporter
    
    PR-URL: https://github.com/nodejs/node/pull/46674
    Reviewed-By: Benjamin Gruenbaum 
    Reviewed-By: Moshe Atlow 
    ---
     lib/internal/test_runner/reporter/spec.js |   5 +-
     lib/internal/test_runner/reporter/tap.js  |  39 +-----
     lib/internal/test_runner/utils.js         |  52 +++++++-
     test/parallel/test-runner-coverage.js     | 156 +++++++++++++++-------
     4 files changed, 163 insertions(+), 89 deletions(-)
    
    diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js
    index 2e3ba834351970..d991f563a315c8 100644
    --- a/lib/internal/test_runner/reporter/spec.js
    +++ b/lib/internal/test_runner/reporter/spec.js
    @@ -15,7 +15,7 @@ const assert = require('assert');
     const Transform = require('internal/streams/transform');
     const { inspectWithNoCustomRetry } = require('internal/errors');
     const { green, blue, red, white, gray } = require('internal/util/colors');
    -
    +const { getCoverageReport } = require('internal/test_runner/utils');
     
     const inspectOptions = { __proto__: null, colors: true, breakLength: Infinity };
     
    @@ -30,6 +30,7 @@ const symbols = {
       'test:fail': '\u2716 ',
       'test:pass': '\u2714 ',
       'test:diagnostic': '\u2139 ',
    +  'test:coverage': '\u2139 ',
       'arrow:right': '\u25B6 ',
       'hyphen:minus': '\uFE63 ',
     };
    @@ -115,6 +116,8 @@ class SpecReporter extends Transform {
             break;
           case 'test:diagnostic':
             return `${colors[type]}${this.#indent(data.nesting)}${symbols[type]}${data.message}${white}\n`;
    +      case 'test:coverage':
    +        return getCoverageReport(this.#indent(data.nesting), data.summary, symbols['test:coverage'], blue);
         }
       }
       _transform({ type, data }, encoding, callback) {
    diff --git a/lib/internal/test_runner/reporter/tap.js b/lib/internal/test_runner/reporter/tap.js
    index c7d5dd9bdb037f..e4061ac93fca42 100644
    --- a/lib/internal/test_runner/reporter/tap.js
    +++ b/lib/internal/test_runner/reporter/tap.js
    @@ -3,7 +3,6 @@ const {
       ArrayPrototypeForEach,
       ArrayPrototypeJoin,
       ArrayPrototypePush,
    -  NumberPrototypeToFixed,
       ObjectEntries,
       RegExpPrototypeSymbolReplace,
       SafeMap,
    @@ -13,7 +12,7 @@ const {
     } = primordials;
     const { inspectWithNoCustomRetry } = require('internal/errors');
     const { isError, kEmptyObject } = require('internal/util');
    -const { relative } = require('path');
    +const { getCoverageReport } = require('internal/test_runner/utils');
     const kDefaultIndent = '    '; // 4 spaces
     const kFrameStartRegExp = /^ {4}at /;
     const kLineBreakRegExp = /\n|\r\n/;
    @@ -49,7 +48,7 @@ async function * tapReporter(source) {
             yield `${indent(data.nesting)}# ${tapEscape(data.message)}\n`;
             break;
           case 'test:coverage':
    -        yield reportCoverage(data.nesting, data.summary);
    +        yield getCoverageReport(indent(data.nesting), data.summary, '# ', '');
             break;
         }
       }
    @@ -73,40 +72,6 @@ function reportTest(nesting, testNumber, status, name, skip, todo) {
       return line;
     }
     
    -function reportCoverage(nesting, summary) {
    -  const pad = indent(nesting);
    -  let report = `${pad}# start of coverage report\n`;
    -
    -  report += `${pad}# file | line % | branch % | funcs % | uncovered lines\n`;
    -
    -  for (let i = 0; i < summary.files.length; ++i) {
    -    const {
    -      path,
    -      coveredLinePercent,
    -      coveredBranchPercent,
    -      coveredFunctionPercent,
    -      uncoveredLineNumbers,
    -    } = summary.files[i];
    -    const relativePath = relative(summary.workingDirectory, path);
    -    const lines = NumberPrototypeToFixed(coveredLinePercent, 2);
    -    const branches = NumberPrototypeToFixed(coveredBranchPercent, 2);
    -    const functions = NumberPrototypeToFixed(coveredFunctionPercent, 2);
    -    const uncovered = ArrayPrototypeJoin(uncoveredLineNumbers, ', ');
    -
    -    report += `${pad}# ${relativePath} | ${lines} | ${branches} | ` +
    -              `${functions} | ${uncovered}\n`;
    -  }
    -
    -  const { totals } = summary;
    -  report += `${pad}# all files | ` +
    -            `${NumberPrototypeToFixed(totals.coveredLinePercent, 2)} | ` +
    -            `${NumberPrototypeToFixed(totals.coveredBranchPercent, 2)} | ` +
    -            `${NumberPrototypeToFixed(totals.coveredFunctionPercent, 2)} |\n`;
    -
    -  report += `${pad}# end of coverage report\n`;
    -  return report;
    -}
    -
     function reportDetails(nesting, data = kEmptyObject) {
       const { error, duration_ms } = data;
       const _indent = indent(nesting);
    diff --git a/lib/internal/test_runner/utils.js b/lib/internal/test_runner/utils.js
    index 06393395dde7d2..e97f92484b8b8d 100644
    --- a/lib/internal/test_runner/utils.js
    +++ b/lib/internal/test_runner/utils.js
    @@ -1,19 +1,22 @@
     'use strict';
     const {
    +  ArrayPrototypeJoin,
       ArrayPrototypeMap,
       ArrayPrototypePush,
       ObjectGetOwnPropertyDescriptor,
    +  NumberPrototypeToFixed,
       SafePromiseAllReturnArrayLike,
       RegExp,
       RegExpPrototypeExec,
       SafeMap,
     } = primordials;
     
    -const { basename } = require('path');
    +const { basename, relative } = require('path');
     const { createWriteStream } = require('fs');
     const { pathToFileURL } = require('internal/url');
     const { createDeferredPromise } = require('internal/util');
     const { getOptionValue } = require('internal/options');
    +const { green, red, white } = require('internal/util/colors');
     
     const {
       codes: {
    @@ -246,6 +249,52 @@ function countCompletedTest(test, harness = test.root.harness) {
       harness.counters.all++;
     }
     
    +
    +function coverageThreshold(coverage, color) {
    +  coverage = NumberPrototypeToFixed(coverage, 2);
    +  if (color) {
    +    if (coverage > 90) return `${green}${coverage}${color}`;
    +    if (coverage < 50) return `${red}${coverage}${color}`;
    +  }
    +  return coverage;
    +}
    +
    +function getCoverageReport(pad, summary, symbol, color) {
    +  let report = `${color}${pad}${symbol}start of coverage report\n`;
    +
    +  report += `${pad}${symbol}file | line % | branch % | funcs % | uncovered lines\n`;
    +
    +  for (let i = 0; i < summary.files.length; ++i) {
    +    const {
    +      path,
    +      coveredLinePercent,
    +      coveredBranchPercent,
    +      coveredFunctionPercent,
    +      uncoveredLineNumbers,
    +    } = summary.files[i];
    +    const relativePath = relative(summary.workingDirectory, path);
    +    const lines = coverageThreshold(coveredLinePercent, color);
    +    const branches = coverageThreshold(coveredBranchPercent, color);
    +    const functions = coverageThreshold(coveredFunctionPercent, color);
    +    const uncovered = ArrayPrototypeJoin(uncoveredLineNumbers, ', ');
    +
    +    report += `${pad}${symbol}${relativePath} | ${lines} | ${branches} | ` +
    +              `${functions} | ${uncovered}\n`;
    +  }
    +
    +  const { totals } = summary;
    +  report += `${pad}${symbol}all files | ` +
    +            `${coverageThreshold(totals.coveredLinePercent, color)} | ` +
    +            `${coverageThreshold(totals.coveredBranchPercent, color)} | ` +
    +            `${coverageThreshold(totals.coveredFunctionPercent, color)} |\n`;
    +
    +  report += `${pad}${symbol}end of coverage report\n`;
    +  if (color) {
    +    report += white;
    +  }
    +  return report;
    +}
    +
     module.exports = {
       convertStringToRegExp,
       countCompletedTest,
    @@ -255,4 +304,5 @@ module.exports = {
       isTestFailureError,
       parseCommandLine,
       setupTestReporters,
    +  getCoverageReport,
     };
    diff --git a/test/parallel/test-runner-coverage.js b/test/parallel/test-runner-coverage.js
    index ae4a539cff4991..01fc8667199e50 100644
    --- a/test/parallel/test-runner-coverage.js
    +++ b/test/parallel/test-runner-coverage.js
    @@ -18,7 +18,7 @@ function findCoverageFileForPid(pid) {
       });
     }
     
    -function getCoverageFixtureReport() {
    +function getTapCoverageFixtureReport() {
       const report = [
         '# start of coverage report',
         '# file | line % | branch % | funcs % | uncovered lines',
    @@ -37,64 +37,120 @@ function getCoverageFixtureReport() {
       return report;
     }
     
    -test('--experimental-test-coverage and --test cannot be combined', () => {
    -  // TODO(cjihrig): This test can be removed once multi-process code coverage
    -  // is supported.
    -  const args = ['--test', '--experimental-test-coverage'];
    -  const result = spawnSync(process.execPath, args);
    -
    -  // 9 is the documented exit code for an invalid CLI argument.
    -  assert.strictEqual(result.status, 9);
    -  assert.match(
    -    result.stderr.toString(),
    -    /--experimental-test-coverage cannot be used with --test/
    -  );
    -});
    +function getSpecCoverageFixtureReport() {
    +  const report = [
    +    '\u2139 start of coverage report',
    +    '\u2139 file | line % | branch % | funcs % | uncovered lines',
    +    '\u2139 test/fixtures/test-runner/coverage.js | 78.65 | 38.46 | 60.00 | 12, ' +
    +    '13, 16, 17, 18, 19, 20, 21, 22, 27, 39, 43, 44, 61, 62, 66, 67, 71, 72',
    +    '\u2139 test/fixtures/test-runner/invalid-tap.js | 100.00 | 100.00 | 100.00 | ',
    +    '\u2139 test/fixtures/v8-coverage/throw.js | 71.43 | 50.00 | 100.00 | 5, 6',
    +    '\u2139 all files | 78.35 | 43.75 | 60.00 |',
    +    '\u2139 end of coverage report',
    +  ].join('\n');
     
    -test('handles the inspector not being available', (t) => {
    -  if (process.features.inspector) {
    -    return;
    +  if (common.isWindows) {
    +    return report.replaceAll('/', '\\');
       }
     
    -  const fixture = fixtures.path('test-runner', 'coverage.js');
    -  const args = ['--experimental-test-coverage', fixture];
    -  const result = spawnSync(process.execPath, args);
    +  return report;
    +}
     
    -  assert(!result.stdout.toString().includes('# start of coverage report'));
    -  assert(result.stderr.toString().includes('coverage could not be collected'));
    -  assert.strictEqual(result.status, 0);
    -  assert(!findCoverageFileForPid(result.pid));
    -});
    +test('test coverage report', async (t) => {
    +  await t.test('--experimental-test-coverage and --test cannot be combined', () => {
    +    // TODO(cjihrig): This test can be removed once multi-process code coverage
    +    // is supported.
    +    const args = ['--test', '--experimental-test-coverage'];
    +    const result = spawnSync(process.execPath, args);
    +
    +    // 9 is the documented exit code for an invalid CLI argument.
    +    assert.strictEqual(result.status, 9);
    +    assert.match(
    +      result.stderr.toString(),
    +      /--experimental-test-coverage cannot be used with --test/
    +    );
    +  });
     
    -test('coverage is reported and dumped to NODE_V8_COVERAGE if present', (t) => {
    -  if (!process.features.inspector) {
    -    return;
    -  }
    +  await t.test('handles the inspector not being available', (t) => {
    +    if (process.features.inspector) {
    +      return;
    +    }
     
    -  const fixture = fixtures.path('test-runner', 'coverage.js');
    -  const args = ['--experimental-test-coverage', fixture];
    -  const options = { env: { ...process.env, NODE_V8_COVERAGE: tmpdir.path } };
    -  const result = spawnSync(process.execPath, args, options);
    -  const report = getCoverageFixtureReport();
    +    const fixture = fixtures.path('test-runner', 'coverage.js');
    +    const args = ['--experimental-test-coverage', fixture];
    +    const result = spawnSync(process.execPath, args);
     
    -  assert(result.stdout.toString().includes(report));
    -  assert.strictEqual(result.stderr.toString(), '');
    -  assert.strictEqual(result.status, 0);
    -  assert(findCoverageFileForPid(result.pid));
    +    assert(!result.stdout.toString().includes('# start of coverage report'));
    +    assert(result.stderr.toString().includes('coverage could not be collected'));
    +    assert.strictEqual(result.status, 0);
    +    assert(!findCoverageFileForPid(result.pid));
    +  });
     });
     
    -test('coverage is reported without NODE_V8_COVERAGE present', (t) => {
    -  if (!process.features.inspector) {
    -    return;
    -  }
    +test('test tap coverage reporter', async (t) => {
    +  await t.test('coverage is reported and dumped to NODE_V8_COVERAGE if present', (t) => {
    +    if (!process.features.inspector) {
    +      return;
    +    }
    +
    +    const fixture = fixtures.path('test-runner', 'coverage.js');
    +    const args = ['--experimental-test-coverage', '--test-reporter', 'tap', fixture];
    +    const options = { env: { ...process.env, NODE_V8_COVERAGE: tmpdir.path } };
    +    const result = spawnSync(process.execPath, args, options);
    +    const report = getTapCoverageFixtureReport();
    +
    +    assert(result.stdout.toString().includes(report));
    +    assert.strictEqual(result.stderr.toString(), '');
    +    assert.strictEqual(result.status, 0);
    +    assert(findCoverageFileForPid(result.pid));
    +  });
    +
    +  await t.test('coverage is reported without NODE_V8_COVERAGE present', (t) => {
    +    if (!process.features.inspector) {
    +      return;
    +    }
    +
    +    const fixture = fixtures.path('test-runner', 'coverage.js');
    +    const args = ['--experimental-test-coverage', '--test-reporter', 'tap', fixture];
    +    const result = spawnSync(process.execPath, args);
    +    const report = getTapCoverageFixtureReport();
     
    -  const fixture = fixtures.path('test-runner', 'coverage.js');
    -  const args = ['--experimental-test-coverage', fixture];
    -  const result = spawnSync(process.execPath, args);
    -  const report = getCoverageFixtureReport();
    +    assert(result.stdout.toString().includes(report));
    +    assert.strictEqual(result.stderr.toString(), '');
    +    assert.strictEqual(result.status, 0);
    +    assert(!findCoverageFileForPid(result.pid));
    +  });
    +});
     
    -  assert(result.stdout.toString().includes(report));
    -  assert.strictEqual(result.stderr.toString(), '');
    -  assert.strictEqual(result.status, 0);
    -  assert(!findCoverageFileForPid(result.pid));
    +test('test spec coverage reporter', async (t) => {
    +  await t.test('coverage is reported and dumped to NODE_V8_COVERAGE if present', (t) => {
    +    if (!process.features.inspector) {
    +      return;
    +    }
    +    const fixture = fixtures.path('test-runner', 'coverage.js');
    +    const args = ['--experimental-test-coverage', '--test-reporter', 'spec', fixture];
    +    const options = { env: { ...process.env, NODE_V8_COVERAGE: tmpdir.path } };
    +    const result = spawnSync(process.execPath, args, options);
    +    const report = getSpecCoverageFixtureReport();
    +
    +    assert(result.stdout.toString().includes(report));
    +    assert.strictEqual(result.stderr.toString(), '');
    +    assert.strictEqual(result.status, 0);
    +    assert(findCoverageFileForPid(result.pid));
    +  });
    +
    +  await t.test('coverage is reported without NODE_V8_COVERAGE present', (t) => {
    +    if (!process.features.inspector) {
    +      return;
    +    }
    +    const fixture = fixtures.path('test-runner', 'coverage.js');
    +    const args = ['--experimental-test-coverage', '--test-reporter', 'spec', fixture];
    +    const result = spawnSync(process.execPath, args);
    +    const report = getSpecCoverageFixtureReport();
    +
    +    assert(result.stdout.toString().includes(report));
    +    assert.strictEqual(result.stderr.toString(), '');
    +    assert.strictEqual(result.status, 0);
    +    assert(!findCoverageFileForPid(result.pid));
    +  });
     });
    
    From b46c975885c0e376d864160b8b399cb4c6ce9151 Mon Sep 17 00:00:00 2001
    From: Christian Clauss 
    Date: Sun, 2 Apr 2023 07:17:17 +0200
    Subject: [PATCH 100/131] build: remove Python pip `--no-user` option
    
    Python pip no longer has a `--no-user` option.
    
    Refs: https://github.com/nodejs/build/issues/3273
    Refs: https://github.com/pypa/pip/pull/5116/files
    PR-URL: https://github.com/nodejs/node/pull/47372
    Reviewed-By: Debadree Chatterjee 
    Reviewed-By: Moshe Atlow 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Richard Lau 
    ---
     Makefile | 8 ++++----
     1 file changed, 4 insertions(+), 4 deletions(-)
    
    diff --git a/Makefile b/Makefile
    index d8a5b88a5235b1..2ff9636105bfe0 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -1519,8 +1519,8 @@ cpplint: lint-cpp
     # Try with '--system' if it fails without; the system may have set '--user'
     lint-py-build:
     	$(info Pip installing flake8 linter on $(shell $(PYTHON) --version)...)
    -	$(PYTHON) -m pip install --no-user --upgrade -t tools/pip/site-packages flake8 || \
    -		$(PYTHON) -m pip install --no-user --upgrade --system -t tools/pip/site-packages flake8
    +	$(PYTHON) -m pip install --upgrade -t tools/pip/site-packages flake8 || \
    +		$(PYTHON) -m pip install --upgrade --system -t tools/pip/site-packages flake8
     
     .PHONY: lint-py
     ifneq ("","$(wildcard tools/pip/site-packages/flake8)")
    @@ -1539,8 +1539,8 @@ endif
     # Try with '--system' if it fails without; the system may have set '--user'
     lint-yaml-build:
     	$(info Pip installing yamllint on $(shell $(PYTHON) --version)...)
    -	$(PYTHON) -m pip install --no-user --upgrade -t tools/pip/site-packages yamllint || \
    -		$(PYTHON) -m pip install --no-user --upgrade --system -t tools/pip/site-packages yamllint
    +	$(PYTHON) -m pip install --upgrade -t tools/pip/site-packages yamllint || \
    +		$(PYTHON) -m pip install --upgrade --system -t tools/pip/site-packages yamllint
     
     .PHONY: lint-yaml
     # Lints the YAML files with yamllint.
    
    From 06fab90a43a19d50af0cd2f8cffb1a7a4b978b1d Mon Sep 17 00:00:00 2001
    From: Rich Trott 
    Date: Sun, 2 Apr 2023 22:17:22 -0700
    Subject: [PATCH 101/131] build: update stale action from v7 to v8
    
    PR-URL: https://github.com/nodejs/node/pull/47357
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Debadree Chatterjee 
    Reviewed-By: Mohammed Keyvanzadeh 
    Reviewed-By: Yagiz Nizipli 
    ---
     .github/workflows/close-stale-feature-requests.yml | 2 +-
     .github/workflows/close-stalled.yml                | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/.github/workflows/close-stale-feature-requests.yml b/.github/workflows/close-stale-feature-requests.yml
    index 0afed4b819a056..ac792a84e4e410 100644
    --- a/.github/workflows/close-stale-feature-requests.yml
    +++ b/.github/workflows/close-stale-feature-requests.yml
    @@ -39,7 +39,7 @@ jobs:
         if: github.repository == 'nodejs/node'
         runs-on: ubuntu-latest
         steps:
    -      - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b  # v7.0.0
    +      - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84  # v8.0.0
             with:
               repo-token: ${{ secrets.GITHUB_TOKEN }}
               days-before-stale: 180
    diff --git a/.github/workflows/close-stalled.yml b/.github/workflows/close-stalled.yml
    index b83df24780bf9f..8fec9f1d6c417b 100644
    --- a/.github/workflows/close-stalled.yml
    +++ b/.github/workflows/close-stalled.yml
    @@ -20,7 +20,7 @@ jobs:
         if: github.repository == 'nodejs/node'
         runs-on: ubuntu-latest
         steps:
    -      - uses: actions/stale@6f05e4244c9a0b2ed3401882b05d701dd0a7289b  # v7.0.0
    +      - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84  # v8.0.0
             with:
               repo-token: ${{ secrets.GITHUB_TOKEN }}
               days-before-close: 30
    
    From 193e12b0a3106f5249578bc7d7b11626e8a965a3 Mon Sep 17 00:00:00 2001
    From: Darshan Sen 
    Date: Mon, 3 Apr 2023 12:37:49 +0530
    Subject: [PATCH 102/131] sea: fix memory leak detected by asan
    
    Signed-off-by: Darshan Sen 
    PR-URL: https://github.com/nodejs/node/pull/47309
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Mohammed Keyvanzadeh 
    Reviewed-By: Joyee Cheung 
    Reviewed-By: Michael Dawson 
    Reviewed-By: James M Snell 
    ---
     src/node_sea.cc                               | 20 +++++++------------
     .../test-single-executable-application.js     |  5 -----
     2 files changed, 7 insertions(+), 18 deletions(-)
    
    diff --git a/src/node_sea.cc b/src/node_sea.cc
    index 18b661ce4ff31d..fa7fb86b0ed05c 100644
    --- a/src/node_sea.cc
    +++ b/src/node_sea.cc
    @@ -91,19 +91,13 @@ std::tuple FixupArgsForSEA(int argc, char** argv) {
       // Repeats argv[0] at position 1 on argv as a replacement for the missing
       // entry point file path.
       if (IsSingleExecutable()) {
    -    char** new_argv = new char*[argc + 2];
    -    int new_argc = 0;
    -    new_argv[new_argc++] = argv[0];
    -    new_argv[new_argc++] = argv[0];
    -
    -    for (int i = 1; i < argc; ++i) {
    -      new_argv[new_argc++] = argv[i];
    -    }
    -
    -    new_argv[new_argc] = nullptr;
    -
    -    argc = new_argc;
    -    argv = new_argv;
    +    static std::vector new_argv;
    +    new_argv.reserve(argc + 2);
    +    new_argv.emplace_back(argv[0]);
    +    new_argv.insert(new_argv.end(), argv, argv + argc);
    +    new_argv.emplace_back(nullptr);
    +    argc = new_argv.size() - 1;
    +    argv = new_argv.data();
       }
     
       return {argc, argv};
    diff --git a/test/parallel/test-single-executable-application.js b/test/parallel/test-single-executable-application.js
    index 902093dc6e412d..9ceb61883e1664 100644
    --- a/test/parallel/test-single-executable-application.js
    +++ b/test/parallel/test-single-executable-application.js
    @@ -16,11 +16,6 @@ if (!process.config.variables.single_executable_application)
     if (!['darwin', 'win32', 'linux'].includes(process.platform))
       common.skip(`Unsupported platform ${process.platform}.`);
     
    -if (process.platform === 'linux' && process.config.variables.asan) {
    -  // Source of the memory leak - https://github.com/nodejs/node/blob/da0bc6db98cef98686122ea1e2cd2dbd2f52d123/src/node_sea.cc#L94.
    -  common.skip('Running the resultant binary fails because of a memory leak ASAN error.');
    -}
    -
     if (process.platform === 'linux' && process.config.variables.is_debug === 1)
       common.skip('Running the resultant binary fails with `Couldn\'t read target executable"`.');
     
    
    From b9e6584f025ded51fa5b30fa5ae874442b8c8799 Mon Sep 17 00:00:00 2001
    From: Debadree Chatterjee 
    Date: Sat, 1 Apr 2023 12:40:43 +0530
    Subject: [PATCH 103/131] tools: add a at here tag for slack messages
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47358
    Reviewed-By: Antoine du Hamel 
    Reviewed-By: Richard Lau 
    Reviewed-By: Michaël Zasso 
    Reviewed-By: Rich Trott 
    ---
     .github/workflows/notify-on-push.yml | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml
    index 36e62ee53c7334..3fc40d2f18aff8 100644
    --- a/.github/workflows/notify-on-push.yml
    +++ b/.github/workflows/notify-on-push.yml
    @@ -20,7 +20,7 @@ jobs:
               SLACK_ICON: https://github.com/nodejs.png?size=48
               SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }}
               SLACK_MESSAGE: |
    -            A commit was force-pushed to  by 
    +            @here A commit was force-pushed to  by 
     
                 Before: 
                 After: 
    @@ -62,7 +62,7 @@ jobs:
               SLACK_ICON: https://github.com/nodejs.png?size=48
               SLACK_TITLE: Invalid commit was pushed to ${{ github.repository.default_branch }}
               SLACK_MESSAGE: |
    -            A commit lacking the expected metadata was pushed to  by .
    +            @here A commit lacking the expected metadata was pushed to  by .
     
                 Before: 
                 After: 
    
    From 0fd479359d2183bfa89b28b4929d8d8b717ade2d Mon Sep 17 00:00:00 2001
    From: Debadree Chatterjee 
    Date: Sat, 1 Apr 2023 15:15:05 +0530
    Subject: [PATCH 104/131] tools: use ref_name to get branch pushed on
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47358
    Reviewed-By: Antoine du Hamel 
    Reviewed-By: Richard Lau 
    Reviewed-By: Michaël Zasso 
    Reviewed-By: Rich Trott 
    ---
     .github/workflows/notify-on-push.yml | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml
    index 3fc40d2f18aff8..d1899984527ba4 100644
    --- a/.github/workflows/notify-on-push.yml
    +++ b/.github/workflows/notify-on-push.yml
    @@ -20,7 +20,7 @@ jobs:
               SLACK_ICON: https://github.com/nodejs.png?size=48
               SLACK_TITLE: ${{ github.actor }} force-pushed to ${{ github.ref }}
               SLACK_MESSAGE: |
    -            @here A commit was force-pushed to  by 
    +            @here A commit was force-pushed to  by 
     
                 Before: 
                 After: 
    @@ -62,7 +62,7 @@ jobs:
               SLACK_ICON: https://github.com/nodejs.png?size=48
               SLACK_TITLE: Invalid commit was pushed to ${{ github.repository.default_branch }}
               SLACK_MESSAGE: |
    -            @here A commit lacking the expected metadata was pushed to  by .
    +            @here A commit lacking the expected metadata was pushed to  by .
     
                 Before: 
                 After: 
    
    From e4141e2e8259f8e418249ced5dbc8543c13449f6 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= 
    Date: Mon, 3 Apr 2023 10:00:40 +0200
    Subject: [PATCH 105/131] src: remove unused variable in crypto_x509.cc
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47344
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Richard Lau 
    Reviewed-By: Tobias Nießen 
    Reviewed-By: James M Snell 
    Reviewed-By: Luigi Pinca 
    ---
     src/crypto/crypto_x509.cc | 1 -
     1 file changed, 1 deletion(-)
    
    diff --git a/src/crypto/crypto_x509.cc b/src/crypto/crypto_x509.cc
    index e1b713644a1fa7..c2d4f44f285398 100644
    --- a/src/crypto/crypto_x509.cc
    +++ b/src/crypto/crypto_x509.cc
    @@ -136,7 +136,6 @@ MaybeLocal X509Certificate::GetPeerCert(
         const SSLPointer& ssl,
         GetPeerCertificateFlag flag) {
       ClearErrorOnReturn clear_error_on_return;
    -  Local obj;
       MaybeLocal maybe_cert;
     
       bool is_server =
    
    From ab88420870bda00304177f15b30ef33fdb03b0de Mon Sep 17 00:00:00 2001
    From: Rafael Gonzaga 
    Date: Mon, 3 Apr 2023 06:28:10 -0300
    Subject: [PATCH 106/131] doc: clarify reports are only evaluated on active
     versions
    
    PR-URL: https://github.com/nodejs/node/pull/47341
    Reviewed-By: Richard Lau 
    Reviewed-By: Beth Griggs 
    Reviewed-By: James M Snell 
    ---
     SECURITY.md | 11 ++++++-----
     1 file changed, 6 insertions(+), 5 deletions(-)
    
    diff --git a/SECURITY.md b/SECURITY.md
    index acf83434de4e79..02c9f83aa32c1a 100644
    --- a/SECURITY.md
    +++ b/SECURITY.md
    @@ -31,11 +31,12 @@ maintainers.
     Here is the security disclosure policy for Node.js
     
     * The security report is received and is assigned a primary handler. This
    -  person will coordinate the fix and release process. The problem is confirmed
    -  and a list of all affected versions is determined. Code is audited to find
    -  any potential similar problems. Fixes are prepared for all releases which are
    -  still under maintenance. These fixes are not committed to the public
    -  repository but rather held locally pending the announcement.
    +  person will coordinate the fix and release process. The problem is validated
    +  against all supported Node.js versions. Once confirmed, a list of all affected
    +  versions is determined. Code is audited to find any potential similar
    +  problems. Fixes are prepared for all supported releases.
    +  These fixes are not committed to the public repository but rather held locally
    +  pending the announcement.
     
     * A suggested embargo date for this vulnerability is chosen and a CVE (Common
       Vulnerabilities and Exposures (CVE®)) is requested for the vulnerability.
    
    From 66b9e39c775a2e6e9aa1be5046219406daeb4d5f Mon Sep 17 00:00:00 2001
    From: Filip Skokan 
    Date: Sun, 2 Apr 2023 23:02:16 +0200
    Subject: [PATCH 107/131] tools: ensure failed daily wpt run still generates a
     report
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47376
    Reviewed-By: Michaël Zasso 
    Reviewed-By: Yagiz Nizipli 
    ---
     Makefile | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/Makefile b/Makefile
    index 2ff9636105bfe0..1fa35574ed84d4 100644
    --- a/Makefile
    +++ b/Makefile
    @@ -602,7 +602,7 @@ test-wpt: all
     test-wpt-report:
     	$(RM) -r out/wpt
     	mkdir -p out/wpt
    -	WPT_REPORT=1 $(PYTHON) tools/test.py --shell $(NODE) $(PARALLEL_ARGS) wpt
    +	-WPT_REPORT=1 $(PYTHON) tools/test.py --shell $(NODE) $(PARALLEL_ARGS) wpt
     	$(NODE) "$$PWD/tools/merge-wpt-reports.mjs"
     
     .PHONY: test-simple
    
    From e8818c65576f8545802c1fcf8f8b8acf954bf664 Mon Sep 17 00:00:00 2001
    From: Yagiz Nizipli 
    Date: Mon, 3 Apr 2023 11:59:46 -0400
    Subject: [PATCH 108/131] url: improve URLSearchParams creation performance
    
    PR-URL: https://github.com/nodejs/node/pull/47190
    Reviewed-By: Tiancheng "Timothy" Gu 
    ---
     lib/internal/url.js                           | 70 ++++++++++++-------
     ...twg-url-custom-searchparams-constructor.js |  4 ++
     2 files changed, 49 insertions(+), 25 deletions(-)
    
    diff --git a/lib/internal/url.js b/lib/internal/url.js
    index c932430c48ee56..e27fcadad326bf 100644
    --- a/lib/internal/url.js
    +++ b/lib/internal/url.js
    @@ -2,6 +2,7 @@
     
     const {
       Array,
    +  ArrayIsArray,
       ArrayPrototypeJoin,
       ArrayPrototypeMap,
       ArrayPrototypePush,
    @@ -151,13 +152,18 @@ function isURLSearchParams(self) {
     }
     
     class URLSearchParams {
    +  [searchParams] = [];
    +
    +  // "associated url object"
    +  [context] = null;
    +
       // URL Standard says the default value is '', but as undefined and '' have
       // the same result, undefined is used to prevent unnecessary parsing.
       // Default parameter is necessary to keep URLSearchParams.length === 0 in
       // accordance with Web IDL spec.
       constructor(init = undefined) {
    -    if (init === null || init === undefined) {
    -      this[searchParams] = [];
    +    if (init == null) {
    +      // Do nothing
         } else if (typeof init === 'object' || typeof init === 'function') {
           const method = init[SymbolIterator];
           if (method === this[SymbolIterator]) {
    @@ -165,38 +171,55 @@ class URLSearchParams {
             // shortcut to avoid having to go through the costly generic iterator.
             const childParams = init[searchParams];
             this[searchParams] = childParams.slice();
    -      } else if (method !== null && method !== undefined) {
    +      } else if (method != null) {
    +        // Sequence>
             if (typeof method !== 'function') {
               throw new ERR_ARG_NOT_ITERABLE('Query pairs');
             }
     
    -        // Sequence>
    -        // Note: per spec we have to first exhaust the lists then process them
    -        const pairs = [];
    +        // The following implementationd differs from the URL specification:
    +        // Sequences must first be converted from ECMAScript objects before
    +        // and operations are done on them, and the operation of converting
    +        // the sequences would first exhaust the iterators. If the iterator
    +        // returns something invalid in the middle, whether it would be called
    +        // after that would be an observable change to the users.
    +        // Exhausting the iterator and later converting them to USVString comes
    +        // with a significant cost (~40-80%). In order optimize URLSearchParams
    +        // creation duration, Node.js merges the iteration and converting
    +        // iterations into a single iteration.
             for (const pair of init) {
    -          if ((typeof pair !== 'object' && typeof pair !== 'function') ||
    -              pair === null ||
    -              typeof pair[SymbolIterator] !== 'function') {
    +          if (pair == null) {
                 throw new ERR_INVALID_TUPLE('Each query pair', '[name, value]');
    -          }
    -          const convertedPair = [];
    -          for (const element of pair)
    -            ArrayPrototypePush(convertedPair, toUSVString(element));
    -          ArrayPrototypePush(pairs, convertedPair);
    -        }
    +          } else if (ArrayIsArray(pair)) {
    +            // If innerSequence's size is not 2, then throw a TypeError.
    +            if (pair.length !== 2) {
    +              throw new ERR_INVALID_TUPLE('Each query pair', '[name, value]');
    +            }
    +            // Append (innerSequence[0], innerSequence[1]) to querys list.
    +            ArrayPrototypePush(this[searchParams], toUSVString(pair[0]), toUSVString(pair[1]));
    +          } else {
    +            if (((typeof pair !== 'object' && typeof pair !== 'function') ||
    +                typeof pair[SymbolIterator] !== 'function')) {
    +              throw new ERR_INVALID_TUPLE('Each query pair', '[name, value]');
    +            }
     
    -        this[searchParams] = [];
    -        for (const pair of pairs) {
    -          if (pair.length !== 2) {
    -            throw new ERR_INVALID_TUPLE('Each query pair', '[name, value]');
    +            let length = 0;
    +
    +            for (const element of pair) {
    +              length++;
    +              ArrayPrototypePush(this[searchParams], toUSVString(element));
    +            }
    +
    +            // If innerSequence's size is not 2, then throw a TypeError.
    +            if (length !== 2) {
    +              throw new ERR_INVALID_TUPLE('Each query pair', '[name, value]');
    +            }
               }
    -          ArrayPrototypePush(this[searchParams], pair[0], pair[1]);
             }
           } else {
             // Record
             // Need to use reflection APIs for full spec compliance.
             const visited = {};
    -        this[searchParams] = [];
             const keys = ReflectOwnKeys(init);
             for (let i = 0; i < keys.length; i++) {
               const key = keys[i];
    @@ -218,13 +241,10 @@ class URLSearchParams {
             }
           }
         } else {
    -      // USVString
    +      // https://url.spec.whatwg.org/#dom-urlsearchparams-urlsearchparams
           init = toUSVString(init);
           this[searchParams] = init ? parseParams(init) : [];
         }
    -
    -    // "associated url object"
    -    this[context] = null;
       }
     
       [inspect.custom](recurseTimes, ctx) {
    diff --git a/test/parallel/test-whatwg-url-custom-searchparams-constructor.js b/test/parallel/test-whatwg-url-custom-searchparams-constructor.js
    index 878caed43ff0ab..1b7409680b2a2a 100644
    --- a/test/parallel/test-whatwg-url-custom-searchparams-constructor.js
    +++ b/test/parallel/test-whatwg-url-custom-searchparams-constructor.js
    @@ -47,6 +47,10 @@ function makeIterableFunc(array) {
       assert.throws(() => new URLSearchParams([null]), tupleError);
       assert.throws(() => new URLSearchParams([{ [Symbol.iterator]: 42 }]),
                     tupleError);
    +
    +  assert.throws(() => new URLSearchParams(
    +    makeIterableFunc([['key', 'val', 'val2']])
    +  ), tupleError);
     }
     
     {
    
    From 6ef0e0389c8b75e2e5e69ce2e10dfe01265bfdb5 Mon Sep 17 00:00:00 2001
    From: Stephen Belanger 
    Date: Mon, 3 Apr 2023 09:44:50 -0700
    Subject: [PATCH 109/131] test: verify tracePromise does not do runStores
    
    PR-URL: https://github.com/nodejs/node/pull/47349
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: James M Snell 
    Reviewed-By: Rich Trott 
    ---
     ...-channel-tracing-channel-promise-run-stores.js | 15 +++++++++++----
     1 file changed, 11 insertions(+), 4 deletions(-)
    
    diff --git a/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js b/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
    index bd88e5553359bd..5292a6fe096bae 100644
    --- a/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
    +++ b/test/parallel/test-diagnostics-channel-tracing-channel-promise-run-stores.js
    @@ -9,16 +9,23 @@ const assert = require('assert');
     const channel = dc.tracingChannel('test');
     const store = new AsyncLocalStorage();
     
    -const context = { foo: 'bar' };
    +const firstContext = { foo: 'bar' };
    +const secondContext = { baz: 'buz' };
     
     channel.start.bindStore(store, common.mustCall(() => {
    -  return context;
    +  return firstContext;
    +}));
    +
    +channel.asyncStart.bindStore(store, common.mustNotCall(() => {
    +  return secondContext;
     }));
     
     assert.strictEqual(store.getStore(), undefined);
     channel.tracePromise(common.mustCall(async () => {
    -  assert.deepStrictEqual(store.getStore(), context);
    +  assert.deepStrictEqual(store.getStore(), firstContext);
       await setTimeout(1);
    -  assert.deepStrictEqual(store.getStore(), context);
    +  // Should _not_ switch to second context as promises don't have an "after"
    +  // point at which to do a runStores.
    +  assert.deepStrictEqual(store.getStore(), firstContext);
     }));
     assert.strictEqual(store.getStore(), undefined);
    
    From 412e615893990964776396f5fd1c2954b0a2efb8 Mon Sep 17 00:00:00 2001
    From: Santiago Gimeno 
    Date: Mon, 3 Apr 2023 19:02:26 +0200
    Subject: [PATCH 110/131] lib: define Event.isTrusted in the prototype
    
    Don't conform to the spec with isTrusted. The spec defines it as
    `LegacyUnforgeable` but defining it in the constructor has a big
    performance impact and the property doesn't seem to be useful outside of
    browsers.
    
    Refs: https://github.com/nodejs/performance/issues/32
    PR-URL: https://github.com/nodejs/node/pull/46974
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Ben Noordhuis 
    Reviewed-By: James M Snell 
    ---
     lib/internal/event_target.js             | 7 +++++--
     test/parallel/test-abortcontroller.js    | 6 +++---
     test/parallel/test-events-customevent.js | 2 +-
     test/parallel/test-eventtarget.js        | 2 +-
     test/wpt/status/dom/events.json          | 7 +++++++
     5 files changed, 17 insertions(+), 7 deletions(-)
    
    diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js
    index 60c5eb80ceabd3..fa689ef38cee01 100644
    --- a/lib/internal/event_target.js
    +++ b/lib/internal/event_target.js
    @@ -119,8 +119,6 @@ class Event {
           isTrustedSet.add(this);
         }
     
    -    // isTrusted is special (LegacyUnforgeable)
    -    ObjectDefineProperty(this, 'isTrusted', isTrustedDescriptor);
         this[kTarget] = null;
         this[kIsBeingDispatched] = false;
       }
    @@ -343,6 +341,11 @@ ObjectDefineProperties(
         eventPhase: kEnumerableProperty,
         cancelBubble: kEnumerableProperty,
         stopPropagation: kEnumerableProperty,
    +    // Don't conform to the spec with isTrusted. The spec defines it as
    +    // LegacyUnforgeable but defining it in the constructor has a big
    +    // performance impact and the property doesn't seem to be useful outside of
    +    // browsers.
    +    isTrusted: isTrustedDescriptor,
       });
     
     function isCustomEvent(value) {
    diff --git a/test/parallel/test-abortcontroller.js b/test/parallel/test-abortcontroller.js
    index ce6c72f4294043..4099a018df7daf 100644
    --- a/test/parallel/test-abortcontroller.js
    +++ b/test/parallel/test-abortcontroller.js
    @@ -57,9 +57,9 @@ const { setTimeout: sleep } = require('timers/promises');
       }));
       first.abort();
       second.abort();
    -  const firstTrusted = Reflect.getOwnPropertyDescriptor(ev1, 'isTrusted').get;
    -  const secondTrusted = Reflect.getOwnPropertyDescriptor(ev2, 'isTrusted').get;
    -  const untrusted = Reflect.getOwnPropertyDescriptor(ev3, 'isTrusted').get;
    +  const firstTrusted = Reflect.getOwnPropertyDescriptor(Object.getPrototypeOf(ev1), 'isTrusted').get;
    +  const secondTrusted = Reflect.getOwnPropertyDescriptor(Object.getPrototypeOf(ev2), 'isTrusted').get;
    +  const untrusted = Reflect.getOwnPropertyDescriptor(Object.getPrototypeOf(ev3), 'isTrusted').get;
       strictEqual(firstTrusted, secondTrusted);
       strictEqual(untrusted, firstTrusted);
     }
    diff --git a/test/parallel/test-events-customevent.js b/test/parallel/test-events-customevent.js
    index dc4acb312c1131..2261240c526639 100644
    --- a/test/parallel/test-events-customevent.js
    +++ b/test/parallel/test-events-customevent.js
    @@ -187,7 +187,7 @@ const { Event, EventTarget, CustomEvent } = require('internal/event_target');
     }
     {
       const ev = new CustomEvent('foo');
    -  deepStrictEqual(Object.keys(ev), ['isTrusted']);
    +  strictEqual(ev.isTrusted, false);
     }
     
     // Works with EventTarget
    diff --git a/test/parallel/test-eventtarget.js b/test/parallel/test-eventtarget.js
    index f6208a3b8b8844..ce372f7d6fc8f8 100644
    --- a/test/parallel/test-eventtarget.js
    +++ b/test/parallel/test-eventtarget.js
    @@ -126,7 +126,7 @@ let asyncTest = Promise.resolve();
     }
     {
       const ev = new Event('foo');
    -  deepStrictEqual(Object.keys(ev), ['isTrusted']);
    +  strictEqual(ev.isTrusted, false);
     }
     {
       const eventTarget = new EventTarget();
    diff --git a/test/wpt/status/dom/events.json b/test/wpt/status/dom/events.json
    index 90825d76a358d6..c0f4104c452b85 100644
    --- a/test/wpt/status/dom/events.json
    +++ b/test/wpt/status/dom/events.json
    @@ -11,6 +11,13 @@
       "Event-dispatch-listener-order.window.js": {
         "skip": "document is not defined"
       },
    +  "Event-isTrusted.any.js": {
    +    "fail": {
    +      "expected": [
    +        "Event-isTrusted"
    +      ]
    +    }
    +  },
       "EventListener-addEventListener.sub.window.js": {
         "skip": "document is not defined"
       },
    
    From af3b661bebccd1a7f8929280c54ea8ffd74ac1d5 Mon Sep 17 00:00:00 2001
    From: Deokjin Kim 
    Date: Tue, 4 Apr 2023 08:52:21 +0900
    Subject: [PATCH 111/131] benchmark: fix invalid requirementsURL
    
    Location of `writing-and-running-benchmarks.md` is `doc/contributing`
    (not benchmark).
    
    PR-URL: https://github.com/nodejs/node/pull/47378
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Mohammed Keyvanzadeh 
    Reviewed-By: Luigi Pinca 
    ---
     benchmark/_http-benchmarkers.js | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/benchmark/_http-benchmarkers.js b/benchmark/_http-benchmarkers.js
    index 3c8997e73a8d2d..ae5429fa721750 100644
    --- a/benchmark/_http-benchmarkers.js
    +++ b/benchmark/_http-benchmarkers.js
    @@ -5,7 +5,7 @@ const path = require('path');
     const fs = require('fs');
     
     const requirementsURL =
    -  'https://github.com/nodejs/node/blob/HEAD/benchmark/writing-and-running-benchmarks.md#http-benchmark-requirements';
    +  'https://github.com/nodejs/node/blob/HEAD/doc/contributing/writing-and-running-benchmarks.md#http-benchmark-requirements';
     
     // The port used by servers and wrk
     exports.PORT = Number(process.env.PORT) || 12346;
    
    From 122c7ff419a5415b0110f4572f9f76b73a828134 Mon Sep 17 00:00:00 2001
    From: Chengzhong Wu 
    Date: Tue, 4 Apr 2023 09:13:37 +0800
    Subject: [PATCH 112/131] src: bootstrap prepare stack trace callback in shadow
     realm
    
    Bootstrap per-realm callbacks like `prepare_stack_trace_callback` in
    the ShadowRealm. This enables stack trace decoration in the ShadowRealm.
    
    PR-URL: https://github.com/nodejs/node/pull/47107
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Matteo Collina 
    Reviewed-By: Joyee Cheung 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: James M Snell 
    ---
     .github/CODEOWNERS                            |  2 +-
     lib/assert.js                                 |  2 +-
     lib/internal/bootstrap/node.js                | 28 ++--------
     .../bootstrap/{loaders.js => realm.js}        | 35 ++++++++++--
     lib/internal/main/mksnapshot.js               |  2 +-
     lib/internal/modules/cjs/loader.js            |  2 +-
     lib/internal/modules/esm/hooks.js             |  2 +-
     lib/internal/modules/esm/resolve.js           |  2 +-
     lib/internal/modules/helpers.js               |  2 +-
     lib/internal/process/pre_execution.js         |  2 +-
     lib/internal/util/inspect.js                  |  2 +-
     lib/repl.js                                   |  2 +-
     src/api/environment.cc                        | 21 ++++----
     src/node_builtins.cc                          | 12 ++---
     src/node_errors.cc                            | 10 ++--
     src/node_realm.cc                             | 18 +++----
     src/node_shadow_realm.cc                      | 19 ++++---
     .../test-loaders-hidden-from-users.js         |  6 +--
     .../test-inspector-inspect-brk-node.js        |  2 +-
     .../test-shadow-realm-prepare-stack-trace.js  | 53 +++++++++++++++++++
     20 files changed, 141 insertions(+), 83 deletions(-)
     rename lib/internal/bootstrap/{loaders.js => realm.js} (91%)
     create mode 100644 test/parallel/test-shadow-realm-prepare-stack-trace.js
    
    diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
    index 0a7df2ac7d8565..89fe59412773d0 100644
    --- a/.github/CODEOWNERS
    +++ b/.github/CODEOWNERS
    @@ -84,7 +84,7 @@
     /doc/api/module.md @nodejs/modules @nodejs/loaders
     /doc/api/modules.md @nodejs/modules @nodejs/loaders
     /doc/api/packages.md @nodejs/modules @nodejs/loaders
    -/lib/internal/bootstrap/loaders.js @nodejs/modules @nodejs/loaders
    +/lib/internal/bootstrap/realm.js @nodejs/modules @nodejs/loaders
     /lib/internal/modules/* @nodejs/modules @nodejs/loaders
     /lib/internal/process/esm_loader.js @nodejs/modules @nodejs/loaders
     /lib/internal/process/execution.js @nodejs/modules @nodejs/loaders
    diff --git a/lib/assert.js b/lib/assert.js
    index 04c2dd3bfcfdfb..c73e750e337fcb 100644
    --- a/lib/assert.js
    +++ b/lib/assert.js
    @@ -65,7 +65,7 @@ const { openSync, closeSync, readSync } = require('fs');
     const { inspect } = require('internal/util/inspect');
     const { isPromise, isRegExp } = require('internal/util/types');
     const { EOL } = require('internal/constants');
    -const { BuiltinModule } = require('internal/bootstrap/loaders');
    +const { BuiltinModule } = require('internal/bootstrap/realm');
     const { isError } = require('internal/util');
     
     const errorCache = new SafeMap();
    diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js
    index 284b001321ed5c..897de138f5d447 100644
    --- a/lib/internal/bootstrap/node.js
    +++ b/lib/internal/bootstrap/node.js
    @@ -1,6 +1,6 @@
     // Hello, and welcome to hacking node.js!
     //
    -// This file is invoked by `Realm::BootstrapNode()` in `src/node_realm.cc`,
    +// This file is invoked by `Realm::BootstrapRealm()` in `src/node_realm.cc`,
     // and is responsible for setting up Node.js core before main scripts
     // under `lib/internal/main/` are executed.
     //
    @@ -32,9 +32,10 @@
     //   `DOMException` class.
     // - `lib/internal/per_context/messageport.js`: JS-side components of the
     //   `MessagePort` implementation.
    -// - `lib/internal/bootstrap/loaders.js`: this sets up internal binding and
    +// - `lib/internal/bootstrap/realm.js`: this sets up internal binding and
     //   module loaders, including `process.binding()`, `process._linkedBinding()`,
    -//   `internalBinding()` and `BuiltinModule`.
    +//   `internalBinding()` and `BuiltinModule`, and per-realm internal states
    +//   and bindings, including `prepare_stack_trace_callback`.
     //
     // The initialization done in this script is included in both the main thread
     // and the worker threads. After this, further initialization is done based
    @@ -52,8 +53,6 @@
     // passed by `BuiltinLoader::CompileAndCall()`.
     /* global process, require, internalBinding, primordials */
     
    -setupPrepareStackTrace();
    -
     const {
       FunctionPrototypeCall,
       JSONParse,
    @@ -324,25 +323,6 @@ process.emitWarning = emitWarning;
       // Note: only after this point are the timers effective
     }
     
    -function setupPrepareStackTrace() {
    -  const {
    -    setEnhanceStackForFatalException,
    -    setPrepareStackTraceCallback,
    -  } = internalBinding('errors');
    -  const {
    -    prepareStackTrace,
    -    fatalExceptionStackEnhancers: {
    -      beforeInspector,
    -      afterInspector,
    -    },
    -  } = require('internal/errors');
    -  // Tell our PrepareStackTraceCallback passed to the V8 API
    -  // to call prepareStackTrace().
    -  setPrepareStackTraceCallback(prepareStackTrace);
    -  // Set the function used to enhance the error stack for printing
    -  setEnhanceStackForFatalException(beforeInspector, afterInspector);
    -}
    -
     function setupProcessObject() {
       const EventEmitter = require('events');
       const origProcProto = ObjectGetPrototypeOf(process);
    diff --git a/lib/internal/bootstrap/loaders.js b/lib/internal/bootstrap/realm.js
    similarity index 91%
    rename from lib/internal/bootstrap/loaders.js
    rename to lib/internal/bootstrap/realm.js
    index a0a48e6c451dd7..4b03d8247cb4e3 100644
    --- a/lib/internal/bootstrap/loaders.js
    +++ b/lib/internal/bootstrap/realm.js
    @@ -1,3 +1,8 @@
    +// This file is executed in every realm that is created by Node.js, including
    +// the context of main thread, worker threads, and ShadowRealms.
    +// Only per-realm internal states and bindings should be bootstrapped in this
    +// file and no globals should be exposed to the user code.
    +//
     // This file creates the internal module & binding loaders used by built-in
     // modules. In contrast, user land modules are loaded using
     // lib/internal/modules/cjs/loader.js (CommonJS Modules) or
    @@ -30,7 +35,7 @@
     //   so they can be loaded faster without the cost of I/O. This class makes the
     //   lib/internal/*, deps/internal/* modules and internalBinding() available by
     //   default to core modules, and lets the core modules require itself via
    -//   require('internal/bootstrap/loaders') even when this file is not written in
    +//   require('internal/bootstrap/realm') even when this file is not written in
     //   CommonJS style.
     //
     // Other objects:
    @@ -178,7 +183,7 @@ let internalBinding;
       };
     }
     
    -const loaderId = 'internal/bootstrap/loaders';
    +const selfId = 'internal/bootstrap/realm';
     const {
       builtinIds,
       compileFunction,
    @@ -235,7 +240,7 @@ class BuiltinModule {
       static exposeInternals() {
         for (const { 0: id, 1: mod } of BuiltinModule.map) {
           // Do not expose this to user land even with --expose-internals.
    -      if (id !== loaderId) {
    +      if (id !== selfId) {
             mod.canBeRequiredByUsers = true;
           }
         }
    @@ -354,7 +359,7 @@ const loaderExports = {
     };
     
     function requireBuiltin(id) {
    -  if (id === loaderId) {
    +  if (id === selfId) {
         return loaderExports;
       }
     
    @@ -374,5 +379,27 @@ function requireWithFallbackInDeps(request) {
       return requireBuiltin(request);
     }
     
    +function setupPrepareStackTrace() {
    +  const {
    +    setEnhanceStackForFatalException,
    +    setPrepareStackTraceCallback,
    +  } = internalBinding('errors');
    +  const {
    +    prepareStackTrace,
    +    fatalExceptionStackEnhancers: {
    +      beforeInspector,
    +      afterInspector,
    +    },
    +  } = requireBuiltin('internal/errors');
    +  // Tell our PrepareStackTraceCallback passed to the V8 API
    +  // to call prepareStackTrace().
    +  setPrepareStackTraceCallback(prepareStackTrace);
    +  // Set the function used to enhance the error stack for printing
    +  setEnhanceStackForFatalException(beforeInspector, afterInspector);
    +}
    +
     // Store the internal loaders in C++.
     setInternalLoaders(internalBinding, requireBuiltin);
    +
    +// Setup per-realm bindings.
    +setupPrepareStackTrace();
    diff --git a/lib/internal/main/mksnapshot.js b/lib/internal/main/mksnapshot.js
    index 89c02bfc5f25a2..8d79c14cee76ff 100644
    --- a/lib/internal/main/mksnapshot.js
    +++ b/lib/internal/main/mksnapshot.js
    @@ -10,7 +10,7 @@ const {
     } = primordials;
     
     const binding = internalBinding('mksnapshot');
    -const { BuiltinModule } = require('internal/bootstrap/loaders');
    +const { BuiltinModule } = require('internal/bootstrap/realm');
     const {
       getEmbedderEntryFunction,
       compileSerializeMain,
    diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
    index de83c69a701580..c6eda4948f7711 100644
    --- a/lib/internal/modules/cjs/loader.js
    +++ b/lib/internal/modules/cjs/loader.js
    @@ -75,7 +75,7 @@ module.exports = {
       initializeCJS,
     };
     
    -const { BuiltinModule } = require('internal/bootstrap/loaders');
    +const { BuiltinModule } = require('internal/bootstrap/realm');
     const {
       maybeCacheSourceMap,
     } = require('internal/source_map/source_map_cache');
    diff --git a/lib/internal/modules/esm/hooks.js b/lib/internal/modules/esm/hooks.js
    index 83e5038903df83..1e7faa12ca5618 100644
    --- a/lib/internal/modules/esm/hooks.js
    +++ b/lib/internal/modules/esm/hooks.js
    @@ -190,7 +190,7 @@ class Hooks {
               filename: '',
             },
           );
    -      const { BuiltinModule } = require('internal/bootstrap/loaders');
    +      const { BuiltinModule } = require('internal/bootstrap/realm');
           // We only allow replacing the importMetaInitializer during preload;
           // after preload is finished, we disable the ability to replace it.
           //
    diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js
    index d04c04e8306c14..58373230da3587 100644
    --- a/lib/internal/modules/esm/resolve.js
    +++ b/lib/internal/modules/esm/resolve.js
    @@ -24,7 +24,7 @@ const {
       StringPrototypeStartsWith,
     } = primordials;
     const internalFS = require('internal/fs/utils');
    -const { BuiltinModule } = require('internal/bootstrap/loaders');
    +const { BuiltinModule } = require('internal/bootstrap/realm');
     const {
       realpathSync,
       statSync,
    diff --git a/lib/internal/modules/helpers.js b/lib/internal/modules/helpers.js
    index 5dc23f13e7cc3a..d20ef5e90f3f39 100644
    --- a/lib/internal/modules/helpers.js
    +++ b/lib/internal/modules/helpers.js
    @@ -17,7 +17,7 @@ const {
       ERR_MANIFEST_DEPENDENCY_MISSING,
       ERR_UNKNOWN_BUILTIN_MODULE,
     } = require('internal/errors').codes;
    -const { BuiltinModule } = require('internal/bootstrap/loaders');
    +const { BuiltinModule } = require('internal/bootstrap/realm');
     
     const { validateString } = require('internal/validators');
     const path = require('path');
    diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js
    index d6e99aad3ae5d2..2e690c5f7aecaa 100644
    --- a/lib/internal/process/pre_execution.js
    +++ b/lib/internal/process/pre_execution.js
    @@ -345,7 +345,7 @@ function initializeReport() {
     function setupDebugEnv() {
       require('internal/util/debuglog').initializeDebugEnv(process.env.NODE_DEBUG);
       if (getOptionValue('--expose-internals')) {
    -    require('internal/bootstrap/loaders').BuiltinModule.exposeInternals();
    +    require('internal/bootstrap/realm').BuiltinModule.exposeInternals();
       }
     }
     
    diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js
    index 57ffa96c97da40..0a7d6daf4e796e 100644
    --- a/lib/internal/util/inspect.js
    +++ b/lib/internal/util/inspect.js
    @@ -150,7 +150,7 @@ const {
     
     const assert = require('internal/assert');
     
    -const { BuiltinModule } = require('internal/bootstrap/loaders');
    +const { BuiltinModule } = require('internal/bootstrap/realm');
     const {
       validateObject,
       validateString,
    diff --git a/lib/repl.js b/lib/repl.js
    index 3240a66101474d..0a5a9b44ed16b8 100644
    --- a/lib/repl.js
    +++ b/lib/repl.js
    @@ -96,7 +96,7 @@ const {
       globalThis,
     } = primordials;
     
    -const { BuiltinModule } = require('internal/bootstrap/loaders');
    +const { BuiltinModule } = require('internal/bootstrap/realm');
     const {
       makeRequireFunction,
       addBuiltinLibsToObject,
    diff --git a/src/api/environment.cc b/src/api/environment.cc
    index 9dab85383a7d25..75ed9b33867aed 100644
    --- a/src/api/environment.cc
    +++ b/src/api/environment.cc
    @@ -67,17 +67,18 @@ MaybeLocal PrepareStackTraceCallback(Local context,
       if (env == nullptr) {
         return exception->ToString(context).FromMaybe(Local());
       }
    -  // TODO(legendecas): Per-realm prepareStackTrace callback.
    -  // If we are in a Realm that is not the principal Realm (e.g. ShadowRealm),
    -  // skip the prepareStackTrace callback to avoid passing the JS objects (
    -  // the exception and trace) across the realm boundary with the
    -  // `Error.prepareStackTrace` override.
    -  Realm* current_realm = Realm::GetCurrent(context);
    -  if (current_realm != nullptr &&
    -      current_realm->kind() != Realm::Kind::kPrincipal) {
    -    return exception->ToString(context).FromMaybe(Local());
    +  Realm* realm = Realm::GetCurrent(context);
    +  Local prepare;
    +  if (realm != nullptr) {
    +    // If we are in a Realm, call the realm specific prepareStackTrace callback
    +    // to avoid passing the JS objects (the exception and trace) across the
    +    // realm boundary with the `Error.prepareStackTrace` override.
    +    prepare = realm->prepare_stack_trace_callback();
    +  } else {
    +    // The context is created with ContextifyContext, call the principal
    +    // realm's prepareStackTrace callback.
    +    prepare = env->principal_realm()->prepare_stack_trace_callback();
       }
    -  Local prepare = env->prepare_stack_trace_callback();
       if (prepare.IsEmpty()) {
         return exception->ToString(context).FromMaybe(Local());
       }
    diff --git a/src/node_builtins.cc b/src/node_builtins.cc
    index 89d278893e9d60..2e65ade9668485 100644
    --- a/src/node_builtins.cc
    +++ b/src/node_builtins.cc
    @@ -359,9 +359,9 @@ MaybeLocal BuiltinLoader::LookupAndCompile(Local context,
       std::vector> parameters;
       Isolate* isolate = context->GetIsolate();
       // Detects parameters of the scripts based on module ids.
    -  // internal/bootstrap/loaders: process, getLinkedBinding,
    -  //                             getInternalBinding, primordials
    -  if (strcmp(id, "internal/bootstrap/loaders") == 0) {
    +  // internal/bootstrap/realm: process, getLinkedBinding,
    +  //                           getInternalBinding, primordials
    +  if (strcmp(id, "internal/bootstrap/realm") == 0) {
         parameters = {
             FIXED_ONE_BYTE_STRING(isolate, "process"),
             FIXED_ONE_BYTE_STRING(isolate, "getLinkedBinding"),
    @@ -423,9 +423,9 @@ MaybeLocal BuiltinLoader::CompileAndCall(Local context,
       // BuiltinLoader::LookupAndCompile().
       std::vector> arguments;
       // Detects parameters of the scripts based on module ids.
    -  // internal/bootstrap/loaders: process, getLinkedBinding,
    -  //                             getInternalBinding, primordials
    -  if (strcmp(id, "internal/bootstrap/loaders") == 0) {
    +  // internal/bootstrap/realm: process, getLinkedBinding,
    +  //                           getInternalBinding, primordials
    +  if (strcmp(id, "internal/bootstrap/realm") == 0) {
         Local get_linked_binding;
         Local get_internal_binding;
         if (!NewFunctionTemplate(isolate, binding::GetLinkedBinding)
    diff --git a/src/node_errors.cc b/src/node_errors.cc
    index 1879cf0e71fc82..af7fe81ff7bb62 100644
    --- a/src/node_errors.cc
    +++ b/src/node_errors.cc
    @@ -960,9 +960,9 @@ void PerIsolateMessageListener(Local message, Local error) {
     }
     
     void SetPrepareStackTraceCallback(const FunctionCallbackInfo& args) {
    -  Environment* env = Environment::GetCurrent(args);
    +  Realm* realm = Realm::GetCurrent(args);
       CHECK(args[0]->IsFunction());
    -  env->set_prepare_stack_trace_callback(args[0].As());
    +  realm->set_prepare_stack_trace_callback(args[0].As());
     }
     
     static void SetSourceMapsEnabled(const FunctionCallbackInfo& args) {
    @@ -987,11 +987,11 @@ static void SetMaybeCacheGeneratedSourceMap(
     
     static void SetEnhanceStackForFatalException(
         const FunctionCallbackInfo& args) {
    -  Environment* env = Environment::GetCurrent(args);
    +  Realm* realm = Realm::GetCurrent(args);
       CHECK(args[0]->IsFunction());
       CHECK(args[1]->IsFunction());
    -  env->set_enhance_fatal_stack_before_inspector(args[0].As());
    -  env->set_enhance_fatal_stack_after_inspector(args[1].As());
    +  realm->set_enhance_fatal_stack_before_inspector(args[0].As());
    +  realm->set_enhance_fatal_stack_after_inspector(args[1].As());
     }
     
     // Side effect-free stringification that will never throw exceptions.
    diff --git a/src/node_realm.cc b/src/node_realm.cc
    index 6a0876fa6dc87c..3313c683e7e424 100644
    --- a/src/node_realm.cc
    +++ b/src/node_realm.cc
    @@ -179,7 +179,7 @@ MaybeLocal Realm::RunBootstrapping() {
       CHECK(!has_run_bootstrapping_code());
     
       Local result;
    -  if (!ExecuteBootstrapper("internal/bootstrap/loaders").ToLocal(&result) ||
    +  if (!ExecuteBootstrapper("internal/bootstrap/realm").ToLocal(&result) ||
           !BootstrapRealm().ToLocal(&result)) {
         return MaybeLocal();
       }
    @@ -306,11 +306,9 @@ void PrincipalRealm::MemoryInfo(MemoryTracker* tracker) const {
     }
     
     MaybeLocal PrincipalRealm::BootstrapRealm() {
    -  EscapableHandleScope scope(isolate_);
    -
    -  MaybeLocal result = ExecuteBootstrapper("internal/bootstrap/node");
    +  HandleScope scope(isolate_);
     
    -  if (result.IsEmpty()) {
    +  if (ExecuteBootstrapper("internal/bootstrap/node").IsEmpty()) {
         return MaybeLocal();
       }
     
    @@ -327,9 +325,7 @@ MaybeLocal PrincipalRealm::BootstrapRealm() {
       auto thread_switch_id =
           env_->is_main_thread() ? "internal/bootstrap/switches/is_main_thread"
                                  : "internal/bootstrap/switches/is_not_main_thread";
    -  result = ExecuteBootstrapper(thread_switch_id);
    -
    -  if (result.IsEmpty()) {
    +  if (ExecuteBootstrapper(thread_switch_id).IsEmpty()) {
         return MaybeLocal();
       }
     
    @@ -337,9 +333,7 @@ MaybeLocal PrincipalRealm::BootstrapRealm() {
           env_->owns_process_state()
               ? "internal/bootstrap/switches/does_own_process_state"
               : "internal/bootstrap/switches/does_not_own_process_state";
    -  result = ExecuteBootstrapper(process_state_switch_id);
    -
    -  if (result.IsEmpty()) {
    +  if (ExecuteBootstrapper(process_state_switch_id).IsEmpty()) {
         return MaybeLocal();
       }
     
    @@ -351,7 +345,7 @@ MaybeLocal PrincipalRealm::BootstrapRealm() {
         return MaybeLocal();
       }
     
    -  return scope.EscapeMaybe(result);
    +  return v8::True(isolate_);
     }
     
     }  // namespace node
    diff --git a/src/node_shadow_realm.cc b/src/node_shadow_realm.cc
    index bf5c7c94676c55..bf39509d537757 100644
    --- a/src/node_shadow_realm.cc
    +++ b/src/node_shadow_realm.cc
    @@ -1,20 +1,25 @@
     #include "node_shadow_realm.h"
     #include "env-inl.h"
    +#include "node_errors.h"
     
     namespace node {
     namespace shadow_realm {
     using v8::Context;
    -using v8::EscapableHandleScope;
     using v8::HandleScope;
     using v8::Local;
     using v8::MaybeLocal;
     using v8::Value;
     
    +using TryCatchScope = node::errors::TryCatchScope;
    +
     // static
     ShadowRealm* ShadowRealm::New(Environment* env) {
       ShadowRealm* realm = new ShadowRealm(env);
       env->AssignToContext(realm->context(), realm, ContextInfo(""));
     
    +  // We do not expect the realm bootstrapping to throw any
    +  // exceptions. If it does, exit the current Node.js instance.
    +  TryCatchScope try_catch(env, TryCatchScope::CatchMode::kFatal);
       if (realm->RunBootstrapping().IsEmpty()) {
         delete realm;
         return nullptr;
    @@ -91,21 +96,19 @@ PER_REALM_STRONG_PERSISTENT_VALUES(V)
     #undef V
     
     v8::MaybeLocal ShadowRealm::BootstrapRealm() {
    -  EscapableHandleScope scope(isolate_);
    -  MaybeLocal result = v8::True(isolate_);
    +  HandleScope scope(isolate_);
     
       // Skip "internal/bootstrap/node" as it installs node globals and per-isolate
    -  // callbacks like PrepareStackTraceCallback.
    +  // callbacks.
     
       if (!env_->no_browser_globals()) {
    -    result = ExecuteBootstrapper("internal/bootstrap/web/exposed-wildcard");
    -
    -    if (result.IsEmpty()) {
    +    if (ExecuteBootstrapper("internal/bootstrap/web/exposed-wildcard")
    +            .IsEmpty()) {
           return MaybeLocal();
         }
       }
     
    -  return result;
    +  return v8::True(isolate_);
     }
     
     }  // namespace shadow_realm
    diff --git a/test/es-module/test-loaders-hidden-from-users.js b/test/es-module/test-loaders-hidden-from-users.js
    index 96d1c44154883e..59e910ad751dbe 100644
    --- a/test/es-module/test-loaders-hidden-from-users.js
    +++ b/test/es-module/test-loaders-hidden-from-users.js
    @@ -7,16 +7,16 @@ const assert = require('assert');
     
     assert.throws(
       () => {
    -    require('internal/bootstrap/loaders');
    +    require('internal/bootstrap/realm');
       }, {
         code: 'MODULE_NOT_FOUND',
    -    message: /Cannot find module 'internal\/bootstrap\/loaders'/
    +    message: /Cannot find module 'internal\/bootstrap\/realm'/
       }
     );
     
     assert.throws(
       () => {
    -    const source = 'module.exports = require("internal/bootstrap/loaders")';
    +    const source = 'module.exports = require("internal/bootstrap/realm")';
         const { internalBinding } = require('internal/test/binding');
         internalBinding('natives').owo = source;
         require('owo');
    diff --git a/test/parallel/test-inspector-inspect-brk-node.js b/test/parallel/test-inspector-inspect-brk-node.js
    index 0f4795ed7b87e4..04bac6dc7cf0df 100644
    --- a/test/parallel/test-inspector-inspect-brk-node.js
    +++ b/test/parallel/test-inspector-inspect-brk-node.js
    @@ -16,7 +16,7 @@ async function runTest() {
       await session.waitForNotification((notification) => {
         // The main assertion here is that we do hit the loader script first.
         return notification.method === 'Debugger.scriptParsed' &&
    -           notification.params.url === 'node:internal/bootstrap/loaders';
    +           notification.params.url === 'node:internal/bootstrap/realm';
       });
     
       await session.waitForNotification('Debugger.paused');
    diff --git a/test/parallel/test-shadow-realm-prepare-stack-trace.js b/test/parallel/test-shadow-realm-prepare-stack-trace.js
    new file mode 100644
    index 00000000000000..2460f017ee91b3
    --- /dev/null
    +++ b/test/parallel/test-shadow-realm-prepare-stack-trace.js
    @@ -0,0 +1,53 @@
    +// Flags: --experimental-shadow-realm
    +'use strict';
    +
    +require('../common');
    +const assert = require('assert');
    +
    +let principalRealmPrepareStackTraceCalled = false;
    +Error.prepareStackTrace = (error, trace) => {
    +  principalRealmPrepareStackTraceCalled = true;
    +  return `${String(error)}\n    at ${trace.join('\n    at ')}`;
    +};
    +
    +{
    +  // Validates inner Error.prepareStackTrace can not leak into the outer realm.
    +  const shadowRealm = new ShadowRealm();
    +
    +  const stack = shadowRealm.evaluate(`
    +Error.prepareStackTrace = (error, trace) => {
    +  globalThis.leaked = 'inner';
    +  return 'from shadow realm';
    +};
    +
    +try {
    +  throw new Error('boom');
    +} catch (e) {
    +  e.stack;
    +}
    +`);
    +  assert.ok(!principalRealmPrepareStackTraceCalled);
    +  assert.strictEqual(stack, 'from shadow realm');
    +  assert.strictEqual('leaked' in globalThis, false);
    +}
    +
    +{
    +  // Validates stacks can be generated in the ShadowRealm.
    +  const shadowRealm = new ShadowRealm();
    +
    +  const stack = shadowRealm.evaluate(`
    +function myFunc() {
    +  throw new Error('boom');
    +}
    +
    +try {
    +  myFunc();
    +} catch (e) {
    +  e.stack;
    +}
    +`);
    +  assert.ok(!principalRealmPrepareStackTraceCalled);
    +  const lines = stack.split('\n');
    +  assert.strictEqual(lines[0], 'Error: boom');
    +  assert.match(lines[1], /^ {4}at myFunc \(.*\)/);
    +}
    
    From 8e916590bbcd156ecd85ac512a5c8d1867c0ad6d Mon Sep 17 00:00:00 2001
    From: Joyee Cheung 
    Date: Tue, 4 Apr 2023 05:19:02 +0200
    Subject: [PATCH 113/131] test: move test-shadow-realm-gc.js to known_issues
    
    There is actually a leak. The test doesn't exercise the right
    path to create a substantial enough object graph (e.g.
    accessing something that results in the loading of a binding).
    This does something more complicated in the test and moves it
    to known_issues until we find a fix.
    
    PR-URL: https://github.com/nodejs/node/pull/47355
    Refs: https://github.com/nodejs/node/issues/47353
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Chengzhong Wu 
    Reviewed-By: Yagiz Nizipli 
    ---
     test/known_issues/known_issues.status                   | 3 +++
     test/{parallel => known_issues}/test-shadow-realm-gc.js | 3 ++-
     2 files changed, 5 insertions(+), 1 deletion(-)
     rename test/{parallel => known_issues}/test-shadow-realm-gc.js (73%)
    
    diff --git a/test/known_issues/known_issues.status b/test/known_issues/known_issues.status
    index 7a50c10404c723..e19a87e7c39b6c 100644
    --- a/test/known_issues/known_issues.status
    +++ b/test/known_issues/known_issues.status
    @@ -11,6 +11,9 @@ prefix known_issues
     # foreseeable future. The test itself is flaky and skipped.  It
     # serves as a demonstration of the issue only.
     test-vm-timeout-escape-queuemicrotask: SKIP
    +# Skipping it because it crashes out of OOM instead of exiting.
    +# https://github.com/nodejs/node/issues/47353
    +test-shadow-realm-gc: SKIP
     
     [$system==win32]
     
    diff --git a/test/parallel/test-shadow-realm-gc.js b/test/known_issues/test-shadow-realm-gc.js
    similarity index 73%
    rename from test/parallel/test-shadow-realm-gc.js
    rename to test/known_issues/test-shadow-realm-gc.js
    index b640c6b8be3f1a..cf15324e5cec06 100644
    --- a/test/parallel/test-shadow-realm-gc.js
    +++ b/test/known_issues/test-shadow-realm-gc.js
    @@ -8,5 +8,6 @@
     require('../common');
     
     for (let i = 0; i < 1000; i++) {
    -  new ShadowRealm();
    +  const realm = new ShadowRealm();
    +  realm.evaluate('new TextEncoder(); 1;');
     }
    
    From 243546f61b74a418e8590c691689f64c373485fb Mon Sep 17 00:00:00 2001
    From: Moshe Atlow 
    Date: Tue, 4 Apr 2023 07:14:23 +0300
    Subject: [PATCH 114/131] test_runner: stringify AssertError expected and
     actual
    
    PR-URL: https://github.com/nodejs/node/pull/47088
    Fixes: https://github.com/nodejs/node/issues/47075
    Reviewed-By: Colin Ihrig 
    ---
     lib/internal/test_runner/reporter/tap.js      | 30 +++++++----
     lib/internal/test_runner/yaml_to_js.js        | 27 +++++++---
     test/message/test_runner_output.js            | 14 ++++++
     test/message/test_runner_output.out           | 39 +++++++++++++--
     test/message/test_runner_output_cli.out       | 39 +++++++++++++--
     .../test_runner_output_dot_reporter.out       |  3 +-
     .../test_runner_output_spec_reporter.out      | 50 +++++++++++++++++--
     7 files changed, 173 insertions(+), 29 deletions(-)
    
    diff --git a/lib/internal/test_runner/reporter/tap.js b/lib/internal/test_runner/reporter/tap.js
    index e4061ac93fca42..01c7436c6a6b67 100644
    --- a/lib/internal/test_runner/reporter/tap.js
    +++ b/lib/internal/test_runner/reporter/tap.js
    @@ -6,6 +6,7 @@ const {
       ObjectEntries,
       RegExpPrototypeSymbolReplace,
       SafeMap,
    +  SafeSet,
       StringPrototypeReplaceAll,
       StringPrototypeSplit,
       StringPrototypeRepeat,
    @@ -79,7 +80,7 @@ function reportDetails(nesting, data = kEmptyObject) {
     
       details += jsToYaml(_indent, 'duration_ms', duration_ms);
       details += jsToYaml(_indent, 'type', data.type);
    -  details += jsToYaml(_indent, null, error);
    +  details += jsToYaml(_indent, null, error, new SafeSet());
       details += `${_indent}  ...\n`;
       return details;
     }
    @@ -109,7 +110,7 @@ function tapEscape(input) {
       return result;
     }
     
    -function jsToYaml(indent, name, value) {
    +function jsToYaml(indent, name, value, seen) {
       if (value === null || value === undefined) {
         return '';
       }
    @@ -136,9 +137,16 @@ function jsToYaml(indent, name, value) {
         return str;
       }
     
    +  seen.add(value);
       const entries = ObjectEntries(value);
       const isErrorObj = isError(value);
       let result = '';
    +  let propsIndent = indent;
    +
    +  if (name != null) {
    +    result += `${indent}  ${name}:\n`;
    +    propsIndent += '  ';
    +  }
     
       for (let i = 0; i < entries.length; i++) {
         const { 0: key, 1: value } = entries[i];
    @@ -146,8 +154,12 @@ function jsToYaml(indent, name, value) {
         if (isErrorObj && (key === 'cause' || key === 'code')) {
           continue;
         }
    +    if (seen.has(value)) {
    +      result += `${propsIndent}  ${key}: \n`;
    +      continue;
    +    }
     
    -    result += jsToYaml(indent, key, value);
    +    result += jsToYaml(propsIndent, key, value, seen);
       }
     
       if (isErrorObj) {
    @@ -189,20 +201,20 @@ function jsToYaml(indent, name, value) {
           }
         }
     
    -    result += jsToYaml(indent, 'error', errMsg);
    +    result += jsToYaml(indent, 'error', errMsg, seen);
     
         if (errCode) {
    -      result += jsToYaml(indent, 'code', errCode);
    +      result += jsToYaml(indent, 'code', errCode, seen);
         }
         if (errName && errName !== 'Error') {
    -      result += jsToYaml(indent, 'name', errName);
    +      result += jsToYaml(indent, 'name', errName, seen);
         }
     
         if (errIsAssertion) {
    -      result += jsToYaml(indent, 'expected', errExpected);
    -      result += jsToYaml(indent, 'actual', errActual);
    +      result += jsToYaml(indent, 'expected', errExpected, seen);
    +      result += jsToYaml(indent, 'actual', errActual, seen);
           if (errOperator) {
    -        result += jsToYaml(indent, 'operator', errOperator);
    +        result += jsToYaml(indent, 'operator', errOperator, seen);
           }
         }
     
    diff --git a/lib/internal/test_runner/yaml_to_js.js b/lib/internal/test_runner/yaml_to_js.js
    index 6eb193f4afd36e..724e71baaa67db 100644
    --- a/lib/internal/test_runner/yaml_to_js.js
    +++ b/lib/internal/test_runner/yaml_to_js.js
    @@ -19,7 +19,7 @@ const {
       StringPrototypeSubstring,
     } = primordials;
     
    -const kYamlKeyRegex = /^(\s+)?(\w+):(\s)+([>|][-+])?(.*)$/;
    +const kYamlKeyRegex = /^(\s+)?(\w+):(\s)*([>|][-+])?(.*)$/;
     const kStackDelimiter = '    at ';
     
     function reConstructError(parsedYaml) {
    @@ -91,28 +91,39 @@ function YAMLToJs(lines) {
         return undefined;
       }
       const result = { __proto__: null };
    +  let context = { __proto__: null, object: result, indent: 0, currentKey: null };
       let isInYamlBlock = false;
       for (let i = 0; i < lines.length; i++) {
         const line = lines[i];
         if (isInYamlBlock && !StringPrototypeStartsWith(line, StringPrototypeRepeat(' ', isInYamlBlock.indent))) {
    -      result[isInYamlBlock.key] = isInYamlBlock.key === 'stack' ?
    -        result[isInYamlBlock.key] : ArrayPrototypeJoin(result[isInYamlBlock.key], '\n');
    +      context.object[isInYamlBlock.key] = isInYamlBlock.key === 'stack' ?
    +        context.object[isInYamlBlock.key] : ArrayPrototypeJoin(context.object[isInYamlBlock.key], '\n');
           isInYamlBlock = false;
         }
         if (isInYamlBlock) {
           const blockLine = StringPrototypeSubstring(line, isInYamlBlock.indent);
    -      ArrayPrototypePush(result[isInYamlBlock.key], blockLine);
    +      ArrayPrototypePush(context.object[isInYamlBlock.key], blockLine);
           continue;
         }
         const match = RegExpPrototypeExec(kYamlKeyRegex, line);
         if (match !== null) {
           const { 1: leadingSpaces, 2: key, 4: block, 5: value } = match;
    +      const indent = leadingSpaces?.length ?? 0;
           if (block) {
    -        isInYamlBlock = { key, indent: (leadingSpaces?.length ?? 0) + 2 };
    -        result[key] = [];
    -      } else {
    -        result[key] = getYamlValue(value);
    +        isInYamlBlock = { key, indent: indent + 2 };
    +        context.object[key] = [];
    +        continue;
           }
    +
    +      if (indent > context.indent) {
    +        context.object[context.currentKey] ||= {};
    +        context = { __proto__: null, parent: context, object: context.object[context.currentKey], indent };
    +      } else if (indent < context.indent) {
    +        context = context.parent;
    +      }
    +
    +      context.currentKey = key;
    +      context.object[key] = getYamlValue(value);
         }
       }
       return reConstructError(result);
    diff --git a/test/message/test_runner_output.js b/test/message/test_runner_output.js
    index a53ded3dfde3ac..b00e833a212492 100644
    --- a/test/message/test_runner_output.js
    +++ b/test/message/test_runner_output.js
    @@ -389,3 +389,17 @@ test('unfinished test with unhandledRejection', async () => {
     setImmediate(() => {
       throw new Error('uncaught from outside of a test');
     });
    +
    +test('assertion errors display actual and expected properly', async () => {
    +  // Make sure the assert module is handled.
    +  const circular = { bar: 2 };
    +  circular.c = circular;
    +  const tmpLimit = Error.stackTraceLimit;
    +  Error.stackTraceLimit = 1;
    +  try {
    +    assert.deepEqual({ foo: 1, bar: 1 }, circular); // eslint-disable-line no-restricted-properties
    +  } catch (err) {
    +    Error.stackTraceLimit = tmpLimit;
    +    throw err;
    +  }
    +});
    diff --git a/test/message/test_runner_output.out b/test/message/test_runner_output.out
    index 668676cb6eeda6..c19e2058de7298 100644
    --- a/test/message/test_runner_output.out
    +++ b/test/message/test_runner_output.out
    @@ -624,8 +624,39 @@ not ok 64 - unfinished test with unhandledRejection
         *
         *
       ...
    +# Subtest: assertion errors display actual and expected properly
    +not ok 65 - assertion errors display actual and expected properly
    +  ---
    +  duration_ms: *
    +  failureType: 'testCodeFailure'
    +  error: |-
    +    Expected values to be loosely deep-equal:
    +    
    +    {
    +      bar: 1,
    +      foo: 1
    +    }
    +    
    +    should loosely deep-equal
    +    
    +     {
    +      bar: 2,
    +      c: [Circular *1]
    +    }
    +  code: 'ERR_ASSERTION'
    +  name: 'AssertionError'
    +  expected:
    +    bar: 2
    +    c: 
    +  actual:
    +    foo: 1
    +    bar: 1
    +  operator: 'deepEqual'
    +  stack: |-
    +    *
    +  ...
     # Subtest: invalid subtest fail
    -not ok 65 - invalid subtest fail
    +not ok 66 - invalid subtest fail
       ---
       duration_ms: *
       failureType: 'parentAlreadyFinished'
    @@ -634,7 +665,7 @@ not ok 65 - invalid subtest fail
       stack: |-
         *
       ...
    -1..65
    +1..66
     # Warning: Test "unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event.
     # Warning: Test "async unhandled rejection - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from async unhandled rejection fail" and would have caused the test to fail, but instead triggered an unhandledRejection event.
     # Warning: A resource generated asynchronous activity after the test ended. This activity created the error "Error: uncaught from outside of a test" which triggered an uncaughtException event, caught by the test runner.
    @@ -642,10 +673,10 @@ not ok 65 - invalid subtest fail
     # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event.
     # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event.
     # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event.
    -# tests 79
    +# tests 80
     # suites 0
     # pass 37
    -# fail 24
    +# fail 25
     # cancelled 3
     # skipped 10
     # todo 5
    diff --git a/test/message/test_runner_output_cli.out b/test/message/test_runner_output_cli.out
    index e51b6b472ca44f..ba43eabb1940e2 100644
    --- a/test/message/test_runner_output_cli.out
    +++ b/test/message/test_runner_output_cli.out
    @@ -624,8 +624,39 @@ not ok 64 - unfinished test with unhandledRejection
         *
         *
       ...
    +# Subtest: assertion errors display actual and expected properly
    +not ok 65 - assertion errors display actual and expected properly
    +  ---
    +  duration_ms: *
    +  failureType: 'testCodeFailure'
    +  error: |-
    +    Expected values to be loosely deep-equal:
    +    
    +    {
    +      bar: 1,
    +      foo: 1
    +    }
    +    
    +    should loosely deep-equal
    +    
    +     {
    +      bar: 2,
    +      c: [Circular *1]
    +    }
    +  code: 'ERR_ASSERTION'
    +  name: 'AssertionError'
    +  expected:
    +    bar: 2
    +    c: ''
    +  actual:
    +    foo: 1
    +    bar: 1
    +  operator: 'deepEqual'
    +  stack: |-
    +    *
    +  ...
     # Subtest: invalid subtest fail
    -not ok 65 - invalid subtest fail
    +not ok 66 - invalid subtest fail
       ---
       duration_ms: *
       failureType: 'parentAlreadyFinished'
    @@ -641,11 +672,11 @@ not ok 65 - invalid subtest fail
     # Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event.
     # Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event.
     # Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event.
    -1..65
    -# tests 79
    +1..66
    +# tests 80
     # suites 0
     # pass 37
    -# fail 24
    +# fail 25
     # cancelled 3
     # skipped 10
     # todo 5
    diff --git a/test/message/test_runner_output_dot_reporter.out b/test/message/test_runner_output_dot_reporter.out
    index 823ecfb146b991..5a74119b3887e5 100644
    --- a/test/message/test_runner_output_dot_reporter.out
    +++ b/test/message/test_runner_output_dot_reporter.out
    @@ -1,4 +1,5 @@
     ..XX...X..XXX.X.....
     XXX.....X..X...X....
     .........X...XXX.XX.
    -.....XXXXXXX...XXXX
    +.....XXXXXXX...XXXXX
    +
    diff --git a/test/message/test_runner_output_spec_reporter.out b/test/message/test_runner_output_spec_reporter.out
    index b3ca09b0561893..8db20b3195e6f9 100644
    --- a/test/message/test_runner_output_spec_reporter.out
    +++ b/test/message/test_runner_output_spec_reporter.out
    @@ -184,7 +184,7 @@
      callback called twice in different ticks (*ms)
      callback called twice in future tick (*ms)
       Error [ERR_TEST_FAILURE]: callback invoked multiple times
    -  *
    +  * {
         failureType: 'multipleCallbackInvocations',
         cause: 'callback invoked multiple times',
         code: 'ERR_TEST_FAILURE'
    @@ -265,6 +265,28 @@
       *
       *
     
    + assertion errors display actual and expected properly (*ms)
    +  AssertionError [ERR_ASSERTION]: Expected values to be loosely deep-equal:
    +  
    +  {
    +    bar: 1,
    +    foo: 1
    +  }
    +  
    +  should loosely deep-equal
    +  
    +   {
    +    bar: 2,
    +    c: [Circular *1]
    +  }
    +  * {
    +    generatedMessage: true,
    +    code: 'ERR_ASSERTION',
    +    actual: [Object],
    +    expected: [Object],
    +    operator: 'deepEqual'
    +  }
    +
      invalid subtest fail (*ms)
       'test could not be started because its parent finished'
     
    @@ -275,10 +297,10 @@
      Warning: Test "immediate reject - passes but warns" generated asynchronous activity after the test ended. This activity created the error "Error: rejected from immediate reject fail" and would have caused the test to fail, but instead triggered an unhandledRejection event.
      Warning: Test "callback called twice in different ticks" generated asynchronous activity after the test ended. This activity created the error "Error [ERR_TEST_FAILURE]: callback invoked multiple times" and would have caused the test to fail, but instead triggered an uncaughtException event.
      Warning: Test "callback async throw after done" generated asynchronous activity after the test ended. This activity created the error "Error: thrown from callback async throw after done" and would have caused the test to fail, but instead triggered an uncaughtException event.
    - tests 79
    + tests 80
      suites 0
      pass 37
    - fail 24
    + fail 25
      cancelled 3
      skipped 10
      todo 5
    @@ -490,5 +512,27 @@
       *
       *
     
    + assertion errors display actual and expected properly (*ms)
    +  AssertionError [ERR_ASSERTION]: Expected values to be loosely deep-equal:
    +  
    +  {
    +    bar: 1,
    +    foo: 1
    +  }
    +  
    +  should loosely deep-equal
    +  
    +   {
    +    bar: 2,
    +    c: [Circular *1]
    +  }
    +    * {
    +    generatedMessage: true,
    +    code: 'ERR_ASSERTION',
    +    actual: [Object],
    +    expected: [Object],
    +    operator: 'deepEqual'
    +  }
    +
      invalid subtest fail (*ms)
       'test could not be started because its parent finished'
    
    From bf9608725eeaceb6a114b67d2bb7f14925846f9c Mon Sep 17 00:00:00 2001
    From: Moshe Atlow 
    Date: Sun, 2 Apr 2023 10:05:53 +0300
    Subject: [PATCH 115/131] test_runner: hide failing tests title when all tests
     pass
    
    PR-URL: https://github.com/nodejs/node/pull/47370
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Benjamin Gruenbaum 
    Reviewed-By: Luigi Pinca 
    ---
     lib/internal/test_runner/reporter/spec.js             | 4 ++++
     test/message/test_runner_spec_reporter_successful.js  | 6 ++++++
     test/message/test_runner_spec_reporter_successful.out | 9 +++++++++
     3 files changed, 19 insertions(+)
     create mode 100644 test/message/test_runner_spec_reporter_successful.js
     create mode 100644 test/message/test_runner_spec_reporter_successful.out
    
    diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js
    index d991f563a315c8..69681610e2c46a 100644
    --- a/lib/internal/test_runner/reporter/spec.js
    +++ b/lib/internal/test_runner/reporter/spec.js
    @@ -124,6 +124,10 @@ class SpecReporter extends Transform {
         callback(null, this.#handleEvent({ type, data }));
       }
       _flush(callback) {
    +    if (this.#failedTests.length === 0) {
    +      callback(null, '');
    +      return;
    +    }
         const results = [`\n${colors['test:fail']}${symbols['test:fail']}failing tests:${white}\n`];
         for (let i = 0; i < this.#failedTests.length; i++) {
           ArrayPrototypePush(results, this.#formatTestReport(
    diff --git a/test/message/test_runner_spec_reporter_successful.js b/test/message/test_runner_spec_reporter_successful.js
    new file mode 100644
    index 00000000000000..e5e21e29e15e3e
    --- /dev/null
    +++ b/test/message/test_runner_spec_reporter_successful.js
    @@ -0,0 +1,6 @@
    +// Flags: --no-warnings --test-reporter=spec
    +'use strict';
    +require('../common');
    +const { it } = require('node:test');
    +
    +it('should pass', () => {});
    diff --git a/test/message/test_runner_spec_reporter_successful.out b/test/message/test_runner_spec_reporter_successful.out
    new file mode 100644
    index 00000000000000..e1576063021fc5
    --- /dev/null
    +++ b/test/message/test_runner_spec_reporter_successful.out
    @@ -0,0 +1,9 @@
    +* should pass *(*ms)*
    +*tests 1*
    +*suites 0*
    +*pass 1*
    +*fail 0*
    +*cancelled 0*
    +*skipped 0*
    +*todo 0*
    +*duration_ms *
    
    From d7bd288fb1440d7ece26201353b11b3c17be013a Mon Sep 17 00:00:00 2001
    From: Moshe Atlow 
    Date: Tue, 4 Apr 2023 01:43:32 +0300
    Subject: [PATCH 116/131] test_runner: color errors only when colors are
     available
    
    PR-URL: https://github.com/nodejs/node/pull/47394
    Fixes: https://github.com/nodejs/node/issues/47393
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Rich Trott 
    ---
     lib/internal/test_runner/reporter/spec.js | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/lib/internal/test_runner/reporter/spec.js b/lib/internal/test_runner/reporter/spec.js
    index 69681610e2c46a..ecc20bb866a784 100644
    --- a/lib/internal/test_runner/reporter/spec.js
    +++ b/lib/internal/test_runner/reporter/spec.js
    @@ -14,10 +14,10 @@ const {
     const assert = require('assert');
     const Transform = require('internal/streams/transform');
     const { inspectWithNoCustomRetry } = require('internal/errors');
    -const { green, blue, red, white, gray } = require('internal/util/colors');
    +const { green, blue, red, white, gray, hasColors } = require('internal/util/colors');
     const { getCoverageReport } = require('internal/test_runner/utils');
     
    -const inspectOptions = { __proto__: null, colors: true, breakLength: Infinity };
    +const inspectOptions = { __proto__: null, colors: hasColors, breakLength: Infinity };
     
     const colors = {
       '__proto__': null,
    
    From 658cb1dcb579efc566aafbddc4bbca38326b99d9 Mon Sep 17 00:00:00 2001
    From: "Node.js GitHub Bot" 
    Date: Tue, 4 Apr 2023 19:18:06 +0100
    Subject: [PATCH 117/131] deps: update simdutf to 3.2.3
    
    PR-URL: https://github.com/nodejs/node/pull/47331
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: James M Snell 
    Reviewed-By: Rich Trott 
    ---
     deps/simdutf/simdutf.cpp | 30 +++++++++++++++---------------
     deps/simdutf/simdutf.h   |  6 +++---
     2 files changed, 18 insertions(+), 18 deletions(-)
    
    diff --git a/deps/simdutf/simdutf.cpp b/deps/simdutf/simdutf.cpp
    index d3100c1561d350..3065bcdfbb3857 100644
    --- a/deps/simdutf/simdutf.cpp
    +++ b/deps/simdutf/simdutf.cpp
    @@ -1,4 +1,4 @@
    -/* auto-generated on 2023-02-24 17:01:43 -0500. Do not edit! */
    +/* auto-generated on 2023-03-30 20:31:03 -0400. Do not edit! */
     // dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/src, filename=simdutf.cpp
     /* begin file src/simdutf.cpp */
     #include "simdutf.h"
    @@ -17218,7 +17218,7 @@ std::pair avx512_convert_utf32_to_utf8(const char32_t* b
       __m256i running_max = _mm256_setzero_si256();
       __m256i forbidden_bytemask = _mm256_setzero_si256();
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -17459,7 +17459,7 @@ std::pair avx512_convert_utf32_to_utf8_with_errors(const char32_t
       const __m256i v_7fffffff = _mm256_set1_epi32((uint32_t)0x7fffffff);
       const __m256i v_10ffff = _mm256_set1_epi32((uint32_t)0x10ffff);
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -17697,7 +17697,7 @@ template 
     std::pair avx512_convert_utf32_to_utf16(const char32_t* buf, size_t len, char16_t* utf16_output) {
       const char32_t* end = buf + len;
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
       __m256i forbidden_bytemask = _mm256_setzero_si256();
     
     
    @@ -17764,7 +17764,7 @@ std::pair avx512_convert_utf32_to_utf16_with_errors(const cha
       const char32_t* start = buf;
       const char32_t* end = buf + len;
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 8 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -20064,7 +20064,7 @@ std::pair avx2_convert_utf16_to_utf8(const char16_t* buf
       const __m256i v_f800 = _mm256_set1_epi16((int16_t)0xf800);
       const __m256i v_d800 = _mm256_set1_epi16((int16_t)0xd800);
       const __m256i v_c080 = _mm256_set1_epi16((int16_t)0xc080);
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -20307,7 +20307,7 @@ std::pair avx2_convert_utf16_to_utf8_with_errors(const char16_t*
       const __m256i v_f800 = _mm256_set1_epi16((int16_t)0xf800);
       const __m256i v_d800 = _mm256_set1_epi16((int16_t)0xd800);
       const __m256i v_c080 = _mm256_set1_epi16((int16_t)0xc080);
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -20732,7 +20732,7 @@ std::pair avx2_convert_utf32_to_utf8(const char32_t* buf
       __m256i running_max = _mm256_setzero_si256();
       __m256i forbidden_bytemask = _mm256_setzero_si256();
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -20973,7 +20973,7 @@ std::pair avx2_convert_utf32_to_utf8_with_errors(const char32_t*
       const __m256i v_7fffffff = _mm256_set1_epi32((uint32_t)0x7fffffff);
       const __m256i v_10ffff = _mm256_set1_epi32((uint32_t)0x10ffff);
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -21208,7 +21208,7 @@ template 
     std::pair avx2_convert_utf32_to_utf16(const char32_t* buf, size_t len, char16_t* utf16_output) {
       const char32_t* end = buf + len;
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
       __m256i forbidden_bytemask = _mm256_setzero_si256();
     
     
    @@ -21275,7 +21275,7 @@ std::pair avx2_convert_utf32_to_utf16_with_errors(const char3
       const char32_t* start = buf;
       const char32_t* end = buf + len;
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 8 + safety_margin <= end) {
         __m256i in = _mm256_loadu_si256((__m256i*)buf);
    @@ -25394,7 +25394,7 @@ std::pair sse_convert_utf16_to_utf8(const char16_t* buf,
       const __m128i v_f800 = _mm_set1_epi16((int16_t)0xf800);
       const __m128i v_d800 = _mm_set1_epi16((int16_t)0xd800);
       const __m128i v_c080 = _mm_set1_epi16((int16_t)0xc080);
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m128i in = _mm_loadu_si128((__m128i*)buf);
    @@ -25634,7 +25634,7 @@ std::pair sse_convert_utf16_to_utf8_with_errors(const char16_t* b
       const __m128i v_f800 = _mm_set1_epi16((int16_t)0xf800);
       const __m128i v_d800 = _mm_set1_epi16((int16_t)0xd800);
       const __m128i v_c080 = _mm_set1_epi16((int16_t)0xc080);
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m128i in = _mm_loadu_si128((__m128i*)buf);
    @@ -26056,7 +26056,7 @@ std::pair sse_convert_utf32_to_utf8(const char32_t* buf,
       const __m128i v_7fffffff = _mm_set1_epi32((uint32_t)0x7fffffff);
       __m128i running_max = _mm_setzero_si128();
       __m128i forbidden_bytemask = _mm_setzero_si128();
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m128i in = _mm_loadu_si128((__m128i*)buf);
    @@ -26297,7 +26297,7 @@ std::pair sse_convert_utf32_to_utf8_with_errors(const char32_t* b
       const __m128i v_7fffffff = _mm_set1_epi32((uint32_t)0x7fffffff);
       const __m128i v_10ffff = _mm_set1_epi32((uint32_t)0x10ffff);
     
    -  const size_t safety_margin = 11; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
    +  const size_t safety_margin = 12; // to avoid overruns, see issue https://github.com/simdutf/simdutf/issues/92
     
       while (buf + 16 + safety_margin <= end) {
         __m128i in = _mm_loadu_si128((__m128i*)buf);
    diff --git a/deps/simdutf/simdutf.h b/deps/simdutf/simdutf.h
    index 80189d316cba8c..bc18418fbf52cb 100644
    --- a/deps/simdutf/simdutf.h
    +++ b/deps/simdutf/simdutf.h
    @@ -1,4 +1,4 @@
    -/* auto-generated on 2023-02-24 17:01:43 -0500. Do not edit! */
    +/* auto-generated on 2023-03-30 20:31:03 -0400. Do not edit! */
     // dofile: invoked with prepath=/Users/dlemire/CVS/github/simdutf/include, filename=simdutf.h
     /* begin file include/simdutf.h */
     #ifndef SIMDUTF_H
    @@ -572,7 +572,7 @@ SIMDUTF_DISABLE_UNDESIRED_WARNINGS
     #define SIMDUTF_SIMDUTF_VERSION_H
     
     /** The version of simdutf being used (major.minor.revision) */
    -#define SIMDUTF_VERSION "3.2.2"
    +#define SIMDUTF_VERSION "3.2.3"
     
     namespace simdutf {
     enum {
    @@ -587,7 +587,7 @@ enum {
       /**
        * The revision (major.minor.REVISION) of simdutf being used.
        */
    -  SIMDUTF_VERSION_REVISION = 2
    +  SIMDUTF_VERSION_REVISION = 3
     };
     } // namespace simdutf
     
    
    From 627e33970048d4124262c424d3861424d565aa78 Mon Sep 17 00:00:00 2001
    From: Joyee Cheung 
    Date: Mon, 27 Mar 2023 22:32:04 +0200
    Subject: [PATCH 118/131] test: run doctool tests in parallel
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    PR-URL: https://github.com/nodejs/node/pull/47273
    Refs: https://github.com/nodejs/node/issues/47146
    Reviewed-By: Rich Trott 
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Michaël Zasso 
    Reviewed-By: James M Snell 
    ---
     test/doctool/testcfg.py | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/test/doctool/testcfg.py b/test/doctool/testcfg.py
    index 5778d2f0c5ba5a..33a274a43d6451 100644
    --- a/test/doctool/testcfg.py
    +++ b/test/doctool/testcfg.py
    @@ -4,4 +4,4 @@
     import testpy
     
     def GetConfiguration(context, root):
    -    return testpy.SimpleTestConfiguration(context, root, 'doctool')
    +    return testpy.ParallelTestConfiguration(context, root, 'doctool')
    
    From e7b59c4e6db6e77b485adf2aa49d3023654b0008 Mon Sep 17 00:00:00 2001
    From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
    Date: Tue, 4 Apr 2023 19:28:25 +0000
    Subject: [PATCH 119/131] build: bump github/codeql-action from 2.2.6 to 2.2.9
    
    Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.2.6 to 2.2.9.
    - [Release notes](https://github.com/github/codeql-action/releases)
    - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
    - [Commits](https://github.com/github/codeql-action/compare/16964e90ba004cdf0cd845b866b5df21038b7723...04df1262e6247151b5ac09cd2c303ac36ad3f62b)
    
    PR-URL: https://github.com/nodejs/node/pull/47366
    Reviewed-By: Rich Trott 
    Reviewed-By: Feng Yu 
    ---
     .github/workflows/scorecard.yml | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
    index e7519424ccc112..27ca97808cd52a 100644
    --- a/.github/workflows/scorecard.yml
    +++ b/.github/workflows/scorecard.yml
    @@ -73,6 +73,6 @@ jobs:
     
           # Upload the results to GitHub's code scanning dashboard.
           - name: Upload to code-scanning
    -        uses: github/codeql-action/upload-sarif@16964e90ba004cdf0cd845b866b5df21038b7723  # v2.2.6
    +        uses: github/codeql-action/upload-sarif@04df1262e6247151b5ac09cd2c303ac36ad3f62b  # v2.2.9
             with:
               sarif_file: results.sarif
    
    From 859d00083e6f956684e44bea7cdbff7f000046d3 Mon Sep 17 00:00:00 2001
    From: codedokode 
    Date: Sat, 1 Apr 2023 15:37:16 +0300
    Subject: [PATCH 120/131] doc: add a note about os.cpus() returning an empty
     list
    
    It is not obvious that in some cases cpus() returns an empty list and
    this has caused a bug before:
    https://github.com/isaacs/promise-call-limit/pull/11
    
    PR-URL: https://github.com/nodejs/node/pull/47363
    Reviewed-By: Ben Noordhuis 
    Reviewed-By: Rich Trott 
    ---
     doc/api/os.md | 2 ++
     1 file changed, 2 insertions(+)
    
    diff --git a/doc/api/os.md b/doc/api/os.md
    index 0006b347dc2658..7d55f97f2d8a26 100644
    --- a/doc/api/os.md
    +++ b/doc/api/os.md
    @@ -74,6 +74,8 @@ added: v0.3.3
     * Returns: {Object\[]}
     
     Returns an array of objects containing information about each logical CPU core.
    +The array will be empty if no CPU information is available, such as if the
    +`/proc` file system is unavailable.
     
     The properties included on each object include:
     
    
    From bc389a84930ed9f38dc10a016f0c12322d07928a Mon Sep 17 00:00:00 2001
    From: Joyee Cheung 
    Date: Tue, 28 Mar 2023 00:03:40 +0200
    Subject: [PATCH 121/131] test: use --port=0 in debugger tests that do not have
     to work on 9229
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    To avoid failures when there is another running process occupying
    the port 9229 which may happen if there is a stale process, use the
    --port argument of node-inspect to use a random port in tests that
    don't have to work on port 9229.
    
    The following tests are not touched:
    
    - test-debugger-custom-port: tests a specific port
    - test-debugger-debug-brk: tests a specific port
    - test-debugger-invalid-args: tests other inspect combinations
    - test-debugger-pid: node-inspect does not support -p and --port
      together
    - test-debugger-launch: tests that default port is 9229
    
    PR-URL: https://github.com/nodejs/node/pull/47274
    Refs: https://github.com/nodejs/node/issues/47146
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Michaël Zasso 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Moshe Atlow 
    Reviewed-By: James M Snell 
    ---
     test/sequential/test-debugger-auto-resume.mjs              | 2 +-
     test/sequential/test-debugger-backtrace.js                 | 2 +-
     test/sequential/test-debugger-break.js                     | 2 +-
     test/sequential/test-debugger-breakpoint-exists.js         | 2 +-
     test/sequential/test-debugger-clear-breakpoints.js         | 2 +-
     test/sequential/test-debugger-exceptions.js                | 2 +-
     test/sequential/test-debugger-exec-scope.mjs               | 2 +-
     test/sequential/test-debugger-exec.js                      | 2 +-
     test/sequential/test-debugger-heap-profiler.js             | 2 +-
     test/sequential/test-debugger-help.mjs                     | 2 +-
     test/sequential/test-debugger-launch.mjs                   | 1 +
     test/sequential/test-debugger-list.js                      | 2 +-
     test/sequential/test-debugger-low-level.js                 | 2 +-
     test/sequential/test-debugger-object-type-remote-object.js | 2 +-
     test/sequential/test-debugger-preserve-breaks.js           | 2 +-
     test/sequential/test-debugger-profile-command.js           | 2 +-
     test/sequential/test-debugger-profile.js                   | 2 +-
     test/sequential/test-debugger-repeat-last.js               | 2 +-
     test/sequential/test-debugger-restart-message.js           | 2 +-
     test/sequential/test-debugger-run-after-quit-restart.js    | 2 +-
     test/sequential/test-debugger-sb-before-load.js            | 2 +-
     test/sequential/test-debugger-scripts.js                   | 2 +-
     test/sequential/test-debugger-set-context-line-number.mjs  | 2 +-
     test/sequential/test-debugger-use-strict.js                | 2 +-
     test/sequential/test-debugger-watch-validation.js          | 2 +-
     test/sequential/test-debugger-watchers.mjs                 | 2 +-
     26 files changed, 26 insertions(+), 25 deletions(-)
    
    diff --git a/test/sequential/test-debugger-auto-resume.mjs b/test/sequential/test-debugger-auto-resume.mjs
    index e2f18d6e2bc79b..077258907d136b 100644
    --- a/test/sequential/test-debugger-auto-resume.mjs
    +++ b/test/sequential/test-debugger-auto-resume.mjs
    @@ -21,7 +21,7 @@ addLibraryPath(process.env);
       };
       env.NODE_INSPECT_RESUME_ON_START = '1';
     
    -  const cli = startCLI([script], [], {
    +  const cli = startCLI(['--port=0', script], [], {
         env,
       });
     
    diff --git a/test/sequential/test-debugger-backtrace.js b/test/sequential/test-debugger-backtrace.js
    index c189cb3f5b22e6..f66cc11d70a918 100644
    --- a/test/sequential/test-debugger-backtrace.js
    +++ b/test/sequential/test-debugger-backtrace.js
    @@ -13,7 +13,7 @@ const path = require('path');
     {
       const scriptFullPath = fixtures.path('debugger', 'backtrace.js');
       const script = path.relative(process.cwd(), scriptFullPath);
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
     
       async function runTest() {
         try {
    diff --git a/test/sequential/test-debugger-break.js b/test/sequential/test-debugger-break.js
    index 1d92331d4e1013..65b4355cfe7bc2 100644
    --- a/test/sequential/test-debugger-break.js
    +++ b/test/sequential/test-debugger-break.js
    @@ -11,7 +11,7 @@ const path = require('path');
     
     const scriptFullPath = fixtures.path('debugger', 'break.js');
     const script = path.relative(process.cwd(), scriptFullPath);
    -const cli = startCLI([script]);
    +const cli = startCLI(['--port=0', script]);
     
     (async () => {
       await cli.waitForInitialBreak();
    diff --git a/test/sequential/test-debugger-breakpoint-exists.js b/test/sequential/test-debugger-breakpoint-exists.js
    index e2efa8182e4ade..872fad2d82400c 100644
    --- a/test/sequential/test-debugger-breakpoint-exists.js
    +++ b/test/sequential/test-debugger-breakpoint-exists.js
    @@ -9,7 +9,7 @@ const startCLI = require('../common/debugger');
     
     // Test for "Breakpoint at specified location already exists" error.
     const script = fixtures.path('debugger', 'three-lines.js');
    -const cli = startCLI([script]);
    +const cli = startCLI(['--port=0', script]);
     
     (async () => {
       try {
    diff --git a/test/sequential/test-debugger-clear-breakpoints.js b/test/sequential/test-debugger-clear-breakpoints.js
    index 91349e105a1160..74623ec4371331 100644
    --- a/test/sequential/test-debugger-clear-breakpoints.js
    +++ b/test/sequential/test-debugger-clear-breakpoints.js
    @@ -13,7 +13,7 @@ const path = require('path');
     {
       const scriptFullPath = fixtures.path('debugger', 'break.js');
       const script = path.relative(process.cwd(), scriptFullPath);
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
     
       function onFatal(error) {
         cli.quit();
    diff --git a/test/sequential/test-debugger-exceptions.js b/test/sequential/test-debugger-exceptions.js
    index 3f75161a6b6e3d..7f3e192251e924 100644
    --- a/test/sequential/test-debugger-exceptions.js
    +++ b/test/sequential/test-debugger-exceptions.js
    @@ -13,7 +13,7 @@ const path = require('path');
     {
       const scriptFullPath = fixtures.path('debugger', 'exceptions.js');
       const script = path.relative(process.cwd(), scriptFullPath);
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
     
       (async () => {
         try {
    diff --git a/test/sequential/test-debugger-exec-scope.mjs b/test/sequential/test-debugger-exec-scope.mjs
    index 08b37e279556f2..3e4241cd018fc4 100644
    --- a/test/sequential/test-debugger-exec-scope.mjs
    +++ b/test/sequential/test-debugger-exec-scope.mjs
    @@ -7,7 +7,7 @@ import startCLI from '../common/debugger.js';
     
     import assert from 'assert';
     
    -const cli = startCLI([path('debugger/backtrace.js')]);
    +const cli = startCLI(['--port=0', path('debugger/backtrace.js')]);
     
     try {
       await cli.waitForInitialBreak();
    diff --git a/test/sequential/test-debugger-exec.js b/test/sequential/test-debugger-exec.js
    index 3d4bb9ff63ab91..51bc7497345ba2 100644
    --- a/test/sequential/test-debugger-exec.js
    +++ b/test/sequential/test-debugger-exec.js
    @@ -8,7 +8,7 @@ const startCLI = require('../common/debugger');
     
     const assert = require('assert');
     
    -const cli = startCLI([fixtures.path('debugger/alive.js')]);
    +const cli = startCLI(['--port=0', fixtures.path('debugger/alive.js')]);
     
     async function waitInitialBreak() {
       try {
    diff --git a/test/sequential/test-debugger-heap-profiler.js b/test/sequential/test-debugger-heap-profiler.js
    index dfec0fe10d5a36..1237c33f7f4567 100644
    --- a/test/sequential/test-debugger-heap-profiler.js
    +++ b/test/sequential/test-debugger-heap-profiler.js
    @@ -17,7 +17,7 @@ const filename = path.join(tmpdir.path, 'node.heapsnapshot');
     // Heap profiler take snapshot.
     {
       const opts = { cwd: tmpdir.path };
    -  const cli = startCLI([fixtures.path('debugger/empty.js')], [], opts);
    +  const cli = startCLI(['--port=0', fixtures.path('debugger/empty.js')], [], opts);
     
       async function waitInitialBreak() {
         try {
    diff --git a/test/sequential/test-debugger-help.mjs b/test/sequential/test-debugger-help.mjs
    index 64f569831fba5e..a4e659113bf79c 100644
    --- a/test/sequential/test-debugger-help.mjs
    +++ b/test/sequential/test-debugger-help.mjs
    @@ -7,7 +7,7 @@ import startCLI from '../common/debugger.js';
     
     import assert from 'assert';
     
    -const cli = startCLI([path('debugger', 'empty.js')]);
    +const cli = startCLI(['--port=0', path('debugger', 'empty.js')]);
     
     try {
       await cli.waitForInitialBreak();
    diff --git a/test/sequential/test-debugger-launch.mjs b/test/sequential/test-debugger-launch.mjs
    index 9d4016c1f5d5e4..d501d0f9eb21eb 100644
    --- a/test/sequential/test-debugger-launch.mjs
    +++ b/test/sequential/test-debugger-launch.mjs
    @@ -1,6 +1,7 @@
     import { skipIfInspectorDisabled } from '../common/index.mjs';
     skipIfInspectorDisabled();
     
    +// This must be in sequential because we check that the default port is 9229.
     import { path } from '../common/fixtures.mjs';
     import startCLI from '../common/debugger.js';
     
    diff --git a/test/sequential/test-debugger-list.js b/test/sequential/test-debugger-list.js
    index 594874e140b306..6f2e36e763a651 100644
    --- a/test/sequential/test-debugger-list.js
    +++ b/test/sequential/test-debugger-list.js
    @@ -8,7 +8,7 @@ const startCLI = require('../common/debugger');
     
     const assert = require('assert');
     
    -const cli = startCLI([fixtures.path('debugger/three-lines.js')]);
    +const cli = startCLI(['--port=0', fixtures.path('debugger/three-lines.js')]);
     
     (async () => {
       await cli.waitForInitialBreak();
    diff --git a/test/sequential/test-debugger-low-level.js b/test/sequential/test-debugger-low-level.js
    index 93c8e1b625591d..31f67849f54748 100644
    --- a/test/sequential/test-debugger-low-level.js
    +++ b/test/sequential/test-debugger-low-level.js
    @@ -9,7 +9,7 @@ const assert = require('assert');
     
     // Debugger agent direct access.
     {
    -  const cli = startCLI([fixtures.path('debugger/three-lines.js')]);
    +  const cli = startCLI(['--port=0', fixtures.path('debugger/three-lines.js')]);
       const scriptPattern = /^\* (\d+): \S+debugger(?:\/|\\)three-lines\.js/m;
     
       async function testDebuggerLowLevel() {
    diff --git a/test/sequential/test-debugger-object-type-remote-object.js b/test/sequential/test-debugger-object-type-remote-object.js
    index 7404eae3963447..a055e8ce0fb9e4 100644
    --- a/test/sequential/test-debugger-object-type-remote-object.js
    +++ b/test/sequential/test-debugger-object-type-remote-object.js
    @@ -8,7 +8,7 @@ const startCLI = require('../common/debugger');
     
     const assert = require('assert');
     
    -const cli = startCLI([fixtures.path('debugger/empty.js')]);
    +const cli = startCLI(['--port=0', fixtures.path('debugger/empty.js')]);
     
     (async () => {
       await cli.waitForInitialBreak();
    diff --git a/test/sequential/test-debugger-preserve-breaks.js b/test/sequential/test-debugger-preserve-breaks.js
    index bb0eba961432ec..00168c570d6b7c 100644
    --- a/test/sequential/test-debugger-preserve-breaks.js
    +++ b/test/sequential/test-debugger-preserve-breaks.js
    @@ -14,7 +14,7 @@ const script = path.relative(process.cwd(), scriptFullPath);
     
     // Run after quit.
     const runTest = async () => {
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
       try {
         await cli.waitForInitialBreak();
         await cli.waitForPrompt();
    diff --git a/test/sequential/test-debugger-profile-command.js b/test/sequential/test-debugger-profile-command.js
    index 06818c2132d9c5..da81dfc6e10569 100644
    --- a/test/sequential/test-debugger-profile-command.js
    +++ b/test/sequential/test-debugger-profile-command.js
    @@ -10,7 +10,7 @@ const assert = require('assert');
     const fs = require('fs');
     const path = require('path');
     
    -const cli = startCLI([fixtures.path('debugger/empty.js')]);
    +const cli = startCLI(['--port=0', fixtures.path('debugger/empty.js')]);
     
     const rootDir = path.resolve(__dirname, '..', '..');
     
    diff --git a/test/sequential/test-debugger-profile.js b/test/sequential/test-debugger-profile.js
    index bf4a69720022cd..6cd0fc9d88d399 100644
    --- a/test/sequential/test-debugger-profile.js
    +++ b/test/sequential/test-debugger-profile.js
    @@ -14,7 +14,7 @@ function delay(ms) {
     
     // Profiles.
     {
    -  const cli = startCLI([fixtures.path('debugger/empty.js')]);
    +  const cli = startCLI(['--port=0', fixtures.path('debugger/empty.js')]);
     
       function onFatal(error) {
         cli.quit();
    diff --git a/test/sequential/test-debugger-repeat-last.js b/test/sequential/test-debugger-repeat-last.js
    index 5bdcc7dc8c8642..9a9b8eecdc710d 100644
    --- a/test/sequential/test-debugger-repeat-last.js
    +++ b/test/sequential/test-debugger-repeat-last.js
    @@ -8,7 +8,7 @@ const fixture = path('debugger-repeat-last.js');
     
     const args = [
       'inspect',
    -  `--port=${common.PORT}`,
    +  '--port=0',
       fixture,
     ];
     
    diff --git a/test/sequential/test-debugger-restart-message.js b/test/sequential/test-debugger-restart-message.js
    index 190d0c18ccc081..e4001b47ee2df4 100644
    --- a/test/sequential/test-debugger-restart-message.js
    +++ b/test/sequential/test-debugger-restart-message.js
    @@ -14,7 +14,7 @@ const startCLI = require('../common/debugger');
     // Using `restart` should result in only one "Connect/For help" message.
     {
       const script = fixtures.path('debugger', 'three-lines.js');
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
     
       const listeningRegExp = /Debugger listening on/g;
     
    diff --git a/test/sequential/test-debugger-run-after-quit-restart.js b/test/sequential/test-debugger-run-after-quit-restart.js
    index a9da07dcdff8bd..2c56f7227aed69 100644
    --- a/test/sequential/test-debugger-run-after-quit-restart.js
    +++ b/test/sequential/test-debugger-run-after-quit-restart.js
    @@ -13,7 +13,7 @@ const path = require('path');
     {
       const scriptFullPath = fixtures.path('debugger', 'three-lines.js');
       const script = path.relative(process.cwd(), scriptFullPath);
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
     
       function onFatal(error) {
         cli.quit();
    diff --git a/test/sequential/test-debugger-sb-before-load.js b/test/sequential/test-debugger-sb-before-load.js
    index e2267156b7420b..416147b4bb64c5 100644
    --- a/test/sequential/test-debugger-sb-before-load.js
    +++ b/test/sequential/test-debugger-sb-before-load.js
    @@ -17,7 +17,7 @@ const script = path.relative(process.cwd(), scriptFullPath);
     const otherScriptFullPath = fixtures.path('debugger', 'cjs', 'other.js');
     const otherScript = path.relative(process.cwd(), otherScriptFullPath);
     
    -const cli = startCLI([script]);
    +const cli = startCLI(['--port=0', script]);
     
     (async () => {
       await cli.waitForInitialBreak();
    diff --git a/test/sequential/test-debugger-scripts.js b/test/sequential/test-debugger-scripts.js
    index b0f611bd1c6491..83f578cf1cabbb 100644
    --- a/test/sequential/test-debugger-scripts.js
    +++ b/test/sequential/test-debugger-scripts.js
    @@ -11,7 +11,7 @@ const assert = require('assert');
     // List scripts.
     {
       const script = fixtures.path('debugger', 'three-lines.js');
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
     
       (async () => {
         try {
    diff --git a/test/sequential/test-debugger-set-context-line-number.mjs b/test/sequential/test-debugger-set-context-line-number.mjs
    index adb6d9ab9e52b0..5c6e281c1d3b4a 100644
    --- a/test/sequential/test-debugger-set-context-line-number.mjs
    +++ b/test/sequential/test-debugger-set-context-line-number.mjs
    @@ -7,7 +7,7 @@ import startCLI from '../common/debugger.js';
     import assert from 'assert';
     
     const script = path('debugger', 'twenty-lines.js');
    -const cli = startCLI([script]);
    +const cli = startCLI(['--port=0', script]);
     
     function onFatal(error) {
       cli.quit();
    diff --git a/test/sequential/test-debugger-use-strict.js b/test/sequential/test-debugger-use-strict.js
    index ae82a9fc82352b..dce928697659ea 100644
    --- a/test/sequential/test-debugger-use-strict.js
    +++ b/test/sequential/test-debugger-use-strict.js
    @@ -11,7 +11,7 @@ const assert = require('assert');
     // Test for files that start with strict directive.
     {
       const script = fixtures.path('debugger', 'use-strict.js');
    -  const cli = startCLI([script]);
    +  const cli = startCLI(['--port=0', script]);
     
       function onFatal(error) {
         cli.quit();
    diff --git a/test/sequential/test-debugger-watch-validation.js b/test/sequential/test-debugger-watch-validation.js
    index 46307c18d55526..2ccd889646729d 100644
    --- a/test/sequential/test-debugger-watch-validation.js
    +++ b/test/sequential/test-debugger-watch-validation.js
    @@ -8,7 +8,7 @@ const startCLI = require('../common/debugger');
     
     const assert = require('assert');
     
    -const cli = startCLI([fixtures.path('debugger/break.js')]);
    +const cli = startCLI(['--port=0', fixtures.path('debugger/break.js')]);
     
     (async () => {
       await cli.waitForInitialBreak();
    diff --git a/test/sequential/test-debugger-watchers.mjs b/test/sequential/test-debugger-watchers.mjs
    index 4ff7ea00a22258..d2492cde67c84e 100644
    --- a/test/sequential/test-debugger-watchers.mjs
    +++ b/test/sequential/test-debugger-watchers.mjs
    @@ -7,7 +7,7 @@ import startCLI from '../common/debugger.js';
     import assert from 'assert';
     
     const script = path('debugger', 'break.js');
    -const cli = startCLI([script]);
    +const cli = startCLI(['--port=0', script]);
     
     function onFatal(error) {
       cli.quit();
    
    From b4074ba730f51a19fa5b2a7994245d1f049f7d7c Mon Sep 17 00:00:00 2001
    From: Joyee Cheung 
    Date: Tue, 28 Mar 2023 00:03:01 +0200
    Subject: [PATCH 122/131] test: move debugger tests with --port=0 to parallel
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    Before
    
    ```
    ❯ tools/test.py "sequential/test-debugger*"
    [00:25|% 100|+  32|-   0]: Done
    
    All tests passed.
    ❯ tools/test.py -J "parallel/test-debugger*"
    [00:05|% 100|+   6|-   0]: Done
    
    All tests passed.
    ```
    
    After
    
    ```
    ❯ tools/test.py "sequential/test-debugger*"
    [00:06|% 100|+   5|-   0]: Done
    
    All tests passed.
    ❯ tools/test.py -J "parallel/test-debugger*"
    [00:05|% 100|+  33|-   0]: Done
    
    All tests passed.
    ```
    
    PR-URL: https://github.com/nodejs/node/pull/47274
    Refs: https://github.com/nodejs/node/issues/47146
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Michaël Zasso 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Moshe Atlow 
    Reviewed-By: James M Snell 
    ---
     test/{sequential => parallel}/test-debugger-auto-resume.mjs       | 0
     test/{sequential => parallel}/test-debugger-backtrace.js          | 0
     test/{sequential => parallel}/test-debugger-break.js              | 0
     test/{sequential => parallel}/test-debugger-breakpoint-exists.js  | 0
     test/{sequential => parallel}/test-debugger-clear-breakpoints.js  | 0
     test/{sequential => parallel}/test-debugger-exceptions.js         | 0
     test/{sequential => parallel}/test-debugger-exec-scope.mjs        | 0
     test/{sequential => parallel}/test-debugger-exec.js               | 0
     test/{sequential => parallel}/test-debugger-heap-profiler.js      | 0
     test/{sequential => parallel}/test-debugger-help.mjs              | 0
     test/{sequential => parallel}/test-debugger-list.js               | 0
     test/{sequential => parallel}/test-debugger-low-level.js          | 0
     .../test-debugger-object-type-remote-object.js                    | 0
     test/{sequential => parallel}/test-debugger-preserve-breaks.js    | 0
     test/{sequential => parallel}/test-debugger-profile-command.js    | 0
     test/{sequential => parallel}/test-debugger-profile.js            | 0
     .../test-debugger-random-port-with-inspect-port.js                | 0
     test/{sequential => parallel}/test-debugger-random-port.js        | 0
     test/{sequential => parallel}/test-debugger-repeat-last.js        | 0
     test/{sequential => parallel}/test-debugger-restart-message.js    | 0
     .../test-debugger-run-after-quit-restart.js                       | 0
     test/{sequential => parallel}/test-debugger-sb-before-load.js     | 0
     test/{sequential => parallel}/test-debugger-scripts.js            | 0
     .../test-debugger-set-context-line-number.mjs                     | 0
     test/{sequential => parallel}/test-debugger-use-strict.js         | 0
     test/{sequential => parallel}/test-debugger-watch-validation.js   | 0
     test/{sequential => parallel}/test-debugger-watchers.mjs          | 0
     27 files changed, 0 insertions(+), 0 deletions(-)
     rename test/{sequential => parallel}/test-debugger-auto-resume.mjs (100%)
     rename test/{sequential => parallel}/test-debugger-backtrace.js (100%)
     rename test/{sequential => parallel}/test-debugger-break.js (100%)
     rename test/{sequential => parallel}/test-debugger-breakpoint-exists.js (100%)
     rename test/{sequential => parallel}/test-debugger-clear-breakpoints.js (100%)
     rename test/{sequential => parallel}/test-debugger-exceptions.js (100%)
     rename test/{sequential => parallel}/test-debugger-exec-scope.mjs (100%)
     rename test/{sequential => parallel}/test-debugger-exec.js (100%)
     rename test/{sequential => parallel}/test-debugger-heap-profiler.js (100%)
     rename test/{sequential => parallel}/test-debugger-help.mjs (100%)
     rename test/{sequential => parallel}/test-debugger-list.js (100%)
     rename test/{sequential => parallel}/test-debugger-low-level.js (100%)
     rename test/{sequential => parallel}/test-debugger-object-type-remote-object.js (100%)
     rename test/{sequential => parallel}/test-debugger-preserve-breaks.js (100%)
     rename test/{sequential => parallel}/test-debugger-profile-command.js (100%)
     rename test/{sequential => parallel}/test-debugger-profile.js (100%)
     rename test/{sequential => parallel}/test-debugger-random-port-with-inspect-port.js (100%)
     rename test/{sequential => parallel}/test-debugger-random-port.js (100%)
     rename test/{sequential => parallel}/test-debugger-repeat-last.js (100%)
     rename test/{sequential => parallel}/test-debugger-restart-message.js (100%)
     rename test/{sequential => parallel}/test-debugger-run-after-quit-restart.js (100%)
     rename test/{sequential => parallel}/test-debugger-sb-before-load.js (100%)
     rename test/{sequential => parallel}/test-debugger-scripts.js (100%)
     rename test/{sequential => parallel}/test-debugger-set-context-line-number.mjs (100%)
     rename test/{sequential => parallel}/test-debugger-use-strict.js (100%)
     rename test/{sequential => parallel}/test-debugger-watch-validation.js (100%)
     rename test/{sequential => parallel}/test-debugger-watchers.mjs (100%)
    
    diff --git a/test/sequential/test-debugger-auto-resume.mjs b/test/parallel/test-debugger-auto-resume.mjs
    similarity index 100%
    rename from test/sequential/test-debugger-auto-resume.mjs
    rename to test/parallel/test-debugger-auto-resume.mjs
    diff --git a/test/sequential/test-debugger-backtrace.js b/test/parallel/test-debugger-backtrace.js
    similarity index 100%
    rename from test/sequential/test-debugger-backtrace.js
    rename to test/parallel/test-debugger-backtrace.js
    diff --git a/test/sequential/test-debugger-break.js b/test/parallel/test-debugger-break.js
    similarity index 100%
    rename from test/sequential/test-debugger-break.js
    rename to test/parallel/test-debugger-break.js
    diff --git a/test/sequential/test-debugger-breakpoint-exists.js b/test/parallel/test-debugger-breakpoint-exists.js
    similarity index 100%
    rename from test/sequential/test-debugger-breakpoint-exists.js
    rename to test/parallel/test-debugger-breakpoint-exists.js
    diff --git a/test/sequential/test-debugger-clear-breakpoints.js b/test/parallel/test-debugger-clear-breakpoints.js
    similarity index 100%
    rename from test/sequential/test-debugger-clear-breakpoints.js
    rename to test/parallel/test-debugger-clear-breakpoints.js
    diff --git a/test/sequential/test-debugger-exceptions.js b/test/parallel/test-debugger-exceptions.js
    similarity index 100%
    rename from test/sequential/test-debugger-exceptions.js
    rename to test/parallel/test-debugger-exceptions.js
    diff --git a/test/sequential/test-debugger-exec-scope.mjs b/test/parallel/test-debugger-exec-scope.mjs
    similarity index 100%
    rename from test/sequential/test-debugger-exec-scope.mjs
    rename to test/parallel/test-debugger-exec-scope.mjs
    diff --git a/test/sequential/test-debugger-exec.js b/test/parallel/test-debugger-exec.js
    similarity index 100%
    rename from test/sequential/test-debugger-exec.js
    rename to test/parallel/test-debugger-exec.js
    diff --git a/test/sequential/test-debugger-heap-profiler.js b/test/parallel/test-debugger-heap-profiler.js
    similarity index 100%
    rename from test/sequential/test-debugger-heap-profiler.js
    rename to test/parallel/test-debugger-heap-profiler.js
    diff --git a/test/sequential/test-debugger-help.mjs b/test/parallel/test-debugger-help.mjs
    similarity index 100%
    rename from test/sequential/test-debugger-help.mjs
    rename to test/parallel/test-debugger-help.mjs
    diff --git a/test/sequential/test-debugger-list.js b/test/parallel/test-debugger-list.js
    similarity index 100%
    rename from test/sequential/test-debugger-list.js
    rename to test/parallel/test-debugger-list.js
    diff --git a/test/sequential/test-debugger-low-level.js b/test/parallel/test-debugger-low-level.js
    similarity index 100%
    rename from test/sequential/test-debugger-low-level.js
    rename to test/parallel/test-debugger-low-level.js
    diff --git a/test/sequential/test-debugger-object-type-remote-object.js b/test/parallel/test-debugger-object-type-remote-object.js
    similarity index 100%
    rename from test/sequential/test-debugger-object-type-remote-object.js
    rename to test/parallel/test-debugger-object-type-remote-object.js
    diff --git a/test/sequential/test-debugger-preserve-breaks.js b/test/parallel/test-debugger-preserve-breaks.js
    similarity index 100%
    rename from test/sequential/test-debugger-preserve-breaks.js
    rename to test/parallel/test-debugger-preserve-breaks.js
    diff --git a/test/sequential/test-debugger-profile-command.js b/test/parallel/test-debugger-profile-command.js
    similarity index 100%
    rename from test/sequential/test-debugger-profile-command.js
    rename to test/parallel/test-debugger-profile-command.js
    diff --git a/test/sequential/test-debugger-profile.js b/test/parallel/test-debugger-profile.js
    similarity index 100%
    rename from test/sequential/test-debugger-profile.js
    rename to test/parallel/test-debugger-profile.js
    diff --git a/test/sequential/test-debugger-random-port-with-inspect-port.js b/test/parallel/test-debugger-random-port-with-inspect-port.js
    similarity index 100%
    rename from test/sequential/test-debugger-random-port-with-inspect-port.js
    rename to test/parallel/test-debugger-random-port-with-inspect-port.js
    diff --git a/test/sequential/test-debugger-random-port.js b/test/parallel/test-debugger-random-port.js
    similarity index 100%
    rename from test/sequential/test-debugger-random-port.js
    rename to test/parallel/test-debugger-random-port.js
    diff --git a/test/sequential/test-debugger-repeat-last.js b/test/parallel/test-debugger-repeat-last.js
    similarity index 100%
    rename from test/sequential/test-debugger-repeat-last.js
    rename to test/parallel/test-debugger-repeat-last.js
    diff --git a/test/sequential/test-debugger-restart-message.js b/test/parallel/test-debugger-restart-message.js
    similarity index 100%
    rename from test/sequential/test-debugger-restart-message.js
    rename to test/parallel/test-debugger-restart-message.js
    diff --git a/test/sequential/test-debugger-run-after-quit-restart.js b/test/parallel/test-debugger-run-after-quit-restart.js
    similarity index 100%
    rename from test/sequential/test-debugger-run-after-quit-restart.js
    rename to test/parallel/test-debugger-run-after-quit-restart.js
    diff --git a/test/sequential/test-debugger-sb-before-load.js b/test/parallel/test-debugger-sb-before-load.js
    similarity index 100%
    rename from test/sequential/test-debugger-sb-before-load.js
    rename to test/parallel/test-debugger-sb-before-load.js
    diff --git a/test/sequential/test-debugger-scripts.js b/test/parallel/test-debugger-scripts.js
    similarity index 100%
    rename from test/sequential/test-debugger-scripts.js
    rename to test/parallel/test-debugger-scripts.js
    diff --git a/test/sequential/test-debugger-set-context-line-number.mjs b/test/parallel/test-debugger-set-context-line-number.mjs
    similarity index 100%
    rename from test/sequential/test-debugger-set-context-line-number.mjs
    rename to test/parallel/test-debugger-set-context-line-number.mjs
    diff --git a/test/sequential/test-debugger-use-strict.js b/test/parallel/test-debugger-use-strict.js
    similarity index 100%
    rename from test/sequential/test-debugger-use-strict.js
    rename to test/parallel/test-debugger-use-strict.js
    diff --git a/test/sequential/test-debugger-watch-validation.js b/test/parallel/test-debugger-watch-validation.js
    similarity index 100%
    rename from test/sequential/test-debugger-watch-validation.js
    rename to test/parallel/test-debugger-watch-validation.js
    diff --git a/test/sequential/test-debugger-watchers.mjs b/test/parallel/test-debugger-watchers.mjs
    similarity index 100%
    rename from test/sequential/test-debugger-watchers.mjs
    rename to test/parallel/test-debugger-watchers.mjs
    
    From a4e5ae7341fc967c9c74c29717c76637cb38cc86 Mon Sep 17 00:00:00 2001
    From: =?UTF-8?q?Tobias=20Nie=C3=9Fen?= 
    Date: Wed, 5 Apr 2023 01:29:04 +0200
    Subject: [PATCH 123/131] src: use stricter compile-time guidance
    
    SnapshotSerializerDeserializer::GetName() appears to confuse static
    analysis such as Coverity.
    
    This changes the function structure to a sequence of if-else blocks and
    marks all branch conditions as constexpr. (Unfortunately, this results
    in a dangling 'else' keyword in the V macro.)
    
    As per a request in the PR discussion, this change does _not_ ensure
    that GetName() can only be called for known types T and instead still
    returns an empty string in that case.
    
    Also use std::is_unsigned_v instead of !std::is_signed_v.
    
    PR-URL: https://github.com/nodejs/node/pull/46509
    Reviewed-By: James M Snell 
    Reviewed-By: Michael Dawson 
    ---
     src/node_snapshotable.cc | 19 ++++++++-----------
     1 file changed, 8 insertions(+), 11 deletions(-)
    
    diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc
    index 693fad8dda40fd..0acfc46fe43953 100644
    --- a/src/node_snapshotable.cc
    +++ b/src/node_snapshotable.cc
    @@ -166,22 +166,19 @@ class SnapshotSerializerDeserializer {
       V(std::string)
     
     #define V(TypeName)                                                            \
    -  if (std::is_same_v) {                                           \
    +  if constexpr (std::is_same_v) {                                 \
         return #TypeName;                                                          \
    -  }
    +  } else  // NOLINT(readability/braces)
         TYPE_LIST(V)
     #undef V
     
    -    std::string name;
    -    if (std::is_arithmetic_v) {
    -      if (!std::is_signed_v) {
    -        name += "u";
    -      }
    -      name += std::is_integral_v ? "int" : "float";
    -      name += std::to_string(sizeof(T) * 8);
    -      name += "_t";
    +    if constexpr (std::is_arithmetic_v) {
    +      return (std::is_unsigned_v   ? "uint"
    +              : std::is_integral_v ? "int"
    +                                      : "float") +
    +             std::to_string(sizeof(T) * 8) + "_t";
         }
    -    return name;
    +    return "";
       }
     
       bool is_debug = false;
    
    From 3441dcae2ecd617ca7e14330eb05eff1c4e74902 Mon Sep 17 00:00:00 2001
    From: Moshe Atlow 
    Date: Tue, 4 Apr 2023 15:20:13 +0300
    Subject: [PATCH 124/131] test: fix flaky test-watch-mode-inspect
    
    PR-URL: https://github.com/nodejs/node/pull/47403
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Rich Trott 
    Reviewed-By: Stephen Belanger 
    Reviewed-By: Luigi Pinca 
    Reviewed-By: Michael Dawson 
    ---
     test/sequential/test-watch-mode-inspect.mjs | 5 +++--
     1 file changed, 3 insertions(+), 2 deletions(-)
    
    diff --git a/test/sequential/test-watch-mode-inspect.mjs b/test/sequential/test-watch-mode-inspect.mjs
    index e403744bb07d9c..a04ba474f6a47f 100644
    --- a/test/sequential/test-watch-mode-inspect.mjs
    +++ b/test/sequential/test-watch-mode-inspect.mjs
    @@ -60,9 +60,10 @@ describe('watch mode - inspect', () => {
     
         // There should be a process per restart and one per parent process.
         // Message about Debugger should appear once per restart.
    +    // On some systems restart can happen multiple times.
         const restarts = stdout.filter((line) => line === 'safe to debug now').length;
    -    assert.strictEqual(stderr.match(/Debugger listening on ws:\/\//g).length, restarts);
    -    assert.strictEqual(new Set(pids).size, restarts + 1);
    +    assert.ok(stderr.match(/Debugger listening on ws:\/\//g).length >= restarts);
    +    assert.ok(new Set(pids).size >= restarts + 1);
       });
     
       it('should prevent attaching debugger with SIGUSR1 to outer process', { skip: common.isWindows }, async () => {
    
    From e0ec04b82e26831e218f18eab8f6b726ccf739b4 Mon Sep 17 00:00:00 2001
    From: Moshe Atlow 
    Date: Wed, 5 Apr 2023 11:08:24 +0300
    Subject: [PATCH 125/131] watch: fix watch path with equals
    
    PR-URL: https://github.com/nodejs/node/pull/47369
    Fixes: https://github.com/nodejs/node/issues/47296
    Reviewed-By: Debadree Chatterjee 
    Reviewed-By: Benjamin Gruenbaum 
    ---
     lib/internal/main/watch_mode.js     |  7 +++--
     test/sequential/test-watch-mode.mjs | 40 ++++++++++++++++++++++++++++-
     2 files changed, 44 insertions(+), 3 deletions(-)
    
    diff --git a/lib/internal/main/watch_mode.js b/lib/internal/main/watch_mode.js
    index 9ef731c06f50b6..5d0d29cc2ff9da 100644
    --- a/lib/internal/main/watch_mode.js
    +++ b/lib/internal/main/watch_mode.js
    @@ -6,6 +6,7 @@ const {
       ArrayPrototypeMap,
       ArrayPrototypePushApply,
       ArrayPrototypeSlice,
    +  StringPrototypeStartsWith,
     } = primordials;
     
     const {
    @@ -38,7 +39,9 @@ const kPreserveOutput = getOptionValue('--watch-preserve-output');
     const kCommand = ArrayPrototypeSlice(process.argv, 1);
     const kCommandStr = inspect(ArrayPrototypeJoin(kCommand, ' '));
     const args = ArrayPrototypeFilter(process.execArgv, (arg, i, arr) =>
    -  arg !== '--watch-path' && arr[i - 1] !== '--watch-path' && arg !== '--watch' && arg !== '--watch-preserve-output');
    +  !StringPrototypeStartsWith(arg, '--watch-path') &&
    +  (!arr[i - 1] || !StringPrototypeStartsWith(arr[i - 1], '--watch-path')) &&
    +  arg !== '--watch' && arg !== '--watch-preserve-output');
     ArrayPrototypePushApply(args, kCommand);
     
     const watcher = new FilesWatcher({ throttle: 500, mode: kShouldFilterModules ? 'filter' : 'all' });
    @@ -50,7 +53,7 @@ let exited;
     
     function start() {
       exited = false;
    -  const stdio = kShouldFilterModules ? ['inherit', 'inherit', 'inherit', 'ipc'] : undefined;
    +  const stdio = kShouldFilterModules ? ['inherit', 'inherit', 'inherit', 'ipc'] : 'inherit';
       child = spawn(process.execPath, args, { stdio, env: { ...process.env, WATCH_REPORT_DEPENDENCIES: '1' } });
       watcher.watchChildProcessModules(child);
       child.once('exit', (code) => {
    diff --git a/test/sequential/test-watch-mode.mjs b/test/sequential/test-watch-mode.mjs
    index fbfd887571e6af..e0b23107f703f6 100644
    --- a/test/sequential/test-watch-mode.mjs
    +++ b/test/sequential/test-watch-mode.mjs
    @@ -137,6 +137,23 @@ describe('watch mode', { concurrency: false, timeout: 60_000 }, () => {
         });
       });
     
    +  it('should watch changes to a file with watch-path', {
    +    skip: !supportsRecursive,
    +  }, async () => {
    +    const file = createTmpFile();
    +    const watchedFile = fixtures.path('watch-mode/subdir/file.js');
    +    const { stderr, stdout } = await spawnWithRestarts({
    +      file,
    +      watchedFile,
    +      args: ['--watch-path', fixtures.path('./watch-mode/subdir'), file],
    +    });
    +    assert.strictEqual(stderr, '');
    +    assertRestartedCorrectly({
    +      stdout,
    +      messages: { inner: 'running', completed: `Completed running ${inspect(file)}`, restarted: `Restarting ${inspect(file)}` },
    +    });
    +  });
    +
       it('should watch when running an non-existing file - when specified under --watch-path', {
         skip: !supportsRecursive
       }, async () => {
    @@ -148,7 +165,28 @@ describe('watch mode', { concurrency: false, timeout: 60_000 }, () => {
           args: ['--watch-path', fixtures.path('./watch-mode/subdir/'), file],
         });
     
    -    assert.strictEqual(stderr, '');
    +    assert.match(stderr, /Error: Cannot find module/);
    +    assert(stderr.match(/Error: Cannot find module/g).length >= 2);
    +
    +    assertRestartedCorrectly({
    +      stdout,
    +      messages: { completed: `Failed running ${inspect(file)}`, restarted: `Restarting ${inspect(file)}` },
    +    });
    +  });
    +
    +  it('should watch when running an non-existing file - when specified under --watch-path with equals', {
    +    skip: !supportsRecursive
    +  }, async () => {
    +    const file = fixtures.path('watch-mode/subdir/non-existing.js');
    +    const watchedFile = fixtures.path('watch-mode/subdir/file.js');
    +    const { stderr, stdout } = await spawnWithRestarts({
    +      file,
    +      watchedFile,
    +      args: [`--watch-path=${fixtures.path('./watch-mode/subdir/')}`, file],
    +    });
    +
    +    assert.match(stderr, /Error: Cannot find module/);
    +    assert(stderr.match(/Error: Cannot find module/g).length >= 2);
         assertRestartedCorrectly({
           stdout,
           messages: { completed: `Failed running ${inspect(file)}`, restarted: `Restarting ${inspect(file)}` },
    
    From 69a98a5d1d700bc54dc9cc50fb7c5446b2f661df Mon Sep 17 00:00:00 2001
    From: Joyee Cheung 
    Date: Wed, 5 Apr 2023 13:13:23 +0200
    Subject: [PATCH 126/131] module: do less CJS module loader initialization at
     run time
    
    This patch:
    
    - Builds the set of modules that can be required by users with/without
      the `node:` prefix at snapshot building time. We only modify it when
      `--expose-internals` but the default set is now in the snapshot. At
      run time the CJS module loader only creates a frozen array out of it.
    - `BuiltinModule.canBeRequiredWithoutScheme()` is now enough to
      determine if an id can be required without `node:` without an
      additional call to `BuiltinModule.canBeRequiredByUsers()`
    - Replace the pending-to-deprecate methods on `Module` with an internal
      implementation that only queries the CLI flags when being invoked.
      So we can install these methods in the snapshot.
    
    PR-URL: https://github.com/nodejs/node/pull/47194
    Reviewed-By: Geoffrey Booth 
    Reviewed-By: Chengzhong Wu 
    ---
     lib/internal/bootstrap/realm.js     | 60 ++++++++++++++++++-----
     lib/internal/modules/cjs/loader.js  | 75 +++++++++++------------------
     lib/internal/modules/esm/hooks.js   |  3 +-
     lib/internal/modules/esm/resolve.js |  6 +--
     lib/internal/modules/helpers.js     | 18 ++++---
     lib/internal/util.js                | 64 ++++++++++++++++++------
     6 files changed, 137 insertions(+), 89 deletions(-)
    
    diff --git a/lib/internal/bootstrap/realm.js b/lib/internal/bootstrap/realm.js
    index 4b03d8247cb4e3..c8cdaeff7d369b 100644
    --- a/lib/internal/bootstrap/realm.js
    +++ b/lib/internal/bootstrap/realm.js
    @@ -63,6 +63,7 @@ const {
       SafeSet,
       String,
       StringPrototypeStartsWith,
    +  StringPrototypeSlice,
       TypeError,
     } = primordials;
     
    @@ -126,10 +127,14 @@ const legacyWrapperList = new SafeSet([
       'util',
     ]);
     
    +// The code bellow assumes that the two lists must not contain any modules
    +// beginning with "internal/".
     // Modules that can only be imported via the node: scheme.
     const schemelessBlockList = new SafeSet([
       'test',
     ]);
    +// Modules that will only be enabled at run time.
    +const experimentalModuleList = new SafeSet();
     
     // Set up process.binding() and process._linkedBinding().
     {
    @@ -196,6 +201,20 @@ const getOwn = (target, property, receiver) => {
         undefined;
     };
     
    +const publicBuiltinIds = builtinIds
    +  .filter((id) =>
    +    !StringPrototypeStartsWith(id, 'internal/') &&
    +      !experimentalModuleList.has(id),
    +  );
    +// Do not expose the loaders to user land even with --expose-internals.
    +const internalBuiltinIds = builtinIds
    +  .filter((id) => StringPrototypeStartsWith(id, 'internal/') && id !== selfId);
    +
    +// When --expose-internals is on we'll add the internal builtin ids to these.
    +const canBeRequiredByUsersList = new SafeSet(publicBuiltinIds);
    +const canBeRequiredByUsersWithoutSchemeList =
    +  new SafeSet(publicBuiltinIds.filter((id) => !schemelessBlockList.has(id)));
    +
     /**
      * An internal abstraction for the built-in JavaScript modules of Node.js.
      * Be careful not to expose this to user land unless --expose-internals is
    @@ -213,7 +232,6 @@ class BuiltinModule {
       constructor(id) {
         this.filename = `${id}.js`;
         this.id = id;
    -    this.canBeRequiredByUsers = !StringPrototypeStartsWith(id, 'internal/');
     
         // The CJS exports object of the module.
         this.exports = {};
    @@ -235,14 +253,23 @@ class BuiltinModule {
         this.exportKeys = undefined;
       }
     
    +  static allowRequireByUsers(id) {
    +    if (id === selfId) {
    +      // No code because this is an assertion against bugs.
    +      // eslint-disable-next-line no-restricted-syntax
    +      throw new Error(`Should not allow ${id}`);
    +    }
    +    canBeRequiredByUsersList.add(id);
    +    if (!schemelessBlockList.has(id)) {
    +      canBeRequiredByUsersWithoutSchemeList.add(id);
    +    }
    +  }
    +
       // To be called during pre-execution when --expose-internals is on.
       // Enables the user-land module loader to access internal modules.
       static exposeInternals() {
    -    for (const { 0: id, 1: mod } of BuiltinModule.map) {
    -      // Do not expose this to user land even with --expose-internals.
    -      if (id !== selfId) {
    -        mod.canBeRequiredByUsers = true;
    -      }
    +    for (let i = 0; i < internalBuiltinIds.length; ++i) {
    +      BuiltinModule.allowRequireByUsers(internalBuiltinIds[i]);
         }
       }
     
    @@ -251,14 +278,23 @@ class BuiltinModule {
       }
     
       static canBeRequiredByUsers(id) {
    -    const mod = BuiltinModule.map.get(id);
    -    return mod && mod.canBeRequiredByUsers;
    +    return canBeRequiredByUsersList.has(id);
       }
     
    -  // Determine if a core module can be loaded without the node: prefix. This
    -  // function does not validate if the module actually exists.
       static canBeRequiredWithoutScheme(id) {
    -    return !schemelessBlockList.has(id);
    +    return canBeRequiredByUsersWithoutSchemeList.has(id);
    +  }
    +
    +  static isBuiltin(id) {
    +    return BuiltinModule.canBeRequiredWithoutScheme(id) || (
    +      typeof id === 'string' &&
    +        StringPrototypeStartsWith(id, 'node:') &&
    +        BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(id, 5))
    +    );
    +  }
    +
    +  static getCanBeRequiredByUsersWithoutSchemeList() {
    +    return ArrayFrom(canBeRequiredByUsersWithoutSchemeList);
       }
     
       static getSchemeOnlyModuleNames() {
    @@ -267,7 +303,7 @@ class BuiltinModule {
     
       // Used by user-land module loaders to compile and load builtins.
       compileForPublicLoader() {
    -    if (!this.canBeRequiredByUsers) {
    +    if (!BuiltinModule.canBeRequiredByUsers(this.id)) {
           // No code because this is an assertion against bugs
           // eslint-disable-next-line no-restricted-syntax
           throw new Error(`Should not compile ${this.id} for public use`);
    diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
    index c6eda4948f7711..8fd08d498a54a7 100644
    --- a/lib/internal/modules/cjs/loader.js
    +++ b/lib/internal/modules/cjs/loader.js
    @@ -34,7 +34,6 @@ const {
       ArrayPrototypeSplice,
       ArrayPrototypeUnshift,
       ArrayPrototypeUnshiftApply,
    -  ArrayPrototypeFlatMap,
       Boolean,
       Error,
       JSONParse,
    @@ -51,7 +50,6 @@ const {
       ReflectSet,
       RegExpPrototypeExec,
       SafeMap,
    -  SafeSet,
       SafeWeakMap,
       String,
       StringPrototypeCharAt,
    @@ -81,7 +79,7 @@ const {
     } = require('internal/source_map/source_map_cache');
     const { pathToFileURL, fileURLToPath, isURLInstance } = require('internal/url');
     const {
    -  deprecate,
    +  pendingDeprecate,
       emitExperimentalWarning,
       kEmptyObject,
       filterOwnProperties,
    @@ -308,44 +306,29 @@ let debug = require('internal/util/debuglog').debuglog('module', (fn) => {
       debug = fn;
     });
     
    -const builtinModules = [];
    +ObjectDefineProperty(Module.prototype, 'parent', {
    +  __proto__: null,
    +  get: pendingDeprecate(
    +    getModuleParent,
    +    'module.parent is deprecated due to accuracy issues. Please use ' +
    +      'require.main to find program entry point instead.',
    +    'DEP0144',
    +  ),
    +  set: pendingDeprecate(
    +    setModuleParent,
    +    'module.parent is deprecated due to accuracy issues. Please use ' +
    +      'require.main to find program entry point instead.',
    +    'DEP0144',
    +  ),
    +});
    +Module._debug = pendingDeprecate(debug, 'Module._debug is deprecated.', 'DEP0077');
    +Module.isBuiltin = BuiltinModule.isBuiltin;
    +
     // This function is called during pre-execution, before any user code is run.
     function initializeCJS() {
    -  const pendingDeprecation = getOptionValue('--pending-deprecation');
    -  ObjectDefineProperty(Module.prototype, 'parent', {
    -    __proto__: null,
    -    get: pendingDeprecation ? deprecate(
    -      getModuleParent,
    -      'module.parent is deprecated due to accuracy issues. Please use ' +
    -        'require.main to find program entry point instead.',
    -      'DEP0144',
    -    ) : getModuleParent,
    -    set: pendingDeprecation ? deprecate(
    -      setModuleParent,
    -      'module.parent is deprecated due to accuracy issues. Please use ' +
    -        'require.main to find program entry point instead.',
    -      'DEP0144',
    -    ) : setModuleParent,
    -  });
    -  Module._debug = deprecate(debug, 'Module._debug is deprecated.', 'DEP0077');
    -
    -  for (const { 0: id, 1: mod } of BuiltinModule.map) {
    -    if (mod.canBeRequiredByUsers &&
    -      BuiltinModule.canBeRequiredWithoutScheme(id)) {
    -      ArrayPrototypePush(builtinModules, id);
    -    }
    -  }
    -
    -  const allBuiltins = new SafeSet(
    -    ArrayPrototypeFlatMap(builtinModules, (bm) => [bm, `node:${bm}`]),
    -  );
    -  BuiltinModule.getSchemeOnlyModuleNames().forEach((builtin) => allBuiltins.add(`node:${builtin}`));
    -  ObjectFreeze(builtinModules);
    -  Module.builtinModules = builtinModules;
    -
    -  Module.isBuiltin = function isBuiltin(moduleName) {
    -    return allBuiltins.has(moduleName);
    -  };
    +  // This need to be done at runtime in case --expose-internals is set.
    +  const builtinModules = BuiltinModule.getCanBeRequiredByUsersWithoutSchemeList();
    +  Module.builtinModules = ObjectFreeze(builtinModules);
     
       initializeCjsConditions();
     
    @@ -801,7 +784,6 @@ Module._resolveLookupPaths = function(request, parent) {
         StringPrototypeStartsWith(request, 'node:') &&
         BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
       ) || (
    -    BuiltinModule.canBeRequiredByUsers(request) &&
         BuiltinModule.canBeRequiredWithoutScheme(request)
       )) {
         debug('looking for %j in []', request);
    @@ -923,11 +905,11 @@ Module._load = function(request, parent, isMain) {
         // Slice 'node:' prefix
         const id = StringPrototypeSlice(request, 5);
     
    -    const module = loadBuiltinModule(id, request);
    -    if (!module?.canBeRequiredByUsers) {
    +    if (!BuiltinModule.canBeRequiredByUsers(id)) {
           throw new ERR_UNKNOWN_BUILTIN_MODULE(request);
         }
     
    +    const module = loadBuiltinModule(id, request);
         return module.exports;
       }
     
    @@ -945,9 +927,8 @@ Module._load = function(request, parent, isMain) {
         }
       }
     
    -  const mod = loadBuiltinModule(filename, request);
    -  if (mod?.canBeRequiredByUsers &&
    -      BuiltinModule.canBeRequiredWithoutScheme(filename)) {
    +  if (BuiltinModule.canBeRequiredWithoutScheme(filename)) {
    +    const mod = loadBuiltinModule(filename, request);
         return mod.exports;
       }
     
    @@ -1001,7 +982,6 @@ Module._resolveFilename = function(request, parent, isMain, options) {
           StringPrototypeStartsWith(request, 'node:') &&
           BuiltinModule.canBeRequiredByUsers(StringPrototypeSlice(request, 5))
         ) || (
    -      BuiltinModule.canBeRequiredByUsers(request) &&
           BuiltinModule.canBeRequiredWithoutScheme(request)
         )
       ) {
    @@ -1457,8 +1437,7 @@ Module._preloadModules = function(requests) {
     
     Module.syncBuiltinESMExports = function syncBuiltinESMExports() {
       for (const mod of BuiltinModule.map.values()) {
    -    if (mod.canBeRequiredByUsers &&
    -        BuiltinModule.canBeRequiredWithoutScheme(mod.id)) {
    +    if (BuiltinModule.canBeRequiredWithoutScheme(mod.id)) {
           mod.syncExports();
         }
       }
    diff --git a/lib/internal/modules/esm/hooks.js b/lib/internal/modules/esm/hooks.js
    index 1e7faa12ca5618..06bce5b8741c44 100644
    --- a/lib/internal/modules/esm/hooks.js
    +++ b/lib/internal/modules/esm/hooks.js
    @@ -207,8 +207,7 @@ class Hooks {
               globalThis,
               // Param getBuiltin
               (builtinName) => {
    -            if (BuiltinModule.canBeRequiredByUsers(builtinName) &&
    -                BuiltinModule.canBeRequiredWithoutScheme(builtinName)) {
    +            if (BuiltinModule.canBeRequiredWithoutScheme(builtinName)) {
                   return require(builtinName);
                 }
                 throw new ERR_INVALID_ARG_VALUE('builtinName', builtinName);
    diff --git a/lib/internal/modules/esm/resolve.js b/lib/internal/modules/esm/resolve.js
    index 58373230da3587..5212e2ce17758d 100644
    --- a/lib/internal/modules/esm/resolve.js
    +++ b/lib/internal/modules/esm/resolve.js
    @@ -736,8 +736,7 @@ function parsePackageName(specifier, base) {
      * @returns {resolved: URL, format? : string}
      */
     function packageResolve(specifier, base, conditions) {
    -  if (BuiltinModule.canBeRequiredByUsers(specifier) &&
    -      BuiltinModule.canBeRequiredWithoutScheme(specifier)) {
    +  if (BuiltinModule.canBeRequiredWithoutScheme(specifier)) {
         return new URL('node:' + specifier);
       }
     
    @@ -919,8 +918,7 @@ function checkIfDisallowedImport(specifier, parsed, parsedParentURL) {
     
             return { url: parsed.href };
           }
    -      if (BuiltinModule.canBeRequiredByUsers(specifier) &&
    -          BuiltinModule.canBeRequiredWithoutScheme(specifier)) {
    +      if (BuiltinModule.canBeRequiredWithoutScheme(specifier)) {
             throw new ERR_NETWORK_IMPORT_DISALLOWED(
               specifier,
               parsedParentURL,
    diff --git a/lib/internal/modules/helpers.js b/lib/internal/modules/helpers.js
    index d20ef5e90f3f39..eb227e205c260f 100644
    --- a/lib/internal/modules/helpers.js
    +++ b/lib/internal/modules/helpers.js
    @@ -58,13 +58,14 @@ function getCjsConditions() {
     }
     
     function loadBuiltinModule(filename, request) {
    -  const mod = BuiltinModule.map.get(filename);
    -  if (mod?.canBeRequiredByUsers) {
    -    debug('load built-in module %s', request);
    -    // compileForPublicLoader() throws if mod.canBeRequiredByUsers is false:
    -    mod.compileForPublicLoader();
    -    return mod;
    +  if (!BuiltinModule.canBeRequiredByUsers(filename)) {
    +    return;
       }
    +  const mod = BuiltinModule.map.get(filename);
    +  debug('load built-in module %s', request);
    +  // compileForPublicLoader() throws if canBeRequiredByUsers is false:
    +  mod.compileForPublicLoader();
    +  return mod;
     }
     
     // Invoke with makeRequireFunction(module) where |module| is the Module object
    @@ -88,8 +89,9 @@ function makeRequireFunction(mod, redirects) {
             const href = destination.href;
             if (destination.protocol === 'node:') {
               const specifier = destination.pathname;
    -          const mod = loadBuiltinModule(specifier, href);
    -          if (mod && mod.canBeRequiredByUsers) {
    +
    +          if (BuiltinModule.canBeRequiredByUsers(specifier)) {
    +            const mod = loadBuiltinModule(specifier, href);
                 return mod.exports;
               }
               throw new ERR_UNKNOWN_BUILTIN_MODULE(specifier);
    diff --git a/lib/internal/util.js b/lib/internal/util.js
    index 1c8a02bd1811d8..2ec432f838087b 100644
    --- a/lib/internal/util.js
    +++ b/lib/internal/util.js
    @@ -62,6 +62,7 @@ const {
       toUSVString: _toUSVString,
     } = internalBinding('util');
     const { isNativeError } = internalBinding('types');
    +const { getOptionValue } = require('internal/options');
     
     const noCrypto = !process.versions.openssl;
     
    @@ -105,6 +106,48 @@ const codesWarned = new SafeSet();
     
     let validateString;
     
    +function getDeprecationWarningEmitter(
    +  code, msg, deprecated, useEmitSync,
    +  shouldEmitWarning = () => true,
    +) {
    +  let warned = false;
    +  return function() {
    +    if (!warned && shouldEmitWarning()) {
    +      warned = true;
    +      if (code !== undefined) {
    +        if (!codesWarned.has(code)) {
    +          const emitWarning = useEmitSync ?
    +            require('internal/process/warning').emitWarningSync :
    +            process.emitWarning;
    +          emitWarning(msg, 'DeprecationWarning', code, deprecated);
    +          codesWarned.add(code);
    +        }
    +      } else {
    +        process.emitWarning(msg, 'DeprecationWarning', deprecated);
    +      }
    +    }
    +  };
    +}
    +
    +function isPendingDeprecation() {
    +  return getOptionValue('--pending-deprecation') &&
    +    !getOptionValue('--no-deprecation');
    +}
    +
    +// Internal deprecator for pending --pending-deprecation. This can be invoked
    +// at snapshot building time as the warning permission is only queried at
    +// run time.
    +function pendingDeprecate(fn, msg, code) {
    +  const emitDeprecationWarning = getDeprecationWarningEmitter(
    +    code, msg, deprecated, false, isPendingDeprecation,
    +  );
    +  function deprecated(...args) {
    +    emitDeprecationWarning();
    +    return ReflectApply(fn, this, args);
    +  }
    +  return deprecated;
    +}
    +
     // Mark that a method should not be used.
     // Returns a modified function which warns once by default.
     // If --no-deprecation is set, then it is a no-op.
    @@ -120,22 +163,12 @@ function deprecate(fn, msg, code, useEmitSync) {
       if (code !== undefined)
         validateString(code, 'code');
     
    -  let warned = false;
    +  const emitDeprecationWarning = getDeprecationWarningEmitter(
    +    code, msg, deprecated, useEmitSync,
    +  );
    +
       function deprecated(...args) {
    -    if (!warned) {
    -      warned = true;
    -      if (code !== undefined) {
    -        if (!codesWarned.has(code)) {
    -          const emitWarning = useEmitSync ?
    -            require('internal/process/warning').emitWarningSync :
    -            process.emitWarning;
    -          emitWarning(msg, 'DeprecationWarning', code, deprecated);
    -          codesWarned.add(code);
    -        }
    -      } else {
    -        process.emitWarning(msg, 'DeprecationWarning', deprecated);
    -      }
    -    }
    +    emitDeprecationWarning();
         if (new.target) {
           return ReflectConstruct(fn, args, new.target);
         }
    @@ -812,4 +845,5 @@ module.exports = {
       kEmptyObject,
       kEnumerableProperty,
       setOwnProperty,
    +  pendingDeprecate,
     };
    
    From 26a199b8e68537c73b926dbaf6ed6f94683597c5 Mon Sep 17 00:00:00 2001
    From: Darshan Sen 
    Date: Thu, 30 Mar 2023 15:44:14 +0530
    Subject: [PATCH 127/131] src: remove usage of `std::shared_ptr::unique()`
    MIME-Version: 1.0
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: 8bit
    
    `std::shared_ptr::unique()` has been removed in C++20, so this change
    uses `std::shared_ptr::use_count()` instead which is available in
    C++20.
    
    Fixes: https://github.com/nodejs/node/issues/47311
    Signed-off-by: Darshan Sen 
    PR-URL: https://github.com/nodejs/node/pull/47315
    Reviewed-By: Tobias Nießen 
    Reviewed-By: Jiawen Geng 
    Reviewed-By: Yagiz Nizipli 
    Reviewed-By: Colin Ihrig 
    Reviewed-By: Ben Noordhuis 
    Reviewed-By: James M Snell 
    ---
     src/node_threadsafe_cow-inl.h | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/src/node_threadsafe_cow-inl.h b/src/node_threadsafe_cow-inl.h
    index 875b38766063f6..1cd0055ed8079f 100644
    --- a/src/node_threadsafe_cow-inl.h
    +++ b/src/node_threadsafe_cow-inl.h
    @@ -7,7 +7,7 @@ namespace node {
     
     template 
     T* CopyOnWrite::write() {
    -  if (!data_.unique()) {
    +  if (data_.use_count() > 1l) {
         data_ = std::make_shared(*data_);
       }
       return data_.get();
    
    From 669fe789287a659344bbaf0d1318d8b05d84fe4f Mon Sep 17 00:00:00 2001
    From: Marco Ippolito 
    Date: Wed, 5 Apr 2023 15:55:28 +0200
    Subject: [PATCH 128/131] tools: fix update-openssl.yml compare version
    
    PR-URL: https://github.com/nodejs/node/pull/47384
    Refs: https://github.com/nodejs/node/pull/46957
    Reviewed-By: Rafael Gonzaga 
    Reviewed-By: Richard Lau 
    Reviewed-By: Mohammed Keyvanzadeh 
    Reviewed-By: Luigi Pinca 
    ---
     .github/workflows/update-openssl.yml | 3 ++-
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    diff --git a/.github/workflows/update-openssl.yml b/.github/workflows/update-openssl.yml
    index c2f919c60f6dcb..f79ea550b42818 100644
    --- a/.github/workflows/update-openssl.yml
    +++ b/.github/workflows/update-openssl.yml
    @@ -28,7 +28,8 @@ jobs:
               NEW_VERSION=$(gh api repos/quictls/openssl/releases -q '.[].tag_name|select(contains("openssl-3"))|ltrimstr("openssl-")' | head -n1)
               NEW_VERSION_NO_RELEASE_1=$(case $NEW_VERSION in *quic1) echo ${NEW_VERSION%1};; *) echo $NEW_VERSION;; esac)
               VERSION_H="./deps/openssl/config/archs/linux-x86_64/asm/include/openssl/opensslv.h"
    -          CURRENT_VERSION=$(grep "OPENSSL_FULL_VERSION_STR" $VERSION_H | sed -n "s/^.*VERSION_STR \"\(.*\)\"/\1/p")
    +          CURRENT_VERSION=$(grep "OPENSSL_FULL_VERSION_STR" $VERSION_H | sed -n "s/^.*VERSION_STR \"\(.*\)\"/\1/p" | sed 's/+/-/g')
    +          echo "comparing current version: $CURRENT_VERSION with $NEW_VERSION_NO_RELEASE_1"
               if [ "$NEW_VERSION_NO_RELEASE_1" != "$CURRENT_VERSION" ]; then
                 echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
                 echo "HAS_UPDATE=true" >> $GITHUB_ENV
    
    From 03a6ff750315b14d67460c60862f92c10779e898 Mon Sep 17 00:00:00 2001
    From: "Node.js GitHub Bot" 
    Date: Fri, 31 Mar 2023 08:09:06 +0000
    Subject: [PATCH 129/131] deps: update ada to 2.0.0
    
    PR-URL: https://github.com/nodejs/node/pull/47339
    Backport-PR-URL: https://github.com/nodejs/node/pull/47434
    Reviewed-By: Tiancheng "Timothy" Gu 
    Reviewed-By: Rich Trott 
    ---
     deps/ada/ada.cpp | 16891 ++++++++++++++++++++++++++++++++++++++-------
     deps/ada/ada.h   |  9021 +++++++++++++++---------
     2 files changed, 20005 insertions(+), 5907 deletions(-)
    
    diff --git a/deps/ada/ada.cpp b/deps/ada/ada.cpp
    index 8b2cdd38ad0bb1..197cb8ed800f98 100644
    --- a/deps/ada/ada.cpp
    +++ b/deps/ada/ada.cpp
    @@ -1,2760 +1,14713 @@
    -/* auto-generated on 2023-02-26 15:07:41 -0500. Do not edit! */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=ada.cpp
    +/* auto-generated on 2023-03-30 17:00:48 -0400. Do not edit! */
     /* begin file src/ada.cpp */
     #include "ada.h"
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=checkers.cpp
     /* begin file src/checkers.cpp */
     #include 
     
     namespace ada::checkers {
     
    -  ada_really_inline ada_constexpr bool is_ipv4(std::string_view view) noexcept {
    -    size_t last_dot = view.rfind('.');
    -    if(last_dot == view.size() - 1) {
    -      view.remove_suffix(1);
    -      last_dot = view.rfind('.');
    -    }
    -    std::string_view number = (last_dot == std::string_view::npos) ? view : view.substr(last_dot+1);
    -    if(number.empty()) { return false; }
    -    /** Optimization opportunity: we have basically identified the last number of the
    -        ipv4 if we return true here. We might as well parse it and have at least one
    -        number parsed when we get to parse_ipv4. */
    -    if(std::all_of(number.begin(), number.end(), ada::checkers::is_digit)) { return true; }
    -    return (checkers::has_hex_prefix(number) && std::all_of(number.begin()+2, number.end(), ada::unicode::is_lowercase_hex));
    -  }
    -
    -
    -  // for use with path_signature, we include all characters that need percent encoding.
    -  static constexpr uint8_t path_signature_table[256] = {
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
    -      1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    -  static_assert(path_signature_table[uint8_t('?')] == 1);
    -  static_assert(path_signature_table[uint8_t('`')] == 1);
    -  static_assert(path_signature_table[uint8_t('{')] == 1);
    -  static_assert(path_signature_table[uint8_t('}')] == 1);
    -  //
    -  static_assert(path_signature_table[uint8_t(' ')] == 1);
    -  static_assert(path_signature_table[uint8_t('?')] == 1);
    -  static_assert(path_signature_table[uint8_t('"')] == 1);
    -  static_assert(path_signature_table[uint8_t('#')] == 1);
    -  static_assert(path_signature_table[uint8_t('<')] == 1);
    -  static_assert(path_signature_table[uint8_t('>')] == 1);
    -  //
    -  static_assert(path_signature_table[0] == 1);
    -  static_assert(path_signature_table[31] == 1);
    -  static_assert(path_signature_table[127] == 1);
    -  static_assert(path_signature_table[128] == 1);
    -  static_assert(path_signature_table[255] == 1);
    -
    -  ada_really_inline constexpr uint8_t path_signature(std::string_view input) noexcept {
    -    // The path percent-encode set is the query percent-encode set and U+003F (?), U+0060 (`), U+007B ({), and U+007D (}).
    -    // The query percent-encode set is the C0 control percent-encode set and U+0020 SPACE, U+0022 ("), U+0023 (#), U+003C (<), and U+003E (>).
    -    // The C0 control percent-encode set are the C0 controls and all code points greater than U+007E (~).
    -    size_t i = 0;
    -    uint8_t accumulator{};
    -    for (; i + 7 < input.size(); i += 8) {
    -      accumulator |= uint8_t(path_signature_table[uint8_t(input[i])] |
    -                    path_signature_table[uint8_t(input[i + 1])] |
    -                    path_signature_table[uint8_t(input[i + 2])] |
    -                    path_signature_table[uint8_t(input[i + 3])] |
    -                    path_signature_table[uint8_t(input[i + 4])] |
    -                    path_signature_table[uint8_t(input[i + 5])] |
    -                    path_signature_table[uint8_t(input[i + 6])] |
    -                    path_signature_table[uint8_t(input[i + 7])]);
    -    }
    -    for (; i < input.size(); i++) {
    -      accumulator |= uint8_t(path_signature_table[uint8_t(input[i])]);
    -    }
    -    return accumulator;
    +ada_really_inline ada_constexpr bool is_ipv4(std::string_view view) noexcept {
    +  size_t last_dot = view.rfind('.');
    +  if (last_dot == view.size() - 1) {
    +    view.remove_suffix(1);
    +    last_dot = view.rfind('.');
       }
    -
    -
    -  ada_really_inline constexpr bool verify_dns_length(std::string_view input) noexcept {
    -    if(input.back() == '.') {
    -      if(input.size() > 254) return false;
    -    } else if (input.size() > 253) return false;
    -
    -    size_t start = 0;
    -    while (start < input.size()) {
    -      auto dot_location = input.find('.', start);
    -      // If not found, it's likely the end of the domain
    -      if(dot_location == std::string_view::npos) dot_location = input.size();
    -
    -      auto label_size = dot_location - start;
    -      if (label_size > 63 || label_size == 0) return false;
    -
    -      start = dot_location + 1;
    -    }
    -
    +  std::string_view number =
    +      (last_dot == std::string_view::npos) ? view : view.substr(last_dot + 1);
    +  if (number.empty()) {
    +    return false;
    +  }
    +  /** Optimization opportunity: we have basically identified the last number of
    +     the ipv4 if we return true here. We might as well parse it and have at
    +     least one number parsed when we get to parse_ipv4. */
    +  if (std::all_of(number.begin(), number.end(), ada::checkers::is_digit)) {
         return true;
       }
    -} // namespace ada::checkers
    -/* end file src/checkers.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=unicode.cpp
    -/* begin file src/unicode.cpp */
    -
    -#include 
    -#if ADA_HAS_ICU
    -// We are good.
    -#else
    -
    -#if defined(_WIN32) && ADA_WINDOWS_TO_ASCII_FALLBACK
    -
    -#ifndef __wtypes_h__
    -#include 
    -#endif // __wtypes_h__
    -
    -#ifndef __WINDEF_
    -#include 
    -#endif // __WINDEF_
    -
    -#include 
    -#endif //defined(_WIN32) && ADA_WINDOWS_TO_ASCII_FALLBACK
    -
    -#endif // ADA_HAS_ICU
    -
    -namespace ada::unicode {
    -
    -  constexpr bool to_lower_ascii(char * input, size_t length) noexcept {
    -    auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    -    uint64_t broadcast_80 = broadcast(0x80);
    -    uint64_t broadcast_Ap = broadcast(128 - 'A');
    -    uint64_t broadcast_Zp = broadcast(128 - 'Z');
    -    uint64_t non_ascii = 0;
    -    size_t i = 0;
    -
    -    for (; i + 7 < length; i += 8) {
    -      uint64_t word{};
    -      memcpy(&word, input + i, sizeof(word));
    -      non_ascii |= (word & broadcast_80);
    -      word ^= (((word+broadcast_Ap)^(word+broadcast_Zp))&broadcast_80)>>2;
    -      memcpy(input + i, &word, sizeof(word));
    -    }
    -    if (i < length) {
    -      uint64_t word{};
    -      memcpy(&word, input + i, length - i);
    -      non_ascii |= (word & broadcast_80);
    -      word ^= (((word+broadcast_Ap)^(word+broadcast_Zp))&broadcast_80)>>2;
    -      memcpy(input + i, &word, length - i);
    -    }
    -    return non_ascii == 0;
    -  }
    -
    -  ada_really_inline constexpr bool has_tabs_or_newline(std::string_view user_input) noexcept {
    -    auto has_zero_byte = [](uint64_t v) {
    -      return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    -    };
    -    auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    -    size_t i = 0;
    -    uint64_t mask1 = broadcast('\r');
    -    uint64_t mask2 = broadcast('\n');
    -    uint64_t mask3 = broadcast('\t');
    -    uint64_t running{0};
    -    for (; i + 7 < user_input.size(); i += 8) {
    -      uint64_t word{};
    -      memcpy(&word, user_input.data() + i, sizeof(word));
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      running |= has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
    -    }
    -    if (i < user_input.size()) {
    -      uint64_t word{};
    -      memcpy(&word, user_input.data() + i, user_input.size() - i);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      running |= has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
    -    }
    -    return running;
    -  }
    -
    -  // A forbidden host code point is U+0000 NULL, U+0009 TAB, U+000A LF, U+000D CR, U+0020 SPACE, U+0023 (#),
    -  // U+002F (/), U+003A (:), U+003C (<), U+003E (>), U+003F (?), U+0040 (@), U+005B ([), U+005C (\), U+005D (]),
    -  // U+005E (^), or U+007C (|).
    -  constexpr static bool is_forbidden_host_code_point_table[] = {
    -    1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    -    static_assert(sizeof(is_forbidden_host_code_point_table) == 256);
    -
    -  ada_really_inline constexpr bool is_forbidden_host_code_point(const char c) noexcept {
    -    return is_forbidden_host_code_point_table[uint8_t(c)];
    -  }
    -
    -  static_assert(unicode::is_forbidden_host_code_point('\0'));
    -  static_assert(unicode::is_forbidden_host_code_point('\t'));
    -  static_assert(unicode::is_forbidden_host_code_point('\n'));
    -  static_assert(unicode::is_forbidden_host_code_point('\r'));
    -  static_assert(unicode::is_forbidden_host_code_point(' '));
    -  static_assert(unicode::is_forbidden_host_code_point('#'));
    -  static_assert(unicode::is_forbidden_host_code_point('/'));
    -  static_assert(unicode::is_forbidden_host_code_point(':'));
    -  static_assert(unicode::is_forbidden_host_code_point('?'));
    -  static_assert(unicode::is_forbidden_host_code_point('@'));
    -  static_assert(unicode::is_forbidden_host_code_point('['));
    -  static_assert(unicode::is_forbidden_host_code_point('?'));
    -  static_assert(unicode::is_forbidden_host_code_point('<'));
    -  static_assert(unicode::is_forbidden_host_code_point('>'));
    -  static_assert(unicode::is_forbidden_host_code_point('\\'));
    -  static_assert(unicode::is_forbidden_host_code_point(']'));
    -  static_assert(unicode::is_forbidden_host_code_point('^'));
    -  static_assert(unicode::is_forbidden_host_code_point('|'));
    +  return (checkers::has_hex_prefix(number) &&
    +          std::all_of(number.begin() + 2, number.end(),
    +                      ada::unicode::is_lowercase_hex));
    +}
     
    -constexpr static uint8_t is_forbidden_domain_code_point_table[] = {
    +// for use with path_signature, we include all characters that need percent
    +// encoding.
    +static constexpr uint8_t path_signature_table[256] = {
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -    1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,
    -    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -    0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
    +    1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    -
    -    static_assert(sizeof(is_forbidden_domain_code_point_table) == 256);
    -
    -  ada_really_inline constexpr bool is_forbidden_domain_code_point(const char c) noexcept {
    -    return is_forbidden_domain_code_point_table[uint8_t(c)];
    -  }
    -
    -  ada_really_inline constexpr bool contains_forbidden_domain_code_point(char * input, size_t length) noexcept {
    -    size_t i = 0;
    -    uint8_t accumulator{};
    -    for(; i + 4 <= length; i+=4) {
    -      accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i])];
    -      accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i+1])];
    -      accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i+2])];
    -      accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i+3])];
    -    }
    -    for(; i < length; i++) {
    -      accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i])];
    -    }
    -    return accumulator;
    -  }
    -
    -  static_assert(unicode::is_forbidden_domain_code_point('%'));
    -  static_assert(unicode::is_forbidden_domain_code_point('\x7f'));
    -  static_assert(unicode::is_forbidden_domain_code_point('\0'));
    -  static_assert(unicode::is_forbidden_domain_code_point('\t'));
    -  static_assert(unicode::is_forbidden_domain_code_point('\n'));
    -  static_assert(unicode::is_forbidden_domain_code_point('\r'));
    -  static_assert(unicode::is_forbidden_domain_code_point(' '));
    -  static_assert(unicode::is_forbidden_domain_code_point('#'));
    -  static_assert(unicode::is_forbidden_domain_code_point('/'));
    -  static_assert(unicode::is_forbidden_domain_code_point(':'));
    -  static_assert(unicode::is_forbidden_domain_code_point('?'));
    -  static_assert(unicode::is_forbidden_domain_code_point('@'));
    -  static_assert(unicode::is_forbidden_domain_code_point('['));
    -  static_assert(unicode::is_forbidden_domain_code_point('?'));
    -  static_assert(unicode::is_forbidden_domain_code_point('<'));
    -  static_assert(unicode::is_forbidden_domain_code_point('>'));
    -  static_assert(unicode::is_forbidden_domain_code_point('\\'));
    -  static_assert(unicode::is_forbidden_domain_code_point(']'));
    -  static_assert(unicode::is_forbidden_domain_code_point('^'));
    -  static_assert(unicode::is_forbidden_domain_code_point('|'));
    -
    -  constexpr static bool is_alnum_plus_table[] = {
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
    -      0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    -      1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    -      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    -
    -  static_assert(sizeof(is_alnum_plus_table) == 256);
    -
    -  ada_really_inline constexpr bool is_alnum_plus(const char c) noexcept {
    -    return is_alnum_plus_table[uint8_t(c)];
    -    // A table is almost surely much faster than the
    -    // following under most compilers: return
    -    // return (std::isalnum(c) || c == '+' || c == '-' || c == '.');
    -  }
    -  static_assert(unicode::is_alnum_plus('+'));
    -  static_assert(unicode::is_alnum_plus('-'));
    -  static_assert(unicode::is_alnum_plus('.'));
    -  static_assert(unicode::is_alnum_plus('0'));
    -  static_assert(unicode::is_alnum_plus('1'));
    -  static_assert(unicode::is_alnum_plus('a'));
    -  static_assert(unicode::is_alnum_plus('b'));
    -
    -  ada_really_inline constexpr bool is_ascii_hex_digit(const char c) noexcept {
    -    return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') || (c >= 'a' && c<= 'f');
    -  }
    -
    -  ada_really_inline constexpr bool is_c0_control_or_space(const char c) noexcept {
    -    return (unsigned char) c <= ' ';
    -  }
    -
    -  ada_really_inline constexpr bool is_ascii_tab_or_newline(const char c) noexcept {
    -    return c == '\t' || c == '\n' || c == '\r';
    -  }
    -
    -  constexpr std::string_view table_is_double_dot_path_segment[] = {"..", "%2e.", ".%2e", "%2e%2e"};
    -
    -  ada_really_inline ada_constexpr bool is_double_dot_path_segment(std::string_view input) noexcept {
    -    // This will catch most cases:
    -    // The length must be 2,4 or 6.
    -    // We divide by two and require
    -    // that the result be between 1 and 3 inclusively.
    -    uint64_t half_length = uint64_t(input.size())/2;
    -    if(half_length - 1 > 2) { return false; }
    -    // We have a string of length 2, 4 or 6.
    -    // We now check the first character:
    -    if((input[0] != '.') && (input[0] != '%')) { return false; }
    -     // We are unlikely the get beyond this point.
    -    int hash_value = (input.size() + (unsigned)(input[0])) & 3;
    -    const std::string_view target = table_is_double_dot_path_segment[hash_value];
    -    if(target.size() != input.size()) { return false; }
    -    // We almost never get here.
    -    // Optimizing the rest is relatively unimportant.
    -    auto prefix_equal_unsafe = [](std::string_view a, std::string_view b) {
    -      uint16_t A, B;
    -      memcpy(&A,a.data(), sizeof(A));
    -      memcpy(&B,b.data(), sizeof(B));
    -      return A == B;
    -    };
    -    if(!prefix_equal_unsafe(input,target)) { return false; }
    -    for(size_t i = 2; i < input.size(); i++) {
    -      char c = input[i];
    -      if((uint8_t((c|0x20) - 0x61) <= 25 ? (c|0x20) : c) != target[i]) { return false; }
    -    }
    -    return true;
    -    // The above code might be a bit better than the code below. Compilers
    -    // are not stupid and may use the fact that these strings have length 2,4 and 6
    -    // and other tricks.
    -    //return input == ".." ||
    -    //  input == ".%2e" || input == ".%2E" ||
    -    //  input == "%2e." || input == "%2E." ||
    -    //  input == "%2e%2e" || input == "%2E%2E" || input == "%2E%2e" || input == "%2e%2E";
    -  }
    -
    -  ada_really_inline constexpr bool is_single_dot_path_segment(std::string_view input) noexcept {
    -    return input == "." || input == "%2e" || input == "%2E";
    -  }
    -
    -  ada_really_inline constexpr bool is_lowercase_hex(const char c) noexcept {
    -    return (c >= '0' && c <= '9') || (c >= 'a' && c<= 'f');
    -  }
    -
    -  unsigned constexpr convert_hex_to_binary(const char c) noexcept {
    -    // this code can be optimized.
    -    if (c <= '9') { return c - '0'; }
    -    char del = c >= 'a' ? 'a' : 'A';
    -    return 10 + (c - del);
    -  }
    -
    -  std::string percent_decode(const std::string_view input, size_t first_percent) {
    -    // next line is for safety only, we expect users to avoid calling percent_decode
    -    // when first_percent is outside the range.
    -    if(first_percent == std::string_view::npos) { return std::string(input); }
    -    std::string dest(input.substr(0, first_percent));
    -    dest.reserve(input.length());
    -    const char* pointer = input.data() + first_percent;
    -    const char* end = input.data() + input.size();
    -    // Optimization opportunity: if the following code gets
    -    // called often, it can be optimized quite a bit.
    -    while (pointer < end) {
    -      const char ch = pointer[0];
    -      size_t remaining = end - pointer - 1;
    -      if (ch != '%' || remaining < 2 ||
    -          (//ch == '%' && // It is unnecessary to check that ch == '%'.
    -           (!is_ascii_hex_digit(pointer[1]) ||
    -            !is_ascii_hex_digit(pointer[2])))) {
    -        dest += ch;
    -        pointer++;
    -        continue;
    -      } else {
    -        unsigned a = convert_hex_to_binary(pointer[1]);
    -        unsigned b = convert_hex_to_binary(pointer[2]);
    -        char c = static_cast(a * 16 + b);
    -        dest += c;
    -        pointer += 3;
    -      }
    -    }
    -    return dest;
    +static_assert(path_signature_table[uint8_t('?')] == 1);
    +static_assert(path_signature_table[uint8_t('`')] == 1);
    +static_assert(path_signature_table[uint8_t('{')] == 1);
    +static_assert(path_signature_table[uint8_t('}')] == 1);
    +//
    +static_assert(path_signature_table[uint8_t(' ')] == 1);
    +static_assert(path_signature_table[uint8_t('?')] == 1);
    +static_assert(path_signature_table[uint8_t('"')] == 1);
    +static_assert(path_signature_table[uint8_t('#')] == 1);
    +static_assert(path_signature_table[uint8_t('<')] == 1);
    +static_assert(path_signature_table[uint8_t('>')] == 1);
    +static_assert(path_signature_table[uint8_t('\\')] == 2);
    +static_assert(path_signature_table[uint8_t('.')] == 4);
    +static_assert(path_signature_table[uint8_t('%')] == 8);
    +
    +//
    +static_assert(path_signature_table[0] == 1);
    +static_assert(path_signature_table[31] == 1);
    +static_assert(path_signature_table[127] == 1);
    +static_assert(path_signature_table[128] == 1);
    +static_assert(path_signature_table[255] == 1);
    +
    +ada_really_inline constexpr uint8_t path_signature(
    +    std::string_view input) noexcept {
    +  // The path percent-encode set is the query percent-encode set and U+003F (?),
    +  // U+0060 (`), U+007B ({), and U+007D (}). The query percent-encode set is the
    +  // C0 control percent-encode set and U+0020 SPACE, U+0022 ("), U+0023 (#),
    +  // U+003C (<), and U+003E (>). The C0 control percent-encode set are the C0
    +  // controls and all code points greater than U+007E (~).
    +  size_t i = 0;
    +  uint8_t accumulator{};
    +  for (; i + 7 < input.size(); i += 8) {
    +    accumulator |= uint8_t(path_signature_table[uint8_t(input[i])] |
    +                           path_signature_table[uint8_t(input[i + 1])] |
    +                           path_signature_table[uint8_t(input[i + 2])] |
    +                           path_signature_table[uint8_t(input[i + 3])] |
    +                           path_signature_table[uint8_t(input[i + 4])] |
    +                           path_signature_table[uint8_t(input[i + 5])] |
    +                           path_signature_table[uint8_t(input[i + 6])] |
    +                           path_signature_table[uint8_t(input[i + 7])]);
       }
    +  for (; i < input.size(); i++) {
    +    accumulator |= uint8_t(path_signature_table[uint8_t(input[i])]);
    +  }
    +  return accumulator;
    +}
     
    -  std::string percent_encode(const std::string_view input, const uint8_t character_set[]) {
    -    auto pointer = std::find_if(input.begin(), input.end(), [character_set](const char c) {
    -      return character_sets::bit_at(character_set, c);
    -    });
    -    // Optimization: Don't iterate if percent encode is not required
    -    if (pointer == input.end()) { return std::string(input); }
    +ada_really_inline constexpr bool verify_dns_length(
    +    std::string_view input) noexcept {
    +  if (input.back() == '.') {
    +    if (input.size() > 254) return false;
    +  } else if (input.size() > 253)
    +    return false;
     
    -    std::string result(input.substr(0,std::distance(input.begin(), pointer)));
    -    result.reserve(input.length()); // in the worst case, percent encoding might produce 3 characters.
    +  size_t start = 0;
    +  while (start < input.size()) {
    +    auto dot_location = input.find('.', start);
    +    // If not found, it's likely the end of the domain
    +    if (dot_location == std::string_view::npos) dot_location = input.size();
     
    -    for (;pointer != input.end(); pointer++) {
    -      if (character_sets::bit_at(character_set, *pointer)) {
    -        result.append(character_sets::hex + uint8_t(*pointer) * 4, 3);
    -      } else {
    -        result += *pointer;
    -      }
    -    }
    +    auto label_size = dot_location - start;
    +    if (label_size > 63 || label_size == 0) return false;
     
    -    return result;
    +    start = dot_location + 1;
       }
     
    +  return true;
    +}
    +}  // namespace ada::checkers
    +/* end file src/checkers.cpp */
    +/* begin file src/unicode.cpp */
     
    -  bool percent_encode(const std::string_view input, const uint8_t character_set[], std::string &out) {
    -    auto pointer = std::find_if(input.begin(), input.end(), [character_set](const char c) {
    -      return character_sets::bit_at(character_set, c);
    -    });
    -    // Optimization: Don't iterate if percent encode is not required
    -    if (pointer == input.end()) { return false; }
    -    out.clear();
    -    out.append(input.data(), std::distance(input.begin(), pointer));
    +ADA_PUSH_DISABLE_ALL_WARNINGS
    +/* begin file src/ada_idna.cpp */
    +/* auto-generated on 2023-03-28 11:03:13 -0400. Do not edit! */
    +/* begin file src/idna.cpp */
    +/* begin file src/unicode_transcoding.cpp */
     
    -    for (;pointer != input.end(); pointer++) {
    -      if (character_sets::bit_at(character_set, *pointer)) {
    -        out.append(character_sets::hex + uint8_t(*pointer) * 4, 3);
    -      } else {
    -        out += *pointer;
    +#include 
    +#include 
    +namespace ada::idna {
    +
    +size_t utf8_to_utf32(const char* buf, size_t len, char32_t* utf32_output) {
    +  const uint8_t* data = reinterpret_cast(buf);
    +  size_t pos = 0;
    +  char32_t* start{utf32_output};
    +  while (pos < len) {
    +    // try to convert the next block of 16 ASCII bytes
    +    if (pos + 16 <= len) {  // if it is safe to read 16 more
    +                            // bytes, check that they are ascii
    +      uint64_t v1;
    +      std::memcpy(&v1, data + pos, sizeof(uint64_t));
    +      uint64_t v2;
    +      std::memcpy(&v2, data + pos + sizeof(uint64_t), sizeof(uint64_t));
    +      uint64_t v{v1 | v2};
    +      if ((v & 0x8080808080808080) == 0) {
    +        size_t final_pos = pos + 16;
    +        while (pos < final_pos) {
    +          *utf32_output++ = char32_t(buf[pos]);
    +          pos++;
    +        }
    +        continue;
           }
         }
    -    return true;
    -  }
    +    uint8_t leading_byte = data[pos];  // leading byte
    +    if (leading_byte < 0b10000000) {
    +      // converting one ASCII byte !!!
    +      *utf32_output++ = char32_t(leading_byte);
    +      pos++;
    +    } else if ((leading_byte & 0b11100000) == 0b11000000) {
    +      // We have a two-byte UTF-8
    +      if (pos + 1 >= len) {
    +        return 0;
    +      }  // minimal bound checking
    +      if ((data[pos + 1] & 0b11000000) != 0b10000000) {
    +        return 0;
    +      }
    +      // range check
    +      uint32_t code_point =
    +          (leading_byte & 0b00011111) << 6 | (data[pos + 1] & 0b00111111);
    +      if (code_point < 0x80 || 0x7ff < code_point) {
    +        return 0;
    +      }
    +      *utf32_output++ = char32_t(code_point);
    +      pos += 2;
    +    } else if ((leading_byte & 0b11110000) == 0b11100000) {
    +      // We have a three-byte UTF-8
    +      if (pos + 2 >= len) {
    +        return 0;
    +      }  // minimal bound checking
    +
    +      if ((data[pos + 1] & 0b11000000) != 0b10000000) {
    +        return 0;
    +      }
    +      if ((data[pos + 2] & 0b11000000) != 0b10000000) {
    +        return 0;
    +      }
    +      // range check
    +      uint32_t code_point = (leading_byte & 0b00001111) << 12 |
    +                            (data[pos + 1] & 0b00111111) << 6 |
    +                            (data[pos + 2] & 0b00111111);
    +      if (code_point < 0x800 || 0xffff < code_point ||
    +          (0xd7ff < code_point && code_point < 0xe000)) {
    +        return 0;
    +      }
    +      *utf32_output++ = char32_t(code_point);
    +      pos += 3;
    +    } else if ((leading_byte & 0b11111000) == 0b11110000) {  // 0b11110000
    +      // we have a 4-byte UTF-8 word.
    +      if (pos + 3 >= len) {
    +        return 0;
    +      }  // minimal bound checking
    +      if ((data[pos + 1] & 0b11000000) != 0b10000000) {
    +        return 0;
    +      }
    +      if ((data[pos + 2] & 0b11000000) != 0b10000000) {
    +        return 0;
    +      }
    +      if ((data[pos + 3] & 0b11000000) != 0b10000000) {
    +        return 0;
    +      }
     
    -  bool to_ascii(std::optional& out, const std::string_view plain, const bool be_strict, size_t first_percent) {
    -    std::string percent_decoded_buffer;
    -    std::string_view input = plain;
    -    if(first_percent != std::string_view::npos) {
    -      percent_decoded_buffer = unicode::percent_decode(plain, first_percent);
    -      input = percent_decoded_buffer;
    +      // range check
    +      uint32_t code_point = (leading_byte & 0b00000111) << 18 |
    +                            (data[pos + 1] & 0b00111111) << 12 |
    +                            (data[pos + 2] & 0b00111111) << 6 |
    +                            (data[pos + 3] & 0b00111111);
    +      if (code_point <= 0xffff || 0x10ffff < code_point) {
    +        return 0;
    +      }
    +      *utf32_output++ = char32_t(code_point);
    +      pos += 4;
    +    } else {
    +      return 0;
         }
    -#if ADA_HAS_ICU
    -    out = std::string(255, 0);
    -
    -    UErrorCode status = U_ZERO_ERROR;
    -    uint32_t options = UIDNA_CHECK_BIDI | UIDNA_CHECK_CONTEXTJ | UIDNA_NONTRANSITIONAL_TO_ASCII;
    +  }
    +  return utf32_output - start;
    +}
     
    -    if (be_strict) {
    -      options |= UIDNA_USE_STD3_RULES;
    +size_t utf8_length_from_utf32(const char32_t* buf, size_t len) {
    +  // We are not BOM aware.
    +  const uint32_t* p = reinterpret_cast(buf);
    +  size_t counter{0};
    +  for (size_t i = 0; i < len; i++) {
    +    /** ASCII **/
    +    if (p[i] <= 0x7F) {
    +      counter++;
         }
    -
    -    UIDNA* uidna = uidna_openUTS46(options, &status);
    -    if (U_FAILURE(status)) {
    -      return false;
    +    /** two-byte **/
    +    else if (p[i] <= 0x7FF) {
    +      counter += 2;
         }
    -
    -    UIDNAInfo info = UIDNA_INFO_INITIALIZER;
    -    // RFC 1035 section 2.3.4.
    -    // The domain  name must be at most 255 octets.
    -    // It cannot contain a label longer than 63 octets.
    -    // Thus we should never need more than 255 octets, if we
    -    // do the domain name is in error.
    -    int32_t length = uidna_nameToASCII_UTF8(uidna,
    -                                         input.data(),
    -                                         int32_t(input.length()),
    -                                         out.value().data(), 255,
    -                                         &info,
    -                                         &status);
    -
    -    if (status == U_BUFFER_OVERFLOW_ERROR) {
    -      status = U_ZERO_ERROR;
    -      out.value().resize(length);
    -      // When be_strict is true, this should not be allowed!
    -      length = uidna_nameToASCII_UTF8(uidna,
    -                                     input.data(),
    -                                     int32_t(input.length()),
    -                                     out.value().data(), length,
    -                                     &info,
    -                                     &status);
    -    }
    -
    -    // A label contains hyphen-minus ('-') in the third and fourth positions.
    -    info.errors &= ~UIDNA_ERROR_HYPHEN_3_4;
    -    // A label starts with a hyphen-minus ('-').
    -    info.errors &= ~UIDNA_ERROR_LEADING_HYPHEN;
    -    // A label ends with a hyphen-minus ('-').
    -    info.errors &= ~UIDNA_ERROR_TRAILING_HYPHEN;
    -
    -    if (!be_strict) { // This seems to violate RFC 1035 section 2.3.4.
    -      // A non-final domain name label (or the whole domain name) is empty.
    -      info.errors &= ~UIDNA_ERROR_EMPTY_LABEL;
    -      // A domain name label is longer than 63 bytes.
    -      info.errors &= ~UIDNA_ERROR_LABEL_TOO_LONG;
    -      // A domain name is longer than 255 bytes in its storage form.
    -      info.errors &= ~UIDNA_ERROR_DOMAIN_NAME_TOO_LONG;
    -    }
    -
    -    uidna_close(uidna);
    -
    -    if (U_FAILURE(status) || info.errors != 0 || length == 0) {
    -      out = std::nullopt;
    -      return false;
    +    /** three-byte **/
    +    else if (p[i] <= 0xFFFF) {
    +      counter += 3;
         }
    -    out.value().resize(length); // we possibly want to call :shrink_to_fit otherwise we use 255 bytes.
    -    out.value().shrink_to_fit();
    -#elif defined(_WIN32) && ADA_WINDOWS_TO_ASCII_FALLBACK
    -    (void)be_strict; // unused.
    -    // Fallback on the system if ICU is not available.
    -    // Windows function assumes UTF-16.
    -    std::unique_ptr buffer(new char16_t[input.size()]);
    -    auto convert = [](const char* buf, size_t len, char16_t* utf16_output) {
    -    const uint8_t *data = reinterpret_cast(buf);
    -      size_t pos = 0;
    -      char16_t* start{utf16_output};
    -      while (pos < len) {
    -        // try to convert the next block of 16 ASCII bytes
    -        if (pos + 16 <= len) { // if it is safe to read 16 more bytes, check that they are ascii
    -          uint64_t v1;
    -          ::memcpy(&v1, data + pos, sizeof(uint64_t));
    -          uint64_t v2;
    -          ::memcpy(&v2, data + pos + sizeof(uint64_t), sizeof(uint64_t));
    -          uint64_t v{v1 | v2};
    -          if ((v & 0x8080808080808080) == 0) {
    -            size_t final_pos = pos + 16;
    -            while(pos < final_pos) {
    -              *utf16_output++ = char16_t(buf[pos]);
    -              pos++;
    -            }
    -            continue;
    -          }
    -        }
    -        uint8_t leading_byte = data[pos]; // leading byte
    -        if (leading_byte < 0b10000000) {
    -          // converting one ASCII byte !!!
    -          *utf16_output++ = char16_t(leading_byte);
    -          pos++;
    -        } else if ((leading_byte & 0b11100000) == 0b11000000) {
    -          // We have a two-byte UTF-8, it should become
    -          // a single UTF-16 word.
    -          if(pos + 1 >= len) { return 0; } // minimal bound checking
    -          if ((data[pos + 1] & 0b11000000) != 0b10000000) { return 0; }
    -          // range check
    -          uint32_t code_point = (leading_byte & 0b00011111) << 6 | (data[pos + 1] & 0b00111111);
    -          if (code_point < 0x80 || 0x7ff < code_point) { return 0; }
    -          *utf16_output++ = char16_t(code_point);
    -          pos += 2;
    -        } else if ((leading_byte & 0b11110000) == 0b11100000) {
    -          // We have a three-byte UTF-8, it should become
    -          // a single UTF-16 word.
    -          if(pos + 2 >= len) { return 0; } // minimal bound checking
    -
    -          if ((data[pos + 1] & 0b11000000) != 0b10000000) { return 0; }
    -          if ((data[pos + 2] & 0b11000000) != 0b10000000) { return 0; }
    -          // range check
    -          uint32_t code_point = (leading_byte & 0b00001111) << 12 |
    -                      (data[pos + 1] & 0b00111111) << 6 |
    -                      (data[pos + 2] & 0b00111111);
    -          if (code_point < 0x800 || 0xffff < code_point ||
    -              (0xd7ff < code_point && code_point < 0xe000)) {
    -            return 0;
    -          }
    -          *utf16_output++ = char16_t(code_point);
    -          pos += 3;
    -        } else if ((leading_byte & 0b11111000) == 0b11110000) { // 0b11110000
    -          // we have a 4-byte UTF-8 word.
    -          if(pos + 3 >= len) { return 0; } // minimal bound checking
    -          if ((data[pos + 1] & 0b11000000) != 0b10000000) { return 0; }
    -          if ((data[pos + 2] & 0b11000000) != 0b10000000) { return 0; }
    -          if ((data[pos + 3] & 0b11000000) != 0b10000000) { return 0; }
    -
    -          // range check
    -          uint32_t code_point =
    -              (leading_byte & 0b00000111) << 18 | (data[pos + 1] & 0b00111111) << 12 |
    -              (data[pos + 2] & 0b00111111) << 6 | (data[pos + 3] & 0b00111111);
    -          if (code_point <= 0xffff || 0x10ffff < code_point) { return 0; }
    -          code_point -= 0x10000;
    -          uint16_t high_surrogate = uint16_t(0xD800 + (code_point >> 10));
    -          uint16_t low_surrogate = uint16_t(0xDC00 + (code_point & 0x3FF));
    -          *utf16_output++ = char16_t(high_surrogate);
    -          *utf16_output++ = char16_t(low_surrogate);
    -          pos += 4;
    -        } else {
    -          return 0;
    -        }
    -      }
    -      return int(utf16_output - start);
    -    };
    -    size_t codepoints = convert(input.data(), input.size(), buffer.get());
    -    if(codepoints == 0) {
    -          out = std::nullopt;
    -          return false;
    +    /** four-bytes **/
    +    else {
    +      counter += 4;
         }
    -    int required_buffer_size = IdnToAscii(IDN_ALLOW_UNASSIGNED, (LPCWSTR)buffer.get(), codepoints, NULL, 0);
    +  }
    +  return counter;
    +}
     
    -    if(required_buffer_size == 0) {
    -      out = std::nullopt;
    -      return false;
    +size_t utf32_length_from_utf8(const char* buf, size_t len) {
    +  const int8_t* p = reinterpret_cast(buf);
    +  size_t counter{0};
    +  for (size_t i = 0; i < len; i++) {
    +    // -65 is 0b10111111, anything larger in two-complement's
    +    // should start a new code point.
    +    if (p[i] > -65) {
    +      counter++;
         }
    +  }
    +  return counter;
    +}
     
    -    out = std::string(required_buffer_size, 0);
    -    std::unique_ptr ascii_buffer(new char16_t[required_buffer_size]);
    -
    -    required_buffer_size = IdnToAscii(IDN_ALLOW_UNASSIGNED, (LPCWSTR)buffer.get(), codepoints, (LPWSTR)ascii_buffer.get(), required_buffer_size);
    -    if(required_buffer_size == 0) {
    -      out = std::nullopt;
    -      return false;
    +size_t utf32_to_utf8(const char32_t* buf, size_t len, char* utf8_output) {
    +  const uint32_t* data = reinterpret_cast(buf);
    +  size_t pos = 0;
    +  char* start{utf8_output};
    +  while (pos < len) {
    +    // try to convert the next block of 2 ASCII characters
    +    if (pos + 2 <= len) {  // if it is safe to read 8 more
    +                           // bytes, check that they are ascii
    +      uint64_t v;
    +      std::memcpy(&v, data + pos, sizeof(uint64_t));
    +      if ((v & 0xFFFFFF80FFFFFF80) == 0) {
    +        *utf8_output++ = char(buf[pos]);
    +        *utf8_output++ = char(buf[pos + 1]);
    +        pos += 2;
    +        continue;
    +      }
         }
    -    // This will not validate the punycode, so let us work it in reverse.
    -    int test_reverse = IdnToUnicode(IDN_ALLOW_UNASSIGNED, (LPCWSTR)ascii_buffer.get(), required_buffer_size, NULL, 0);
    -    if(test_reverse == 0) {
    -      out = std::nullopt;
    -      return false;
    +    uint32_t word = data[pos];
    +    if ((word & 0xFFFFFF80) == 0) {
    +      // will generate one UTF-8 bytes
    +      *utf8_output++ = char(word);
    +      pos++;
    +    } else if ((word & 0xFFFFF800) == 0) {
    +      // will generate two UTF-8 bytes
    +      // we have 0b110XXXXX 0b10XXXXXX
    +      *utf8_output++ = char((word >> 6) | 0b11000000);
    +      *utf8_output++ = char((word & 0b111111) | 0b10000000);
    +      pos++;
    +    } else if ((word & 0xFFFF0000) == 0) {
    +      // will generate three UTF-8 bytes
    +      // we have 0b1110XXXX 0b10XXXXXX 0b10XXXXXX
    +      if (word >= 0xD800 && word <= 0xDFFF) {
    +        return 0;
    +      }
    +      *utf8_output++ = char((word >> 12) | 0b11100000);
    +      *utf8_output++ = char(((word >> 6) & 0b111111) | 0b10000000);
    +      *utf8_output++ = char((word & 0b111111) | 0b10000000);
    +      pos++;
    +    } else {
    +      // will generate four UTF-8 bytes
    +      // we have 0b11110XXX 0b10XXXXXX 0b10XXXXXX
    +      // 0b10XXXXXX
    +      if (word > 0x10FFFF) {
    +        return 0;
    +      }
    +      *utf8_output++ = char((word >> 18) | 0b11110000);
    +      *utf8_output++ = char(((word >> 12) & 0b111111) | 0b10000000);
    +      *utf8_output++ = char(((word >> 6) & 0b111111) | 0b10000000);
    +      *utf8_output++ = char((word & 0b111111) | 0b10000000);
    +      pos++;
         }
    -    out = std::string(required_buffer_size, 0);
    -    for(size_t i = 0; i < required_buffer_size; i++) { (*out)[i] = char(ascii_buffer.get()[i]); }
    -#else
    -    (void)be_strict; // unused.
    -    out = input; // We cannot do much more for now.
    -#endif
    -    return true;
       }
    +  return utf8_output - start;
    +}
    +}  // namespace ada::idna
    +/* end file src/unicode_transcoding.cpp */
    +/* begin file src/mapping.cpp */
     
    -} // namespace ada::unicode
    -/* end file src/unicode.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=serializers.cpp
    -/* begin file src/serializers.cpp */
    -
    +#include 
     #include 
     #include 
     
    -namespace ada::serializers {
    -
    -  void find_longest_sequence_of_ipv6_pieces(const std::array& address, size_t& compress, size_t& compress_length) noexcept {
    -    for (size_t i = 0; i < 8; i++) {
    -      if (address[i] == 0) {
    -        size_t next = i + 1;
    -        while (next != 8 && address[next] == 0) ++next;
    -        const size_t count = next - i;
    -        if (compress_length < count) {
    -          compress_length = count;
    -          compress = i;
    -          if (next == 8) break;
    -          i = next;
    -        }
    -      }
    +/* begin file src/mapping_tables.cpp */
    +// IDNA  15.0.0
    +
    +// clang-format off
    +#ifndef ADA_IDNA_TABLES_H
    +#define ADA_IDNA_TABLES_H
    +#include 
    +
    +namespace ada::idna {
    +
    +const uint32_t mappings[5164] =
    +{
    +	97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
    +	114, 115, 116, 117, 118, 119, 120, 121, 122, 32, 32, 776, 32, 772, 50, 51, 32, 769,
    +	956, 32, 807, 49, 49, 8260, 52, 49, 8260, 50, 51, 8260, 52, 224, 225, 226, 227,
    +	228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
    +	244, 245, 246, 248, 249, 250, 251, 252, 253, 254, 257, 259, 261, 263, 265, 267,
    +	269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293, 295, 297, 299,
    +	301, 303, 105, 775, 309, 311, 314, 316, 318, 108, 183, 322, 324, 326, 328, 700,
    +	110, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351, 353, 355, 357, 359,
    +	361, 363, 365, 367, 369, 371, 373, 375, 255, 378, 380, 382, 595, 387, 389, 596,
    +	392, 598, 599, 396, 477, 601, 603, 402, 608, 611, 617, 616, 409, 623, 626, 629,
    +	417, 419, 421, 640, 424, 643, 429, 648, 432, 650, 651, 436, 438, 658, 441, 445,
    +	100, 382, 108, 106, 110, 106, 462, 464, 466, 468, 470, 472, 474, 476, 479, 481,
    +	483, 485, 487, 489, 491, 493, 495, 100, 122, 501, 405, 447, 505, 507, 509, 511,
    +	513, 515, 517, 519, 521, 523, 525, 527, 529, 531, 533, 535, 537, 539, 541, 543,
    +	414, 547, 549, 551, 553, 555, 557, 559, 561, 563, 11365, 572, 410, 11366, 578, 384,
    +	649, 652, 583, 585, 587, 589, 591, 614, 633, 635, 641, 32, 774, 32, 775, 32, 778,
    +	32, 808, 32, 771, 32, 779, 661, 768, 787, 776, 769, 953, 881, 883, 697, 887, 32,
    +	953, 59, 1011, 32, 776, 769, 940, 941, 942, 943, 972, 973, 974, 945, 946, 947, 948,
    +	949, 950, 951, 952, 954, 955, 957, 958, 959, 960, 961, 963, 964, 965, 966, 967,
    +	968, 969, 970, 971, 983, 985, 987, 989, 991, 993, 995, 997, 999, 1001, 1003, 1005,
    +	1007, 1016, 1019, 891, 892, 893, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
    +	1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1072, 1073, 1074, 1075, 1076, 1077,
    +	1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091,
    +	1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1121, 1123,
    +	1125, 1127, 1129, 1131, 1133, 1135, 1137, 1139, 1141, 1143, 1145, 1147, 1149, 1151,
    +	1153, 1163, 1165, 1167, 1169, 1171, 1173, 1175, 1177, 1179, 1181, 1183, 1185, 1187,
    +	1189, 1191, 1193, 1195, 1197, 1199, 1201, 1203, 1205, 1207, 1209, 1211, 1213, 1215,
    +	1218, 1220, 1222, 1224, 1226, 1228, 1230, 1233, 1235, 1237, 1239, 1241, 1243, 1245,
    +	1247, 1249, 1251, 1253, 1255, 1257, 1259, 1261, 1263, 1265, 1267, 1269, 1271, 1273,
    +	1275, 1277, 1279, 1281, 1283, 1285, 1287, 1289, 1291, 1293, 1295, 1297, 1299, 1301,
    +	1303, 1305, 1307, 1309, 1311, 1313, 1315, 1317, 1319, 1321, 1323, 1325, 1327, 1377,
    +	1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391,
    +	1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405,
    +	1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1381, 1410, 1575, 1652, 1608,
    +	1652, 1735, 1652, 1610, 1652, 2325, 2364, 2326, 2364, 2327, 2364, 2332, 2364, 2337,
    +	2364, 2338, 2364, 2347, 2364, 2351, 2364, 2465, 2492, 2466, 2492, 2479, 2492, 2610,
    +	2620, 2616, 2620, 2582, 2620, 2583, 2620, 2588, 2620, 2603, 2620, 2849, 2876, 2850,
    +	2876, 3661, 3634, 3789, 3762, 3755, 3737, 3755, 3745, 3851, 3906, 4023, 3916, 4023,
    +	3921, 4023, 3926, 4023, 3931, 4023, 3904, 4021, 3953, 3954, 3953, 3956, 4018, 3968,
    +	4018, 3953, 3968, 4019, 3968, 4019, 3953, 3968, 3986, 4023, 3996, 4023, 4001, 4023,
    +	4006, 4023, 4011, 4023, 3984, 4021, 11559, 11565, 4316, 5104, 5105, 5106, 5107,
    +	5108, 5109, 42571, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314,
    +	4315, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329,
    +	4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 4343,
    +	4344, 4345, 4346, 4349, 4350, 4351, 592, 593, 7426, 604, 7446, 7447, 7453, 7461,
    +	594, 597, 607, 609, 613, 618, 7547, 669, 621, 7557, 671, 625, 624, 627, 628, 632,
    +	642, 427, 7452, 656, 657, 7681, 7683, 7685, 7687, 7689, 7691, 7693, 7695, 7697,
    +	7699, 7701, 7703, 7705, 7707, 7709, 7711, 7713, 7715, 7717, 7719, 7721, 7723, 7725,
    +	7727, 7729, 7731, 7733, 7735, 7737, 7739, 7741, 7743, 7745, 7747, 7749, 7751, 7753,
    +	7755, 7757, 7759, 7761, 7763, 7765, 7767, 7769, 7771, 7773, 7775, 7777, 7779, 7781,
    +	7783, 7785, 7787, 7789, 7791, 7793, 7795, 7797, 7799, 7801, 7803, 7805, 7807, 7809,
    +	7811, 7813, 7815, 7817, 7819, 7821, 7823, 7825, 7827, 7829, 97, 702, 115, 115, 7841,
    +	7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863, 7865, 7867, 7869,
    +	7871, 7873, 7875, 7877, 7879, 7881, 7883, 7885, 7887, 7889, 7891, 7893, 7895, 7897,
    +	7899, 7901, 7903, 7905, 7907, 7909, 7911, 7913, 7915, 7917, 7919, 7921, 7923, 7925,
    +	7927, 7929, 7931, 7933, 7935, 7936, 7937, 7938, 7939, 7940, 7941, 7942, 7943, 7952,
    +	7953, 7954, 7955, 7956, 7957, 7968, 7969, 7970, 7971, 7972, 7973, 7974, 7975, 7984,
    +	7985, 7986, 7987, 7988, 7989, 7990, 7991, 8000, 8001, 8002, 8003, 8004, 8005, 8017,
    +	8019, 8021, 8023, 8032, 8033, 8034, 8035, 8036, 8037, 8038, 8039, 7936, 953, 7937,
    +	953, 7938, 953, 7939, 953, 7940, 953, 7941, 953, 7942, 953, 7943, 953, 7968, 953,
    +	7969, 953, 7970, 953, 7971, 953, 7972, 953, 7973, 953, 7974, 953, 7975, 953, 8032,
    +	953, 8033, 953, 8034, 953, 8035, 953, 8036, 953, 8037, 953, 8038, 953, 8039, 953,
    +	8048, 953, 945, 953, 940, 953, 8118, 953, 8112, 8113, 32, 787, 32, 834, 32, 776,
    +	834, 8052, 953, 951, 953, 942, 953, 8134, 953, 8050, 32, 787, 768, 32, 787, 769,
    +	32, 787, 834, 912, 8144, 8145, 8054, 32, 788, 768, 32, 788, 769, 32, 788, 834, 944,
    +	8160, 8161, 8058, 8165, 32, 776, 768, 96, 8060, 953, 969, 953, 974, 953, 8182, 953,
    +	8056, 8208, 32, 819, 8242, 8242, 8242, 8242, 8242, 8245, 8245, 8245, 8245, 8245,
    +	33, 33, 32, 773, 63, 63, 63, 33, 33, 63, 48, 53, 54, 55, 56, 57, 43, 8722, 61, 40,
    +	41, 97, 47, 99, 97, 47, 115, 176, 99, 99, 47, 111, 99, 47, 117, 176, 102, 115, 109,
    +	116, 101, 108, 116, 109, 1488, 1489, 1490, 1491, 102, 97, 120, 8721, 49, 8260, 55,
    +	49, 8260, 57, 49, 8260, 49, 48, 49, 8260, 51, 50, 8260, 51, 49, 8260, 53, 50, 8260,
    +	53, 51, 8260, 53, 52, 8260, 53, 49, 8260, 54, 53, 8260, 54, 49, 8260, 56, 51, 8260,
    +	56, 53, 8260, 56, 55, 8260, 56, 105, 105, 105, 105, 105, 105, 118, 118, 105, 118,
    +	105, 105, 118, 105, 105, 105, 105, 120, 120, 105, 120, 105, 105, 48, 8260, 51, 8747,
    +	8747, 8747, 8747, 8747, 8750, 8750, 8750, 8750, 8750, 12296, 12297, 49, 50, 49,
    +	51, 49, 52, 49, 53, 49, 54, 49, 55, 49, 56, 49, 57, 50, 48, 40, 49, 41, 40, 50,
    +	41, 40, 51, 41, 40, 52, 41, 40, 53, 41, 40, 54, 41, 40, 55, 41, 40, 56, 41, 40,
    +	57, 41, 40, 49, 48, 41, 40, 49, 49, 41, 40, 49, 50, 41, 40, 49, 51, 41, 40, 49,
    +	52, 41, 40, 49, 53, 41, 40, 49, 54, 41, 40, 49, 55, 41, 40, 49, 56, 41, 40, 49,
    +	57, 41, 40, 50, 48, 41, 40, 97, 41, 40, 98, 41, 40, 99, 41, 40, 100, 41, 40, 101,
    +	41, 40, 102, 41, 40, 103, 41, 40, 104, 41, 40, 105, 41, 40, 106, 41, 40, 107, 41,
    +	40, 108, 41, 40, 109, 41, 40, 110, 41, 40, 111, 41, 40, 112, 41, 40, 113, 41, 40,
    +	114, 41, 40, 115, 41, 40, 116, 41, 40, 117, 41, 40, 118, 41, 40, 119, 41, 40, 120,
    +	41, 40, 121, 41, 40, 122, 41, 58, 58, 61, 61, 61, 10973, 824, 11312, 11313, 11314,
    +	11315, 11316, 11317, 11318, 11319, 11320, 11321, 11322, 11323, 11324, 11325, 11326,
    +	11327, 11328, 11329, 11330, 11331, 11332, 11333, 11334, 11335, 11336, 11337, 11338,
    +	11339, 11340, 11341, 11342, 11343, 11344, 11345, 11346, 11347, 11348, 11349, 11350,
    +	11351, 11352, 11353, 11354, 11355, 11356, 11357, 11358, 11359, 11361, 619, 7549,
    +	637, 11368, 11370, 11372, 11379, 11382, 575, 576, 11393, 11395, 11397, 11399, 11401,
    +	11403, 11405, 11407, 11409, 11411, 11413, 11415, 11417, 11419, 11421, 11423, 11425,
    +	11427, 11429, 11431, 11433, 11435, 11437, 11439, 11441, 11443, 11445, 11447, 11449,
    +	11451, 11453, 11455, 11457, 11459, 11461, 11463, 11465, 11467, 11469, 11471, 11473,
    +	11475, 11477, 11479, 11481, 11483, 11485, 11487, 11489, 11491, 11500, 11502, 11507,
    +	11617, 27597, 40863, 19968, 20008, 20022, 20031, 20057, 20101, 20108, 20128, 20154,
    +	20799, 20837, 20843, 20866, 20886, 20907, 20960, 20981, 20992, 21147, 21241, 21269,
    +	21274, 21304, 21313, 21340, 21353, 21378, 21430, 21448, 21475, 22231, 22303, 22763,
    +	22786, 22794, 22805, 22823, 22899, 23376, 23424, 23544, 23567, 23586, 23608, 23662,
    +	23665, 24027, 24037, 24049, 24062, 24178, 24186, 24191, 24308, 24318, 24331, 24339,
    +	24400, 24417, 24435, 24515, 25096, 25142, 25163, 25903, 25908, 25991, 26007, 26020,
    +	26041, 26080, 26085, 26352, 26376, 26408, 27424, 27490, 27513, 27571, 27595, 27604,
    +	27611, 27663, 27668, 27700, 28779, 29226, 29238, 29243, 29247, 29255, 29273, 29275,
    +	29356, 29572, 29577, 29916, 29926, 29976, 29983, 29992, 30000, 30091, 30098, 30326,
    +	30333, 30382, 30399, 30446, 30683, 30690, 30707, 31034, 31160, 31166, 31348, 31435,
    +	31481, 31859, 31992, 32566, 32593, 32650, 32701, 32769, 32780, 32786, 32819, 32895,
    +	32905, 33251, 33258, 33267, 33276, 33292, 33307, 33311, 33390, 33394, 33400, 34381,
    +	34411, 34880, 34892, 34915, 35198, 35211, 35282, 35328, 35895, 35910, 35925, 35960,
    +	35997, 36196, 36208, 36275, 36523, 36554, 36763, 36784, 36789, 37009, 37193, 37318,
    +	37324, 37329, 38263, 38272, 38428, 38582, 38585, 38632, 38737, 38750, 38754, 38761,
    +	38859, 38893, 38899, 38913, 39080, 39131, 39135, 39318, 39321, 39340, 39592, 39640,
    +	39647, 39717, 39727, 39730, 39740, 39770, 40165, 40565, 40575, 40613, 40635, 40643,
    +	40653, 40657, 40697, 40701, 40718, 40723, 40736, 40763, 40778, 40786, 40845, 40860,
    +	40864, 46, 12306, 21316, 21317, 32, 12441, 32, 12442, 12424, 12426, 12467, 12488,
    +	4352, 4353, 4522, 4354, 4524, 4525, 4355, 4356, 4357, 4528, 4529, 4530, 4531, 4532,
    +	4533, 4378, 4358, 4359, 4360, 4385, 4361, 4362, 4363, 4364, 4365, 4366, 4367, 4368,
    +	4369, 4370, 4449, 4450, 4451, 4452, 4453, 4454, 4455, 4456, 4457, 4458, 4459, 4460,
    +	4461, 4462, 4463, 4464, 4465, 4466, 4467, 4468, 4469, 4372, 4373, 4551, 4552, 4556,
    +	4558, 4563, 4567, 4569, 4380, 4573, 4575, 4381, 4382, 4384, 4386, 4387, 4391, 4393,
    +	4395, 4396, 4397, 4398, 4399, 4402, 4406, 4416, 4423, 4428, 4593, 4594, 4439, 4440,
    +	4441, 4484, 4485, 4488, 4497, 4498, 4500, 4510, 4513, 19977, 22235, 19978, 20013,
    +	19979, 30002, 19993, 19969, 22825, 22320, 40, 4352, 41, 40, 4354, 41, 40, 4355,
    +	41, 40, 4357, 41, 40, 4358, 41, 40, 4359, 41, 40, 4361, 41, 40, 4363, 41, 40, 4364,
    +	41, 40, 4366, 41, 40, 4367, 41, 40, 4368, 41, 40, 4369, 41, 40, 4370, 41, 40, 44032,
    +	41, 40, 45208, 41, 40, 45796, 41, 40, 46972, 41, 40, 47560, 41, 40, 48148, 41, 40,
    +	49324, 41, 40, 50500, 41, 40, 51088, 41, 40, 52264, 41, 40, 52852, 41, 40, 53440,
    +	41, 40, 54028, 41, 40, 54616, 41, 40, 51452, 41, 40, 50724, 51204, 41, 40, 50724,
    +	54980, 41, 40, 19968, 41, 40, 20108, 41, 40, 19977, 41, 40, 22235, 41, 40, 20116,
    +	41, 40, 20845, 41, 40, 19971, 41, 40, 20843, 41, 40, 20061, 41, 40, 21313, 41, 40,
    +	26376, 41, 40, 28779, 41, 40, 27700, 41, 40, 26408, 41, 40, 37329, 41, 40, 22303,
    +	41, 40, 26085, 41, 40, 26666, 41, 40, 26377, 41, 40, 31038, 41, 40, 21517, 41, 40,
    +	29305, 41, 40, 36001, 41, 40, 31069, 41, 40, 21172, 41, 40, 20195, 41, 40, 21628,
    +	41, 40, 23398, 41, 40, 30435, 41, 40, 20225, 41, 40, 36039, 41, 40, 21332, 41, 40,
    +	31085, 41, 40, 20241, 41, 40, 33258, 41, 40, 33267, 41, 21839, 24188, 31631, 112,
    +	116, 101, 50, 50, 50, 52, 50, 53, 50, 54, 50, 55, 50, 56, 50, 57, 51, 48, 51, 51,
    +	51, 52, 51, 53, 52280, 44256, 51452, 51032, 50864, 31192, 30007, 36969, 20778, 21360,
    +	27880, 38917, 20889, 27491, 24038, 21491, 21307, 23447, 22812, 51, 54, 51, 55, 51,
    +	56, 51, 57, 52, 48, 52, 52, 52, 53, 52, 54, 52, 55, 52, 56, 52, 57, 53, 48, 49,
    +	26376, 50, 26376, 51, 26376, 52, 26376, 53, 26376, 54, 26376, 55, 26376, 56, 26376,
    +	57, 26376, 49, 48, 26376, 49, 49, 26376, 49, 50, 26376, 104, 103, 101, 114, 103,
    +	101, 118, 108, 116, 100, 12450, 12452, 12454, 12456, 12458, 12459, 12461, 12463,
    +	12465, 12469, 12471, 12473, 12475, 12477, 12479, 12481, 12484, 12486, 12490, 12491,
    +	12492, 12493, 12494, 12495, 12498, 12501, 12504, 12507, 12510, 12511, 12512, 12513,
    +	12514, 12516, 12518, 12520, 12521, 12522, 12523, 12524, 12525, 12527, 12528, 12529,
    +	12530, 20196, 21644, 12450, 12497, 12540, 12488, 12450, 12523, 12501, 12449, 12450,
    +	12531, 12506, 12450, 12450, 12540, 12523, 12452, 12491, 12531, 12464, 12452, 12531,
    +	12481, 12454, 12457, 12531, 12456, 12473, 12463, 12540, 12489, 12456, 12540, 12459,
    +	12540, 12458, 12531, 12473, 12458, 12540, 12512, 12459, 12452, 12522, 12459, 12521,
    +	12483, 12488, 12459, 12525, 12522, 12540, 12460, 12525, 12531, 12460, 12531, 12510,
    +	12462, 12460, 12462, 12491, 12540, 12461, 12517, 12522, 12540, 12462, 12523, 12480,
    +	12540, 12461, 12525, 12461, 12525, 12464, 12521, 12512, 12461, 12525, 12513, 12540,
    +	12488, 12523, 12461, 12525, 12527, 12483, 12488, 12464, 12521, 12512, 12488, 12531,
    +	12463, 12523, 12476, 12452, 12525, 12463, 12525, 12540, 12493, 12465, 12540, 12473,
    +	12467, 12523, 12490, 12467, 12540, 12509, 12469, 12452, 12463, 12523, 12469, 12531,
    +	12481, 12540, 12512, 12471, 12522, 12531, 12464, 12475, 12531, 12481, 12475, 12531,
    +	12488, 12480, 12540, 12473, 12487, 12471, 12489, 12523, 12490, 12494, 12494, 12483,
    +	12488, 12495, 12452, 12484, 12497, 12540, 12475, 12531, 12488, 12497, 12540, 12484,
    +	12496, 12540, 12524, 12523, 12500, 12450, 12473, 12488, 12523, 12500, 12463, 12523,
    +	12500, 12467, 12499, 12523, 12501, 12449, 12521, 12483, 12489, 12501, 12451, 12540,
    +	12488, 12502, 12483, 12471, 12455, 12523, 12501, 12521, 12531, 12504, 12463, 12479,
    +	12540, 12523, 12506, 12477, 12506, 12491, 12498, 12504, 12523, 12484, 12506, 12531,
    +	12473, 12506, 12540, 12472, 12505, 12540, 12479, 12509, 12452, 12531, 12488, 12508,
    +	12523, 12488, 12507, 12531, 12509, 12531, 12489, 12507, 12540, 12523, 12507, 12540,
    +	12531, 12510, 12452, 12463, 12525, 12510, 12452, 12523, 12510, 12483, 12495, 12510,
    +	12523, 12463, 12510, 12531, 12471, 12519, 12531, 12511, 12463, 12525, 12531, 12511,
    +	12522, 12511, 12522, 12496, 12540, 12523, 12513, 12460, 12513, 12460, 12488, 12531,
    +	12516, 12540, 12489, 12516, 12540, 12523, 12518, 12450, 12531, 12522, 12483, 12488,
    +	12523, 12522, 12521, 12523, 12500, 12540, 12523, 12540, 12502, 12523, 12524, 12512,
    +	12524, 12531, 12488, 12466, 12531, 48, 28857, 49, 28857, 50, 28857, 51, 28857, 52,
    +	28857, 53, 28857, 54, 28857, 55, 28857, 56, 28857, 57, 28857, 49, 48, 28857, 49,
    +	49, 28857, 49, 50, 28857, 49, 51, 28857, 49, 52, 28857, 49, 53, 28857, 49, 54, 28857,
    +	49, 55, 28857, 49, 56, 28857, 49, 57, 28857, 50, 48, 28857, 50, 49, 28857, 50, 50,
    +	28857, 50, 51, 28857, 50, 52, 28857, 104, 112, 97, 100, 97, 97, 117, 98, 97, 114,
    +	111, 118, 112, 99, 100, 109, 100, 109, 50, 100, 109, 51, 105, 117, 24179, 25104,
    +	26157, 21644, 22823, 27491, 26126, 27835, 26666, 24335, 20250, 31038, 110, 97, 956,
    +	97, 109, 97, 107, 97, 107, 98, 109, 98, 103, 98, 99, 97, 108, 107, 99, 97, 108,
    +	112, 102, 110, 102, 956, 102, 956, 103, 109, 103, 107, 103, 104, 122, 107, 104,
    +	122, 109, 104, 122, 116, 104, 122, 956, 108, 109, 108, 100, 108, 102, 109, 110,
    +	109, 956, 109, 109, 109, 99, 109, 107, 109, 109, 109, 50, 99, 109, 50, 107, 109,
    +	50, 109, 109, 51, 99, 109, 51, 107, 109, 51, 109, 8725, 115, 109, 8725, 115, 50,
    +	107, 112, 97, 109, 112, 97, 103, 112, 97, 114, 97, 100, 114, 97, 100, 8725, 115,
    +	114, 97, 100, 8725, 115, 50, 112, 115, 110, 115, 956, 115, 109, 115, 112, 118, 110,
    +	118, 956, 118, 109, 118, 107, 118, 112, 119, 110, 119, 956, 119, 109, 119, 107,
    +	119, 107, 969, 109, 969, 98, 113, 99, 8725, 107, 103, 100, 98, 103, 121, 104, 97,
    +	105, 110, 107, 107, 107, 116, 108, 110, 108, 111, 103, 108, 120, 109, 105, 108,
    +	109, 111, 108, 112, 104, 112, 112, 109, 112, 114, 115, 118, 119, 98, 118, 8725,
    +	109, 97, 8725, 109, 49, 26085, 50, 26085, 51, 26085, 52, 26085, 53, 26085, 54, 26085,
    +	55, 26085, 56, 26085, 57, 26085, 49, 48, 26085, 49, 49, 26085, 49, 50, 26085, 49,
    +	51, 26085, 49, 52, 26085, 49, 53, 26085, 49, 54, 26085, 49, 55, 26085, 49, 56, 26085,
    +	49, 57, 26085, 50, 48, 26085, 50, 49, 26085, 50, 50, 26085, 50, 51, 26085, 50, 52,
    +	26085, 50, 53, 26085, 50, 54, 26085, 50, 55, 26085, 50, 56, 26085, 50, 57, 26085,
    +	51, 48, 26085, 51, 49, 26085, 103, 97, 108, 42561, 42563, 42565, 42567, 42569, 42573,
    +	42575, 42577, 42579, 42581, 42583, 42585, 42587, 42589, 42591, 42593, 42595, 42597,
    +	42599, 42601, 42603, 42605, 42625, 42627, 42629, 42631, 42633, 42635, 42637, 42639,
    +	42641, 42643, 42645, 42647, 42649, 42651, 42787, 42789, 42791, 42793, 42795, 42797,
    +	42799, 42803, 42805, 42807, 42809, 42811, 42813, 42815, 42817, 42819, 42821, 42823,
    +	42825, 42827, 42829, 42831, 42833, 42835, 42837, 42839, 42841, 42843, 42845, 42847,
    +	42849, 42851, 42853, 42855, 42857, 42859, 42861, 42863, 42874, 42876, 7545, 42879,
    +	42881, 42883, 42885, 42887, 42892, 42897, 42899, 42903, 42905, 42907, 42909, 42911,
    +	42913, 42915, 42917, 42919, 42921, 620, 670, 647, 43859, 42933, 42935, 42937, 42939,
    +	42941, 42943, 42945, 42947, 42900, 7566, 42952, 42954, 42961, 42967, 42969, 42998,
    +	43831, 43858, 653, 5024, 5025, 5026, 5027, 5028, 5029, 5030, 5031, 5032, 5033, 5034,
    +	5035, 5036, 5037, 5038, 5039, 5040, 5041, 5042, 5043, 5044, 5045, 5046, 5047, 5048,
    +	5049, 5050, 5051, 5052, 5053, 5054, 5055, 5056, 5057, 5058, 5059, 5060, 5061, 5062,
    +	5063, 5064, 5065, 5066, 5067, 5068, 5069, 5070, 5071, 5072, 5073, 5074, 5075, 5076,
    +	5077, 5078, 5079, 5080, 5081, 5082, 5083, 5084, 5085, 5086, 5087, 5088, 5089, 5090,
    +	5091, 5092, 5093, 5094, 5095, 5096, 5097, 5098, 5099, 5100, 5101, 5102, 5103, 35912,
    +	26356, 36040, 28369, 20018, 21477, 22865, 21895, 22856, 25078, 30313, 32645, 34367,
    +	34746, 35064, 37007, 27138, 27931, 28889, 29662, 33853, 37226, 39409, 20098, 21365,
    +	27396, 29211, 34349, 40478, 23888, 28651, 34253, 35172, 25289, 33240, 34847, 24266,
    +	26391, 28010, 29436, 37070, 20358, 20919, 21214, 25796, 27347, 29200, 30439, 34310,
    +	34396, 36335, 38706, 39791, 40442, 30860, 31103, 32160, 33737, 37636, 35542, 22751,
    +	24324, 31840, 32894, 29282, 30922, 36034, 38647, 22744, 23650, 27155, 28122, 28431,
    +	32047, 32311, 38475, 21202, 32907, 20956, 20940, 31260, 32190, 33777, 38517, 35712,
    +	25295, 35582, 20025, 23527, 24594, 29575, 30064, 21271, 30971, 20415, 24489, 19981,
    +	27852, 25976, 32034, 21443, 22622, 30465, 33865, 35498, 27578, 27784, 25342, 33509,
    +	25504, 30053, 20142, 20841, 20937, 26753, 31975, 33391, 35538, 37327, 21237, 21570,
    +	24300, 26053, 28670, 31018, 38317, 39530, 40599, 40654, 26310, 27511, 36706, 24180,
    +	24976, 25088, 25754, 28451, 29001, 29833, 31178, 32244, 32879, 36646, 34030, 36899,
    +	37706, 21015, 21155, 21693, 28872, 35010, 24265, 24565, 25467, 27566, 31806, 29557,
    +	22265, 23994, 24604, 29618, 29801, 32666, 32838, 37428, 38646, 38728, 38936, 20363,
    +	31150, 37300, 38584, 24801, 20102, 20698, 23534, 23615, 26009, 29134, 30274, 34044,
    +	36988, 26248, 38446, 21129, 26491, 26611, 27969, 28316, 29705, 30041, 30827, 32016,
    +	39006, 25134, 38520, 20523, 23833, 28138, 36650, 24459, 24900, 26647, 38534, 21033,
    +	21519, 23653, 26131, 26446, 26792, 27877, 29702, 30178, 32633, 35023, 35041, 38626,
    +	21311, 28346, 21533, 29136, 29848, 34298, 38563, 40023, 40607, 26519, 28107, 33256,
    +	31520, 31890, 29376, 28825, 35672, 20160, 33590, 21050, 20999, 24230, 25299, 31958,
    +	23429, 27934, 26292, 36667, 38477, 24275, 20800, 21952, 22618, 26228, 20958, 29482,
    +	30410, 31036, 31070, 31077, 31119, 38742, 31934, 34322, 35576, 36920, 37117, 39151,
    +	39164, 39208, 40372, 37086, 38583, 20398, 20711, 20813, 21193, 21220, 21329, 21917,
    +	22022, 22120, 22592, 22696, 23652, 24724, 24936, 24974, 25074, 25935, 26082, 26257,
    +	26757, 28023, 28186, 28450, 29038, 29227, 29730, 30865, 31049, 31048, 31056, 31062,
    +	31117, 31118, 31296, 31361, 31680, 32265, 32321, 32626, 32773, 33261, 33401, 33879,
    +	35088, 35222, 35585, 35641, 36051, 36104, 36790, 38627, 38911, 38971, 24693, 148206,
    +	33304, 20006, 20917, 20840, 20352, 20805, 20864, 21191, 21242, 21845, 21913, 21986,
    +	22707, 22852, 22868, 23138, 23336, 24274, 24281, 24425, 24493, 24792, 24910, 24840,
    +	24928, 25140, 25540, 25628, 25682, 25942, 26395, 26454, 28379, 28363, 28702, 30631,
    +	29237, 29359, 29809, 29958, 30011, 30237, 30239, 30427, 30452, 30538, 30528, 30924,
    +	31409, 31867, 32091, 32574, 33618, 33775, 34681, 35137, 35206, 35519, 35531, 35565,
    +	35722, 36664, 36978, 37273, 37494, 38524, 38875, 38923, 39698, 141386, 141380, 144341,
    +	15261, 16408, 16441, 152137, 154832, 163539, 40771, 40846, 102, 102, 102, 105, 102,
    +	108, 102, 102, 108, 1396, 1398, 1396, 1381, 1396, 1387, 1406, 1398, 1396, 1389,
    +	1497, 1460, 1522, 1463, 1506, 1492, 1499, 1500, 1501, 1512, 1514, 1513, 1473, 1513,
    +	1474, 1513, 1468, 1473, 1513, 1468, 1474, 1488, 1463, 1488, 1464, 1488, 1468, 1489,
    +	1468, 1490, 1468, 1491, 1468, 1492, 1468, 1493, 1468, 1494, 1468, 1496, 1468, 1497,
    +	1468, 1498, 1468, 1499, 1468, 1500, 1468, 1502, 1468, 1504, 1468, 1505, 1468, 1507,
    +	1468, 1508, 1468, 1510, 1468, 1511, 1468, 1512, 1468, 1514, 1468, 1493, 1465, 1489,
    +	1471, 1499, 1471, 1508, 1471, 1488, 1500, 1649, 1659, 1662, 1664, 1658, 1663, 1657,
    +	1700, 1702, 1668, 1667, 1670, 1671, 1677, 1676, 1678, 1672, 1688, 1681, 1705, 1711,
    +	1715, 1713, 1722, 1723, 1728, 1729, 1726, 1746, 1747, 1709, 1734, 1736, 1739, 1733,
    +	1737, 1744, 1609, 1574, 1575, 1574, 1749, 1574, 1608, 1574, 1735, 1574, 1734, 1574,
    +	1736, 1574, 1744, 1574, 1609, 1740, 1574, 1580, 1574, 1581, 1574, 1605, 1574, 1610,
    +	1576, 1580, 1576, 1581, 1576, 1582, 1576, 1605, 1576, 1609, 1576, 1610, 1578, 1580,
    +	1578, 1581, 1578, 1582, 1578, 1605, 1578, 1609, 1578, 1610, 1579, 1580, 1579, 1605,
    +	1579, 1609, 1579, 1610, 1580, 1581, 1580, 1605, 1581, 1605, 1582, 1580, 1582, 1581,
    +	1582, 1605, 1587, 1580, 1587, 1581, 1587, 1582, 1587, 1605, 1589, 1581, 1589, 1605,
    +	1590, 1580, 1590, 1581, 1590, 1582, 1590, 1605, 1591, 1581, 1591, 1605, 1592, 1605,
    +	1593, 1580, 1593, 1605, 1594, 1580, 1594, 1605, 1601, 1580, 1601, 1581, 1601, 1582,
    +	1601, 1605, 1601, 1609, 1601, 1610, 1602, 1581, 1602, 1605, 1602, 1609, 1602, 1610,
    +	1603, 1575, 1603, 1580, 1603, 1581, 1603, 1582, 1603, 1604, 1603, 1605, 1603, 1609,
    +	1603, 1610, 1604, 1580, 1604, 1581, 1604, 1582, 1604, 1605, 1604, 1609, 1604, 1610,
    +	1605, 1580, 1605, 1605, 1605, 1609, 1605, 1610, 1606, 1580, 1606, 1581, 1606, 1582,
    +	1606, 1605, 1606, 1609, 1606, 1610, 1607, 1580, 1607, 1605, 1607, 1609, 1607, 1610,
    +	1610, 1581, 1610, 1582, 1610, 1609, 1584, 1648, 1585, 1648, 1609, 1648, 32, 1612,
    +	1617, 32, 1613, 1617, 32, 1614, 1617, 32, 1615, 1617, 32, 1616, 1617, 32, 1617,
    +	1648, 1574, 1585, 1574, 1586, 1574, 1606, 1576, 1585, 1576, 1586, 1576, 1606, 1578,
    +	1585, 1578, 1586, 1578, 1606, 1579, 1585, 1579, 1586, 1579, 1606, 1605, 1575, 1606,
    +	1585, 1606, 1586, 1606, 1606, 1610, 1585, 1610, 1586, 1574, 1582, 1574, 1607, 1576,
    +	1607, 1578, 1607, 1589, 1582, 1604, 1607, 1606, 1607, 1607, 1648, 1579, 1607, 1587,
    +	1607, 1588, 1605, 1588, 1607, 1600, 1614, 1617, 1600, 1615, 1617, 1600, 1616, 1617,
    +	1591, 1609, 1591, 1610, 1593, 1609, 1593, 1610, 1594, 1609, 1594, 1610, 1587, 1609,
    +	1587, 1610, 1588, 1609, 1588, 1610, 1581, 1609, 1580, 1609, 1580, 1610, 1582, 1609,
    +	1589, 1609, 1589, 1610, 1590, 1609, 1590, 1610, 1588, 1580, 1588, 1581, 1588, 1582,
    +	1588, 1585, 1587, 1585, 1589, 1585, 1590, 1585, 1575, 1611, 1578, 1580, 1605, 1578,
    +	1581, 1580, 1578, 1581, 1605, 1578, 1582, 1605, 1578, 1605, 1580, 1578, 1605, 1581,
    +	1578, 1605, 1582, 1581, 1605, 1610, 1581, 1605, 1609, 1587, 1581, 1580, 1587, 1580,
    +	1581, 1587, 1580, 1609, 1587, 1605, 1581, 1587, 1605, 1580, 1587, 1605, 1605, 1589,
    +	1581, 1581, 1589, 1605, 1605, 1588, 1581, 1605, 1588, 1580, 1610, 1588, 1605, 1582,
    +	1588, 1605, 1605, 1590, 1581, 1609, 1590, 1582, 1605, 1591, 1605, 1581, 1591, 1605,
    +	1605, 1591, 1605, 1610, 1593, 1580, 1605, 1593, 1605, 1605, 1593, 1605, 1609, 1594,
    +	1605, 1605, 1594, 1605, 1610, 1594, 1605, 1609, 1601, 1582, 1605, 1602, 1605, 1581,
    +	1602, 1605, 1605, 1604, 1581, 1605, 1604, 1581, 1610, 1604, 1581, 1609, 1604, 1580,
    +	1580, 1604, 1582, 1605, 1604, 1605, 1581, 1605, 1581, 1580, 1605, 1581, 1610, 1605,
    +	1580, 1581, 1605, 1582, 1605, 1605, 1580, 1582, 1607, 1605, 1580, 1607, 1605, 1605,
    +	1606, 1581, 1605, 1606, 1581, 1609, 1606, 1580, 1605, 1606, 1580, 1609, 1606, 1605,
    +	1610, 1606, 1605, 1609, 1610, 1605, 1605, 1576, 1582, 1610, 1578, 1580, 1610, 1578,
    +	1580, 1609, 1578, 1582, 1610, 1578, 1582, 1609, 1578, 1605, 1610, 1578, 1605, 1609,
    +	1580, 1605, 1610, 1580, 1581, 1609, 1580, 1605, 1609, 1587, 1582, 1609, 1589, 1581,
    +	1610, 1588, 1581, 1610, 1590, 1581, 1610, 1604, 1580, 1610, 1604, 1605, 1610, 1610,
    +	1580, 1610, 1610, 1605, 1610, 1605, 1605, 1610, 1602, 1605, 1610, 1606, 1581, 1610,
    +	1593, 1605, 1610, 1603, 1605, 1610, 1606, 1580, 1581, 1605, 1582, 1610, 1604, 1580,
    +	1605, 1603, 1605, 1605, 1580, 1581, 1610, 1581, 1580, 1610, 1605, 1580, 1610, 1601,
    +	1605, 1610, 1576, 1581, 1610, 1587, 1582, 1610, 1606, 1580, 1610, 1589, 1604, 1746,
    +	1602, 1604, 1746, 1575, 1604, 1604, 1607, 1575, 1603, 1576, 1585, 1605, 1581, 1605,
    +	1583, 1589, 1604, 1593, 1605, 1585, 1587, 1608, 1604, 1593, 1604, 1610, 1607, 1608,
    +	1587, 1604, 1605, 1589, 1604, 1609, 1589, 1604, 1609, 32, 1575, 1604, 1604, 1607,
    +	32, 1593, 1604, 1610, 1607, 32, 1608, 1587, 1604, 1605, 1580, 1604, 32, 1580, 1604,
    +	1575, 1604, 1607, 1585, 1740, 1575, 1604, 44, 12289, 12310, 12311, 8212, 8211, 95,
    +	123, 125, 12308, 12309, 12304, 12305, 12298, 12299, 12300, 12301, 12302, 12303,
    +	91, 93, 35, 38, 42, 45, 60, 62, 92, 36, 37, 64, 32, 1611, 1600, 1611, 1600, 1617,
    +	32, 1618, 1600, 1618, 1569, 1570, 1571, 1572, 1573, 1577, 1604, 1570, 1604, 1571,
    +	1604, 1573, 34, 39, 94, 124, 126, 10629, 10630, 12539, 12453, 12515, 162, 163, 172,
    +	166, 165, 8361, 9474, 8592, 8593, 8594, 8595, 9632, 9675, 66600, 66601, 66602, 66603,
    +	66604, 66605, 66606, 66607, 66608, 66609, 66610, 66611, 66612, 66613, 66614, 66615,
    +	66616, 66617, 66618, 66619, 66620, 66621, 66622, 66623, 66624, 66625, 66626, 66627,
    +	66628, 66629, 66630, 66631, 66632, 66633, 66634, 66635, 66636, 66637, 66638, 66639,
    +	66776, 66777, 66778, 66779, 66780, 66781, 66782, 66783, 66784, 66785, 66786, 66787,
    +	66788, 66789, 66790, 66791, 66792, 66793, 66794, 66795, 66796, 66797, 66798, 66799,
    +	66800, 66801, 66802, 66803, 66804, 66805, 66806, 66807, 66808, 66809, 66810, 66811,
    +	66967, 66968, 66969, 66970, 66971, 66972, 66973, 66974, 66975, 66976, 66977, 66979,
    +	66980, 66981, 66982, 66983, 66984, 66985, 66986, 66987, 66988, 66989, 66990, 66991,
    +	66992, 66993, 66995, 66996, 66997, 66998, 66999, 67000, 67001, 67003, 67004, 720,
    +	721, 665, 675, 43878, 677, 676, 7569, 600, 606, 681, 612, 610, 667, 668, 615, 644,
    +	682, 683, 122628, 42894, 622, 122629, 654, 122630, 630, 631, 634, 122632, 638, 680,
    +	678, 43879, 679, 11377, 655, 673, 674, 664, 448, 449, 450, 122634, 122654, 68800,
    +	68801, 68802, 68803, 68804, 68805, 68806, 68807, 68808, 68809, 68810, 68811, 68812,
    +	68813, 68814, 68815, 68816, 68817, 68818, 68819, 68820, 68821, 68822, 68823, 68824,
    +	68825, 68826, 68827, 68828, 68829, 68830, 68831, 68832, 68833, 68834, 68835, 68836,
    +	68837, 68838, 68839, 68840, 68841, 68842, 68843, 68844, 68845, 68846, 68847, 68848,
    +	68849, 68850, 71872, 71873, 71874, 71875, 71876, 71877, 71878, 71879, 71880, 71881,
    +	71882, 71883, 71884, 71885, 71886, 71887, 71888, 71889, 71890, 71891, 71892, 71893,
    +	71894, 71895, 71896, 71897, 71898, 71899, 71900, 71901, 71902, 71903, 93792, 93793,
    +	93794, 93795, 93796, 93797, 93798, 93799, 93800, 93801, 93802, 93803, 93804, 93805,
    +	93806, 93807, 93808, 93809, 93810, 93811, 93812, 93813, 93814, 93815, 93816, 93817,
    +	93818, 93819, 93820, 93821, 93822, 93823, 119127, 119141, 119128, 119141, 119128,
    +	119141, 119150, 119128, 119141, 119151, 119128, 119141, 119152, 119128, 119141,
    +	119153, 119128, 119141, 119154, 119225, 119141, 119226, 119141, 119225, 119141,
    +	119150, 119226, 119141, 119150, 119225, 119141, 119151, 119226, 119141, 119151,
    +	305, 567, 8711, 8706, 1231, 125218, 125219, 125220, 125221, 125222, 125223, 125224,
    +	125225, 125226, 125227, 125228, 125229, 125230, 125231, 125232, 125233, 125234,
    +	125235, 125236, 125237, 125238, 125239, 125240, 125241, 125242, 125243, 125244,
    +	125245, 125246, 125247, 125248, 125249, 125250, 125251, 1646, 1697, 1647, 48, 44,
    +	49, 44, 50, 44, 51, 44, 52, 44, 53, 44, 54, 44, 55, 44, 56, 44, 57, 44, 12308, 115,
    +	12309, 119, 122, 104, 118, 115, 100, 112, 112, 118, 119, 99, 109, 114, 100, 106,
    +	12411, 12363, 12467, 12467, 23383, 21452, 22810, 35299, 20132, 26144, 28961, 21069,
    +	24460, 20877, 26032, 21021, 32066, 36009, 22768, 21561, 28436, 25237, 25429, 36938,
    +	25351, 25171, 31105, 31354, 21512, 28288, 30003, 21106, 21942, 37197, 12308, 26412,
    +	12309, 12308, 19977, 12309, 12308, 20108, 12309, 12308, 23433, 12309, 12308, 28857,
    +	12309, 12308, 25171, 12309, 12308, 30423, 12309, 12308, 21213, 12309, 12308, 25943,
    +	12309, 24471, 21487, 20029, 20024, 20033, 131362, 20320, 20411, 20482, 20602, 20633,
    +	20687, 13470, 132666, 20820, 20836, 20855, 132380, 13497, 20839, 132427, 20887,
    +	20900, 20172, 20908, 168415, 20995, 13535, 21051, 21062, 21111, 13589, 21253, 21254,
    +	21321, 21338, 21363, 21373, 21375, 133676, 28784, 21450, 21471, 133987, 21483, 21489,
    +	21510, 21662, 21560, 21576, 21608, 21666, 21750, 21776, 21843, 21859, 21892, 21931,
    +	21939, 21954, 22294, 22295, 22097, 22132, 22766, 22478, 22516, 22541, 22411, 22578,
    +	22577, 22700, 136420, 22770, 22775, 22790, 22818, 22882, 136872, 136938, 23020,
    +	23067, 23079, 23000, 23142, 14062, 23304, 23358, 137672, 23491, 23512, 23539, 138008,
    +	23551, 23558, 14209, 23648, 23744, 23693, 138724, 23875, 138726, 23918, 23915, 23932,
    +	24033, 24034, 14383, 24061, 24104, 24125, 24169, 14434, 139651, 14460, 24240, 24243,
    +	24246, 172946, 140081, 33281, 24354, 14535, 144056, 156122, 24418, 24427, 14563,
    +	24474, 24525, 24535, 24569, 24705, 14650, 14620, 141012, 24775, 24904, 24908, 24954,
    +	25010, 24996, 25007, 25054, 25115, 25181, 25265, 25300, 25424, 142092, 25405, 25340,
    +	25448, 25475, 25572, 142321, 25634, 25541, 25513, 14894, 25705, 25726, 25757, 25719,
    +	14956, 25964, 143370, 26083, 26360, 26185, 15129, 15112, 15076, 20882, 20885, 26368,
    +	26268, 32941, 17369, 26401, 26462, 26451, 144323, 15177, 26618, 26501, 26706, 144493,
    +	26766, 26655, 26900, 26946, 27043, 27114, 27304, 145059, 27355, 15384, 27425, 145575,
    +	27476, 15438, 27506, 27551, 27579, 146061, 138507, 146170, 27726, 146620, 27839,
    +	27853, 27751, 27926, 27966, 28009, 28024, 28037, 146718, 27956, 28207, 28270, 15667,
    +	28359, 147153, 28153, 28526, 147294, 147342, 28614, 28729, 28699, 15766, 28746,
    +	28797, 28791, 28845, 132389, 28997, 148067, 29084, 29224, 29264, 149000, 29312,
    +	29333, 149301, 149524, 29562, 29579, 16044, 29605, 16056, 29767, 29788, 29829, 29898,
    +	16155, 29988, 150582, 30014, 150674, 139679, 30224, 151457, 151480, 151620, 16380,
    +	16392, 151795, 151794, 151833, 151859, 30494, 30495, 30603, 16454, 16534, 152605,
    +	30798, 16611, 153126, 153242, 153285, 31211, 16687, 31306, 31311, 153980, 154279,
    +	16898, 154539, 31686, 31689, 16935, 154752, 31954, 17056, 31976, 31971, 32000, 155526,
    +	32099, 17153, 32199, 32258, 32325, 17204, 156200, 156231, 17241, 156377, 32634,
    +	156478, 32661, 32762, 156890, 156963, 32864, 157096, 32880, 144223, 17365, 32946,
    +	33027, 17419, 33086, 23221, 157607, 157621, 144275, 144284, 33284, 36766, 17515,
    +	33425, 33419, 33437, 21171, 33457, 33459, 33469, 33510, 158524, 33565, 33635, 33709,
    +	33571, 33725, 33767, 33619, 33738, 33740, 33756, 158774, 159083, 158933, 17707,
    +	34033, 34035, 34070, 160714, 34148, 159532, 17757, 17761, 159665, 159954, 17771,
    +	34384, 34407, 34409, 34473, 34440, 34574, 34530, 34600, 34667, 34694, 34785, 34817,
    +	17913, 34912, 161383, 35031, 35038, 17973, 35066, 13499, 161966, 162150, 18110,
    +	18119, 35488, 162984, 36011, 36033, 36123, 36215, 163631, 133124, 36299, 36284,
    +	36336, 133342, 36564, 165330, 165357, 37012, 37105, 37137, 165678, 37147, 37432,
    +	37591, 37592, 37500, 37881, 37909, 166906, 38283, 18837, 38327, 167287, 18918, 38595,
    +	23986, 38691, 168261, 168474, 19054, 19062, 38880, 168970, 19122, 169110, 38953,
    +	169398, 39138, 19251, 39209, 39335, 39362, 39422, 19406, 170800, 40000, 40189, 19662,
    +	19693, 40295, 172238, 19704, 172293, 172558, 172689, 19798, 40702, 40709, 40719,
    +	40726, 173568,
    +
    +};
    +const uint32_t table[8000][2] =
    +{
    +	{0, 1}, {65, 16777219}, {66, 16777475}, {67, 16777731},
    +	{68, 16777987}, {69, 16778243}, {70, 16778499}, {71, 16778755},
    +	{72, 16779011}, {73, 16779267}, {74, 16779523}, {75, 16779779},
    +	{76, 16780035}, {77, 16780291}, {78, 16780547}, {79, 16780803},
    +	{80, 16781059}, {81, 16781315}, {82, 16781571}, {83, 16781827},
    +	{84, 16782083}, {85, 16782339}, {86, 16782595}, {87, 16782851},
    +	{88, 16783107}, {89, 16783363}, {90, 16783619}, {91, 1},
    +	{128, 2}, {160, 16783875}, {161, 1}, {168, 33561347},
    +	{169, 1}, {170, 16777219}, {171, 1}, {173, 0},
    +	{174, 1}, {175, 33561859}, {176, 1}, {178, 16785155},
    +	{179, 16785411}, {180, 33562883}, {181, 16786179}, {182, 1},
    +	{184, 33563651}, {185, 16786947}, {186, 16780803}, {187, 1},
    +	{188, 50341635}, {189, 50342403}, {190, 50343171}, {191, 1},
    +	{192, 16789507}, {193, 16789763}, {194, 16790019}, {195, 16790275},
    +	{196, 16790531}, {197, 16790787}, {198, 16791043}, {199, 16791299},
    +	{200, 16791555}, {201, 16791811}, {202, 16792067}, {203, 16792323},
    +	{204, 16792579}, {205, 16792835}, {206, 16793091}, {207, 16793347},
    +	{208, 16793603}, {209, 16793859}, {210, 16794115}, {211, 16794371},
    +	{212, 16794627}, {213, 16794883}, {214, 16795139}, {215, 1},
    +	{216, 16795395}, {217, 16795651}, {218, 16795907}, {219, 16796163},
    +	{220, 16796419}, {221, 16796675}, {222, 16796931}, {223, 1},
    +	{256, 16797187}, {257, 1}, {258, 16797443}, {259, 1},
    +	{260, 16797699}, {261, 1}, {262, 16797955}, {263, 1},
    +	{264, 16798211}, {265, 1}, {266, 16798467}, {267, 1},
    +	{268, 16798723}, {269, 1}, {270, 16798979}, {271, 1},
    +	{272, 16799235}, {273, 1}, {274, 16799491}, {275, 1},
    +	{276, 16799747}, {277, 1}, {278, 16800003}, {279, 1},
    +	{280, 16800259}, {281, 1}, {282, 16800515}, {283, 1},
    +	{284, 16800771}, {285, 1}, {286, 16801027}, {287, 1},
    +	{288, 16801283}, {289, 1}, {290, 16801539}, {291, 1},
    +	{292, 16801795}, {293, 1}, {294, 16802051}, {295, 1},
    +	{296, 16802307}, {297, 1}, {298, 16802563}, {299, 1},
    +	{300, 16802819}, {301, 1}, {302, 16803075}, {303, 1},
    +	{304, 33580547}, {305, 1}, {306, 33556483}, {308, 16803843},
    +	{309, 1}, {310, 16804099}, {311, 1}, {313, 16804355},
    +	{314, 1}, {315, 16804611}, {316, 1}, {317, 16804867},
    +	{318, 1}, {319, 33582339}, {321, 16805635}, {322, 1},
    +	{323, 16805891}, {324, 1}, {325, 16806147}, {326, 1},
    +	{327, 16806403}, {328, 1}, {329, 33583875}, {330, 16807171},
    +	{331, 1}, {332, 16807427}, {333, 1}, {334, 16807683},
    +	{335, 1}, {336, 16807939}, {337, 1}, {338, 16808195},
    +	{339, 1}, {340, 16808451}, {341, 1}, {342, 16808707},
    +	{343, 1}, {344, 16808963}, {345, 1}, {346, 16809219},
    +	{347, 1}, {348, 16809475}, {349, 1}, {350, 16809731},
    +	{351, 1}, {352, 16809987}, {353, 1}, {354, 16810243},
    +	{355, 1}, {356, 16810499}, {357, 1}, {358, 16810755},
    +	{359, 1}, {360, 16811011}, {361, 1}, {362, 16811267},
    +	{363, 1}, {364, 16811523}, {365, 1}, {366, 16811779},
    +	{367, 1}, {368, 16812035}, {369, 1}, {370, 16812291},
    +	{371, 1}, {372, 16812547}, {373, 1}, {374, 16812803},
    +	{375, 1}, {376, 16813059}, {377, 16813315}, {378, 1},
    +	{379, 16813571}, {380, 1}, {381, 16813827}, {382, 1},
    +	{383, 16781827}, {384, 1}, {385, 16814083}, {386, 16814339},
    +	{387, 1}, {388, 16814595}, {389, 1}, {390, 16814851},
    +	{391, 16815107}, {392, 1}, {393, 16815363}, {394, 16815619},
    +	{395, 16815875}, {396, 1}, {398, 16816131}, {399, 16816387},
    +	{400, 16816643}, {401, 16816899}, {402, 1}, {403, 16817155},
    +	{404, 16817411}, {405, 1}, {406, 16817667}, {407, 16817923},
    +	{408, 16818179}, {409, 1}, {412, 16818435}, {413, 16818691},
    +	{414, 1}, {415, 16818947}, {416, 16819203}, {417, 1},
    +	{418, 16819459}, {419, 1}, {420, 16819715}, {421, 1},
    +	{422, 16819971}, {423, 16820227}, {424, 1}, {425, 16820483},
    +	{426, 1}, {428, 16820739}, {429, 1}, {430, 16820995},
    +	{431, 16821251}, {432, 1}, {433, 16821507}, {434, 16821763},
    +	{435, 16822019}, {436, 1}, {437, 16822275}, {438, 1},
    +	{439, 16822531}, {440, 16822787}, {441, 1}, {444, 16823043},
    +	{445, 1}, {452, 33600515}, {455, 33601027}, {458, 33601539},
    +	{461, 16824835}, {462, 1}, {463, 16825091}, {464, 1},
    +	{465, 16825347}, {466, 1}, {467, 16825603}, {468, 1},
    +	{469, 16825859}, {470, 1}, {471, 16826115}, {472, 1},
    +	{473, 16826371}, {474, 1}, {475, 16826627}, {476, 1},
    +	{478, 16826883}, {479, 1}, {480, 16827139}, {481, 1},
    +	{482, 16827395}, {483, 1}, {484, 16827651}, {485, 1},
    +	{486, 16827907}, {487, 1}, {488, 16828163}, {489, 1},
    +	{490, 16828419}, {491, 1}, {492, 16828675}, {493, 1},
    +	{494, 16828931}, {495, 1}, {497, 33606403}, {500, 16829699},
    +	{501, 1}, {502, 16829955}, {503, 16830211}, {504, 16830467},
    +	{505, 1}, {506, 16830723}, {507, 1}, {508, 16830979},
    +	{509, 1}, {510, 16831235}, {511, 1}, {512, 16831491},
    +	{513, 1}, {514, 16831747}, {515, 1}, {516, 16832003},
    +	{517, 1}, {518, 16832259}, {519, 1}, {520, 16832515},
    +	{521, 1}, {522, 16832771}, {523, 1}, {524, 16833027},
    +	{525, 1}, {526, 16833283}, {527, 1}, {528, 16833539},
    +	{529, 1}, {530, 16833795}, {531, 1}, {532, 16834051},
    +	{533, 1}, {534, 16834307}, {535, 1}, {536, 16834563},
    +	{537, 1}, {538, 16834819}, {539, 1}, {540, 16835075},
    +	{541, 1}, {542, 16835331}, {543, 1}, {544, 16835587},
    +	{545, 1}, {546, 16835843}, {547, 1}, {548, 16836099},
    +	{549, 1}, {550, 16836355}, {551, 1}, {552, 16836611},
    +	{553, 1}, {554, 16836867}, {555, 1}, {556, 16837123},
    +	{557, 1}, {558, 16837379}, {559, 1}, {560, 16837635},
    +	{561, 1}, {562, 16837891}, {563, 1}, {570, 16838147},
    +	{571, 16838403}, {572, 1}, {573, 16838659}, {574, 16838915},
    +	{575, 1}, {577, 16839171}, {578, 1}, {579, 16839427},
    +	{580, 16839683}, {581, 16839939}, {582, 16840195}, {583, 1},
    +	{584, 16840451}, {585, 1}, {586, 16840707}, {587, 1},
    +	{588, 16840963}, {589, 1}, {590, 16841219}, {591, 1},
    +	{688, 16779011}, {689, 16841475}, {690, 16779523}, {691, 16781571},
    +	{692, 16841731}, {693, 16841987}, {694, 16842243}, {695, 16782851},
    +	{696, 16783363}, {697, 1}, {728, 33619715}, {729, 33620227},
    +	{730, 33620739}, {731, 33621251}, {732, 33621763}, {733, 33622275},
    +	{734, 1}, {736, 16817411}, {737, 16780035}, {738, 16781827},
    +	{739, 16783107}, {740, 16845571}, {741, 1}, {832, 16845827},
    +	{833, 16785923}, {834, 1}, {835, 16846083}, {836, 33623555},
    +	{837, 16846851}, {838, 1}, {847, 0}, {848, 1},
    +	{880, 16847107}, {881, 1}, {882, 16847363}, {883, 1},
    +	{884, 16847619}, {885, 1}, {886, 16847875}, {887, 1},
    +	{888, 2}, {890, 33625347}, {891, 1}, {894, 16848643},
    +	{895, 16848899}, {896, 2}, {900, 33562883}, {901, 50403587},
    +	{902, 16849923}, {903, 16805379}, {904, 16850179}, {905, 16850435},
    +	{906, 16850691}, {907, 2}, {908, 16850947}, {909, 2},
    +	{910, 16851203}, {911, 16851459}, {912, 1}, {913, 16851715},
    +	{914, 16851971}, {915, 16852227}, {916, 16852483}, {917, 16852739},
    +	{918, 16852995}, {919, 16853251}, {920, 16853507}, {921, 16846851},
    +	{922, 16853763}, {923, 16854019}, {924, 16786179}, {925, 16854275},
    +	{926, 16854531}, {927, 16854787}, {928, 16855043}, {929, 16855299},
    +	{930, 2}, {931, 16855555}, {932, 16855811}, {933, 16856067},
    +	{934, 16856323}, {935, 16856579}, {936, 16856835}, {937, 16857091},
    +	{938, 16857347}, {939, 16857603}, {940, 1}, {975, 16857859},
    +	{976, 16851971}, {977, 16853507}, {978, 16856067}, {979, 16851203},
    +	{980, 16857603}, {981, 16856323}, {982, 16855043}, {983, 1},
    +	{984, 16858115}, {985, 1}, {986, 16858371}, {987, 1},
    +	{988, 16858627}, {989, 1}, {990, 16858883}, {991, 1},
    +	{992, 16859139}, {993, 1}, {994, 16859395}, {995, 1},
    +	{996, 16859651}, {997, 1}, {998, 16859907}, {999, 1},
    +	{1000, 16860163}, {1001, 1}, {1002, 16860419}, {1003, 1},
    +	{1004, 16860675}, {1005, 1}, {1006, 16860931}, {1007, 1},
    +	{1008, 16853763}, {1009, 16855299}, {1010, 16855555}, {1011, 1},
    +	{1012, 16853507}, {1013, 16852739}, {1014, 1}, {1015, 16861187},
    +	{1016, 1}, {1017, 16855555}, {1018, 16861443}, {1019, 1},
    +	{1021, 16861699}, {1022, 16861955}, {1023, 16862211}, {1024, 16862467},
    +	{1025, 16862723}, {1026, 16862979}, {1027, 16863235}, {1028, 16863491},
    +	{1029, 16863747}, {1030, 16864003}, {1031, 16864259}, {1032, 16864515},
    +	{1033, 16864771}, {1034, 16865027}, {1035, 16865283}, {1036, 16865539},
    +	{1037, 16865795}, {1038, 16866051}, {1039, 16866307}, {1040, 16866563},
    +	{1041, 16866819}, {1042, 16867075}, {1043, 16867331}, {1044, 16867587},
    +	{1045, 16867843}, {1046, 16868099}, {1047, 16868355}, {1048, 16868611},
    +	{1049, 16868867}, {1050, 16869123}, {1051, 16869379}, {1052, 16869635},
    +	{1053, 16869891}, {1054, 16870147}, {1055, 16870403}, {1056, 16870659},
    +	{1057, 16870915}, {1058, 16871171}, {1059, 16871427}, {1060, 16871683},
    +	{1061, 16871939}, {1062, 16872195}, {1063, 16872451}, {1064, 16872707},
    +	{1065, 16872963}, {1066, 16873219}, {1067, 16873475}, {1068, 16873731},
    +	{1069, 16873987}, {1070, 16874243}, {1071, 16874499}, {1072, 1},
    +	{1120, 16874755}, {1121, 1}, {1122, 16875011}, {1123, 1},
    +	{1124, 16875267}, {1125, 1}, {1126, 16875523}, {1127, 1},
    +	{1128, 16875779}, {1129, 1}, {1130, 16876035}, {1131, 1},
    +	{1132, 16876291}, {1133, 1}, {1134, 16876547}, {1135, 1},
    +	{1136, 16876803}, {1137, 1}, {1138, 16877059}, {1139, 1},
    +	{1140, 16877315}, {1141, 1}, {1142, 16877571}, {1143, 1},
    +	{1144, 16877827}, {1145, 1}, {1146, 16878083}, {1147, 1},
    +	{1148, 16878339}, {1149, 1}, {1150, 16878595}, {1151, 1},
    +	{1152, 16878851}, {1153, 1}, {1162, 16879107}, {1163, 1},
    +	{1164, 16879363}, {1165, 1}, {1166, 16879619}, {1167, 1},
    +	{1168, 16879875}, {1169, 1}, {1170, 16880131}, {1171, 1},
    +	{1172, 16880387}, {1173, 1}, {1174, 16880643}, {1175, 1},
    +	{1176, 16880899}, {1177, 1}, {1178, 16881155}, {1179, 1},
    +	{1180, 16881411}, {1181, 1}, {1182, 16881667}, {1183, 1},
    +	{1184, 16881923}, {1185, 1}, {1186, 16882179}, {1187, 1},
    +	{1188, 16882435}, {1189, 1}, {1190, 16882691}, {1191, 1},
    +	{1192, 16882947}, {1193, 1}, {1194, 16883203}, {1195, 1},
    +	{1196, 16883459}, {1197, 1}, {1198, 16883715}, {1199, 1},
    +	{1200, 16883971}, {1201, 1}, {1202, 16884227}, {1203, 1},
    +	{1204, 16884483}, {1205, 1}, {1206, 16884739}, {1207, 1},
    +	{1208, 16884995}, {1209, 1}, {1210, 16885251}, {1211, 1},
    +	{1212, 16885507}, {1213, 1}, {1214, 16885763}, {1215, 1},
    +	{1216, 2}, {1217, 16886019}, {1218, 1}, {1219, 16886275},
    +	{1220, 1}, {1221, 16886531}, {1222, 1}, {1223, 16886787},
    +	{1224, 1}, {1225, 16887043}, {1226, 1}, {1227, 16887299},
    +	{1228, 1}, {1229, 16887555}, {1230, 1}, {1232, 16887811},
    +	{1233, 1}, {1234, 16888067}, {1235, 1}, {1236, 16888323},
    +	{1237, 1}, {1238, 16888579}, {1239, 1}, {1240, 16888835},
    +	{1241, 1}, {1242, 16889091}, {1243, 1}, {1244, 16889347},
    +	{1245, 1}, {1246, 16889603}, {1247, 1}, {1248, 16889859},
    +	{1249, 1}, {1250, 16890115}, {1251, 1}, {1252, 16890371},
    +	{1253, 1}, {1254, 16890627}, {1255, 1}, {1256, 16890883},
    +	{1257, 1}, {1258, 16891139}, {1259, 1}, {1260, 16891395},
    +	{1261, 1}, {1262, 16891651}, {1263, 1}, {1264, 16891907},
    +	{1265, 1}, {1266, 16892163}, {1267, 1}, {1268, 16892419},
    +	{1269, 1}, {1270, 16892675}, {1271, 1}, {1272, 16892931},
    +	{1273, 1}, {1274, 16893187}, {1275, 1}, {1276, 16893443},
    +	{1277, 1}, {1278, 16893699}, {1279, 1}, {1280, 16893955},
    +	{1281, 1}, {1282, 16894211}, {1283, 1}, {1284, 16894467},
    +	{1285, 1}, {1286, 16894723}, {1287, 1}, {1288, 16894979},
    +	{1289, 1}, {1290, 16895235}, {1291, 1}, {1292, 16895491},
    +	{1293, 1}, {1294, 16895747}, {1295, 1}, {1296, 16896003},
    +	{1297, 1}, {1298, 16896259}, {1299, 1}, {1300, 16896515},
    +	{1301, 1}, {1302, 16896771}, {1303, 1}, {1304, 16897027},
    +	{1305, 1}, {1306, 16897283}, {1307, 1}, {1308, 16897539},
    +	{1309, 1}, {1310, 16897795}, {1311, 1}, {1312, 16898051},
    +	{1313, 1}, {1314, 16898307}, {1315, 1}, {1316, 16898563},
    +	{1317, 1}, {1318, 16898819}, {1319, 1}, {1320, 16899075},
    +	{1321, 1}, {1322, 16899331}, {1323, 1}, {1324, 16899587},
    +	{1325, 1}, {1326, 16899843}, {1327, 1}, {1328, 2},
    +	{1329, 16900099}, {1330, 16900355}, {1331, 16900611}, {1332, 16900867},
    +	{1333, 16901123}, {1334, 16901379}, {1335, 16901635}, {1336, 16901891},
    +	{1337, 16902147}, {1338, 16902403}, {1339, 16902659}, {1340, 16902915},
    +	{1341, 16903171}, {1342, 16903427}, {1343, 16903683}, {1344, 16903939},
    +	{1345, 16904195}, {1346, 16904451}, {1347, 16904707}, {1348, 16904963},
    +	{1349, 16905219}, {1350, 16905475}, {1351, 16905731}, {1352, 16905987},
    +	{1353, 16906243}, {1354, 16906499}, {1355, 16906755}, {1356, 16907011},
    +	{1357, 16907267}, {1358, 16907523}, {1359, 16907779}, {1360, 16908035},
    +	{1361, 16908291}, {1362, 16908547}, {1363, 16908803}, {1364, 16909059},
    +	{1365, 16909315}, {1366, 16909571}, {1367, 2}, {1369, 1},
    +	{1415, 33687043}, {1416, 1}, {1419, 2}, {1421, 1},
    +	{1424, 2}, {1425, 1}, {1480, 2}, {1488, 1},
    +	{1515, 2}, {1519, 1}, {1525, 2}, {1542, 1},
    +	{1564, 2}, {1565, 1}, {1653, 33687555}, {1654, 33688067},
    +	{1655, 33688579}, {1656, 33689091}, {1657, 1}, {1757, 2},
    +	{1758, 1}, {1806, 2}, {1808, 1}, {1867, 2},
    +	{1869, 1}, {1970, 2}, {1984, 1}, {2043, 2},
    +	{2045, 1}, {2094, 2}, {2096, 1}, {2111, 2},
    +	{2112, 1}, {2140, 2}, {2142, 1}, {2143, 2},
    +	{2144, 1}, {2155, 2}, {2160, 1}, {2191, 2},
    +	{2200, 1}, {2274, 2}, {2275, 1}, {2392, 33689603},
    +	{2393, 33690115}, {2394, 33690627}, {2395, 33691139}, {2396, 33691651},
    +	{2397, 33692163}, {2398, 33692675}, {2399, 33693187}, {2400, 1},
    +	{2436, 2}, {2437, 1}, {2445, 2}, {2447, 1},
    +	{2449, 2}, {2451, 1}, {2473, 2}, {2474, 1},
    +	{2481, 2}, {2482, 1}, {2483, 2}, {2486, 1},
    +	{2490, 2}, {2492, 1}, {2501, 2}, {2503, 1},
    +	{2505, 2}, {2507, 1}, {2511, 2}, {2519, 1},
    +	{2520, 2}, {2524, 33693699}, {2525, 33694211}, {2526, 2},
    +	{2527, 33694723}, {2528, 1}, {2532, 2}, {2534, 1},
    +	{2559, 2}, {2561, 1}, {2564, 2}, {2565, 1},
    +	{2571, 2}, {2575, 1}, {2577, 2}, {2579, 1},
    +	{2601, 2}, {2602, 1}, {2609, 2}, {2610, 1},
    +	{2611, 33695235}, {2612, 2}, {2613, 1}, {2614, 33695747},
    +	{2615, 2}, {2616, 1}, {2618, 2}, {2620, 1},
    +	{2621, 2}, {2622, 1}, {2627, 2}, {2631, 1},
    +	{2633, 2}, {2635, 1}, {2638, 2}, {2641, 1},
    +	{2642, 2}, {2649, 33696259}, {2650, 33696771}, {2651, 33697283},
    +	{2652, 1}, {2653, 2}, {2654, 33697795}, {2655, 2},
    +	{2662, 1}, {2679, 2}, {2689, 1}, {2692, 2},
    +	{2693, 1}, {2702, 2}, {2703, 1}, {2706, 2},
    +	{2707, 1}, {2729, 2}, {2730, 1}, {2737, 2},
    +	{2738, 1}, {2740, 2}, {2741, 1}, {2746, 2},
    +	{2748, 1}, {2758, 2}, {2759, 1}, {2762, 2},
    +	{2763, 1}, {2766, 2}, {2768, 1}, {2769, 2},
    +	{2784, 1}, {2788, 2}, {2790, 1}, {2802, 2},
    +	{2809, 1}, {2816, 2}, {2817, 1}, {2820, 2},
    +	{2821, 1}, {2829, 2}, {2831, 1}, {2833, 2},
    +	{2835, 1}, {2857, 2}, {2858, 1}, {2865, 2},
    +	{2866, 1}, {2868, 2}, {2869, 1}, {2874, 2},
    +	{2876, 1}, {2885, 2}, {2887, 1}, {2889, 2},
    +	{2891, 1}, {2894, 2}, {2901, 1}, {2904, 2},
    +	{2908, 33698307}, {2909, 33698819}, {2910, 2}, {2911, 1},
    +	{2916, 2}, {2918, 1}, {2936, 2}, {2946, 1},
    +	{2948, 2}, {2949, 1}, {2955, 2}, {2958, 1},
    +	{2961, 2}, {2962, 1}, {2966, 2}, {2969, 1},
    +	{2971, 2}, {2972, 1}, {2973, 2}, {2974, 1},
    +	{2976, 2}, {2979, 1}, {2981, 2}, {2984, 1},
    +	{2987, 2}, {2990, 1}, {3002, 2}, {3006, 1},
    +	{3011, 2}, {3014, 1}, {3017, 2}, {3018, 1},
    +	{3022, 2}, {3024, 1}, {3025, 2}, {3031, 1},
    +	{3032, 2}, {3046, 1}, {3067, 2}, {3072, 1},
    +	{3085, 2}, {3086, 1}, {3089, 2}, {3090, 1},
    +	{3113, 2}, {3114, 1}, {3130, 2}, {3132, 1},
    +	{3141, 2}, {3142, 1}, {3145, 2}, {3146, 1},
    +	{3150, 2}, {3157, 1}, {3159, 2}, {3160, 1},
    +	{3163, 2}, {3165, 1}, {3166, 2}, {3168, 1},
    +	{3172, 2}, {3174, 1}, {3184, 2}, {3191, 1},
    +	{3213, 2}, {3214, 1}, {3217, 2}, {3218, 1},
    +	{3241, 2}, {3242, 1}, {3252, 2}, {3253, 1},
    +	{3258, 2}, {3260, 1}, {3269, 2}, {3270, 1},
    +	{3273, 2}, {3274, 1}, {3278, 2}, {3285, 1},
    +	{3287, 2}, {3293, 1}, {3295, 2}, {3296, 1},
    +	{3300, 2}, {3302, 1}, {3312, 2}, {3313, 1},
    +	{3316, 2}, {3328, 1}, {3341, 2}, {3342, 1},
    +	{3345, 2}, {3346, 1}, {3397, 2}, {3398, 1},
    +	{3401, 2}, {3402, 1}, {3408, 2}, {3412, 1},
    +	{3428, 2}, {3430, 1}, {3456, 2}, {3457, 1},
    +	{3460, 2}, {3461, 1}, {3479, 2}, {3482, 1},
    +	{3506, 2}, {3507, 1}, {3516, 2}, {3517, 1},
    +	{3518, 2}, {3520, 1}, {3527, 2}, {3530, 1},
    +	{3531, 2}, {3535, 1}, {3541, 2}, {3542, 1},
    +	{3543, 2}, {3544, 1}, {3552, 2}, {3558, 1},
    +	{3568, 2}, {3570, 1}, {3573, 2}, {3585, 1},
    +	{3635, 33699331}, {3636, 1}, {3643, 2}, {3647, 1},
    +	{3676, 2}, {3713, 1}, {3715, 2}, {3716, 1},
    +	{3717, 2}, {3718, 1}, {3723, 2}, {3724, 1},
    +	{3748, 2}, {3749, 1}, {3750, 2}, {3751, 1},
    +	{3763, 33699843}, {3764, 1}, {3774, 2}, {3776, 1},
    +	{3781, 2}, {3782, 1}, {3783, 2}, {3784, 1},
    +	{3791, 2}, {3792, 1}, {3802, 2}, {3804, 33700355},
    +	{3805, 33700867}, {3806, 1}, {3808, 2}, {3840, 1},
    +	{3852, 16924163}, {3853, 1}, {3907, 33701635}, {3908, 1},
    +	{3912, 2}, {3913, 1}, {3917, 33702147}, {3918, 1},
    +	{3922, 33702659}, {3923, 1}, {3927, 33703171}, {3928, 1},
    +	{3932, 33703683}, {3933, 1}, {3945, 33704195}, {3946, 1},
    +	{3949, 2}, {3953, 1}, {3955, 33704707}, {3956, 1},
    +	{3957, 33705219}, {3958, 33705731}, {3959, 50483459}, {3960, 33707011},
    +	{3961, 50484739}, {3962, 1}, {3969, 33706499}, {3970, 1},
    +	{3987, 33708291}, {3988, 1}, {3992, 2}, {3993, 1},
    +	{3997, 33708803}, {3998, 1}, {4002, 33709315}, {4003, 1},
    +	{4007, 33709827}, {4008, 1}, {4012, 33710339}, {4013, 1},
    +	{4025, 33710851}, {4026, 1}, {4029, 2}, {4030, 1},
    +	{4045, 2}, {4046, 1}, {4059, 2}, {4096, 1},
    +	{4256, 2}, {4295, 16934147}, {4296, 2}, {4301, 16934403},
    +	{4302, 2}, {4304, 1}, {4348, 16934659}, {4349, 1},
    +	{4447, 2}, {4449, 1}, {4681, 2}, {4682, 1},
    +	{4686, 2}, {4688, 1}, {4695, 2}, {4696, 1},
    +	{4697, 2}, {4698, 1}, {4702, 2}, {4704, 1},
    +	{4745, 2}, {4746, 1}, {4750, 2}, {4752, 1},
    +	{4785, 2}, {4786, 1}, {4790, 2}, {4792, 1},
    +	{4799, 2}, {4800, 1}, {4801, 2}, {4802, 1},
    +	{4806, 2}, {4808, 1}, {4823, 2}, {4824, 1},
    +	{4881, 2}, {4882, 1}, {4886, 2}, {4888, 1},
    +	{4955, 2}, {4957, 1}, {4989, 2}, {4992, 1},
    +	{5018, 2}, {5024, 1}, {5110, 2}, {5112, 16934915},
    +	{5113, 16935171}, {5114, 16935427}, {5115, 16935683}, {5116, 16935939},
    +	{5117, 16936195}, {5118, 2}, {5120, 1}, {5760, 2},
    +	{5761, 1}, {5789, 2}, {5792, 1}, {5881, 2},
    +	{5888, 1}, {5910, 2}, {5919, 1}, {5943, 2},
    +	{5952, 1}, {5972, 2}, {5984, 1}, {5997, 2},
    +	{5998, 1}, {6001, 2}, {6002, 1}, {6004, 2},
    +	{6016, 1}, {6068, 2}, {6070, 1}, {6110, 2},
    +	{6112, 1}, {6122, 2}, {6128, 1}, {6138, 2},
    +	{6144, 1}, {6150, 2}, {6151, 1}, {6155, 0},
    +	{6158, 2}, {6159, 0}, {6160, 1}, {6170, 2},
    +	{6176, 1}, {6265, 2}, {6272, 1}, {6315, 2},
    +	{6320, 1}, {6390, 2}, {6400, 1}, {6431, 2},
    +	{6432, 1}, {6444, 2}, {6448, 1}, {6460, 2},
    +	{6464, 1}, {6465, 2}, {6468, 1}, {6510, 2},
    +	{6512, 1}, {6517, 2}, {6528, 1}, {6572, 2},
    +	{6576, 1}, {6602, 2}, {6608, 1}, {6619, 2},
    +	{6622, 1}, {6684, 2}, {6686, 1}, {6751, 2},
    +	{6752, 1}, {6781, 2}, {6783, 1}, {6794, 2},
    +	{6800, 1}, {6810, 2}, {6816, 1}, {6830, 2},
    +	{6832, 1}, {6863, 2}, {6912, 1}, {6989, 2},
    +	{6992, 1}, {7039, 2}, {7040, 1}, {7156, 2},
    +	{7164, 1}, {7224, 2}, {7227, 1}, {7242, 2},
    +	{7245, 1}, {7296, 16867075}, {7297, 16867587}, {7298, 16870147},
    +	{7299, 16870915}, {7300, 16871171}, {7302, 16873219}, {7303, 16875011},
    +	{7304, 16936451}, {7305, 2}, {7312, 16936707}, {7313, 16936963},
    +	{7314, 16937219}, {7315, 16937475}, {7316, 16937731}, {7317, 16937987},
    +	{7318, 16938243}, {7319, 16938499}, {7320, 16938755}, {7321, 16939011},
    +	{7322, 16939267}, {7323, 16939523}, {7324, 16934659}, {7325, 16939779},
    +	{7326, 16940035}, {7327, 16940291}, {7328, 16940547}, {7329, 16940803},
    +	{7330, 16941059}, {7331, 16941315}, {7332, 16941571}, {7333, 16941827},
    +	{7334, 16942083}, {7335, 16942339}, {7336, 16942595}, {7337, 16942851},
    +	{7338, 16943107}, {7339, 16943363}, {7340, 16943619}, {7341, 16943875},
    +	{7342, 16944131}, {7343, 16944387}, {7344, 16944643}, {7345, 16944899},
    +	{7346, 16945155}, {7347, 16945411}, {7348, 16945667}, {7349, 16945923},
    +	{7350, 16946179}, {7351, 16946435}, {7352, 16946691}, {7353, 16946947},
    +	{7354, 16947203}, {7355, 2}, {7357, 16947459}, {7358, 16947715},
    +	{7359, 16947971}, {7360, 1}, {7368, 2}, {7376, 1},
    +	{7419, 2}, {7424, 1}, {7468, 16777219}, {7469, 16791043},
    +	{7470, 16777475}, {7471, 1}, {7472, 16777987}, {7473, 16778243},
    +	{7474, 16816131}, {7475, 16778755}, {7476, 16779011}, {7477, 16779267},
    +	{7478, 16779523}, {7479, 16779779}, {7480, 16780035}, {7481, 16780291},
    +	{7482, 16780547}, {7483, 1}, {7484, 16780803}, {7485, 16835843},
    +	{7486, 16781059}, {7487, 16781571}, {7488, 16782083}, {7489, 16782339},
    +	{7490, 16782851}, {7491, 16777219}, {7492, 16948227}, {7493, 16948483},
    +	{7494, 16948739}, {7495, 16777475}, {7496, 16777987}, {7497, 16778243},
    +	{7498, 16816387}, {7499, 16816643}, {7500, 16948995}, {7501, 16778755},
    +	{7502, 1}, {7503, 16779779}, {7504, 16780291}, {7505, 16807171},
    +	{7506, 16780803}, {7507, 16814851}, {7508, 16949251}, {7509, 16949507},
    +	{7510, 16781059}, {7511, 16782083}, {7512, 16782339}, {7513, 16949763},
    +	{7514, 16818435}, {7515, 16782595}, {7516, 16950019}, {7517, 16851971},
    +	{7518, 16852227}, {7519, 16852483}, {7520, 16856323}, {7521, 16856579},
    +	{7522, 16779267}, {7523, 16781571}, {7524, 16782339}, {7525, 16782595},
    +	{7526, 16851971}, {7527, 16852227}, {7528, 16855299}, {7529, 16856323},
    +	{7530, 16856579}, {7531, 1}, {7544, 16869891}, {7545, 1},
    +	{7579, 16950275}, {7580, 16777731}, {7581, 16950531}, {7582, 16793603},
    +	{7583, 16948995}, {7584, 16778499}, {7585, 16950787}, {7586, 16951043},
    +	{7587, 16951299}, {7588, 16817923}, {7589, 16817667}, {7590, 16951555},
    +	{7591, 16951811}, {7592, 16952067}, {7593, 16952323}, {7594, 16952579},
    +	{7595, 16952835}, {7596, 16953091}, {7597, 16953347}, {7598, 16818691},
    +	{7599, 16953603}, {7600, 16953859}, {7601, 16818947}, {7602, 16954115},
    +	{7603, 16954371}, {7604, 16820483}, {7605, 16954627}, {7606, 16839683},
    +	{7607, 16821507}, {7608, 16954883}, {7609, 16821763}, {7610, 16839939},
    +	{7611, 16783619}, {7612, 16955139}, {7613, 16955395}, {7614, 16822531},
    +	{7615, 16853507}, {7616, 1}, {7680, 16955651}, {7681, 1},
    +	{7682, 16955907}, {7683, 1}, {7684, 16956163}, {7685, 1},
    +	{7686, 16956419}, {7687, 1}, {7688, 16956675}, {7689, 1},
    +	{7690, 16956931}, {7691, 1}, {7692, 16957187}, {7693, 1},
    +	{7694, 16957443}, {7695, 1}, {7696, 16957699}, {7697, 1},
    +	{7698, 16957955}, {7699, 1}, {7700, 16958211}, {7701, 1},
    +	{7702, 16958467}, {7703, 1}, {7704, 16958723}, {7705, 1},
    +	{7706, 16958979}, {7707, 1}, {7708, 16959235}, {7709, 1},
    +	{7710, 16959491}, {7711, 1}, {7712, 16959747}, {7713, 1},
    +	{7714, 16960003}, {7715, 1}, {7716, 16960259}, {7717, 1},
    +	{7718, 16960515}, {7719, 1}, {7720, 16960771}, {7721, 1},
    +	{7722, 16961027}, {7723, 1}, {7724, 16961283}, {7725, 1},
    +	{7726, 16961539}, {7727, 1}, {7728, 16961795}, {7729, 1},
    +	{7730, 16962051}, {7731, 1}, {7732, 16962307}, {7733, 1},
    +	{7734, 16962563}, {7735, 1}, {7736, 16962819}, {7737, 1},
    +	{7738, 16963075}, {7739, 1}, {7740, 16963331}, {7741, 1},
    +	{7742, 16963587}, {7743, 1}, {7744, 16963843}, {7745, 1},
    +	{7746, 16964099}, {7747, 1}, {7748, 16964355}, {7749, 1},
    +	{7750, 16964611}, {7751, 1}, {7752, 16964867}, {7753, 1},
    +	{7754, 16965123}, {7755, 1}, {7756, 16965379}, {7757, 1},
    +	{7758, 16965635}, {7759, 1}, {7760, 16965891}, {7761, 1},
    +	{7762, 16966147}, {7763, 1}, {7764, 16966403}, {7765, 1},
    +	{7766, 16966659}, {7767, 1}, {7768, 16966915}, {7769, 1},
    +	{7770, 16967171}, {7771, 1}, {7772, 16967427}, {7773, 1},
    +	{7774, 16967683}, {7775, 1}, {7776, 16967939}, {7777, 1},
    +	{7778, 16968195}, {7779, 1}, {7780, 16968451}, {7781, 1},
    +	{7782, 16968707}, {7783, 1}, {7784, 16968963}, {7785, 1},
    +	{7786, 16969219}, {7787, 1}, {7788, 16969475}, {7789, 1},
    +	{7790, 16969731}, {7791, 1}, {7792, 16969987}, {7793, 1},
    +	{7794, 16970243}, {7795, 1}, {7796, 16970499}, {7797, 1},
    +	{7798, 16970755}, {7799, 1}, {7800, 16971011}, {7801, 1},
    +	{7802, 16971267}, {7803, 1}, {7804, 16971523}, {7805, 1},
    +	{7806, 16971779}, {7807, 1}, {7808, 16972035}, {7809, 1},
    +	{7810, 16972291}, {7811, 1}, {7812, 16972547}, {7813, 1},
    +	{7814, 16972803}, {7815, 1}, {7816, 16973059}, {7817, 1},
    +	{7818, 16973315}, {7819, 1}, {7820, 16973571}, {7821, 1},
    +	{7822, 16973827}, {7823, 1}, {7824, 16974083}, {7825, 1},
    +	{7826, 16974339}, {7827, 1}, {7828, 16974595}, {7829, 1},
    +	{7834, 33752067}, {7835, 16967939}, {7836, 1}, {7838, 33752579},
    +	{7839, 1}, {7840, 16975875}, {7841, 1}, {7842, 16976131},
    +	{7843, 1}, {7844, 16976387}, {7845, 1}, {7846, 16976643},
    +	{7847, 1}, {7848, 16976899}, {7849, 1}, {7850, 16977155},
    +	{7851, 1}, {7852, 16977411}, {7853, 1}, {7854, 16977667},
    +	{7855, 1}, {7856, 16977923}, {7857, 1}, {7858, 16978179},
    +	{7859, 1}, {7860, 16978435}, {7861, 1}, {7862, 16978691},
    +	{7863, 1}, {7864, 16978947}, {7865, 1}, {7866, 16979203},
    +	{7867, 1}, {7868, 16979459}, {7869, 1}, {7870, 16979715},
    +	{7871, 1}, {7872, 16979971}, {7873, 1}, {7874, 16980227},
    +	{7875, 1}, {7876, 16980483}, {7877, 1}, {7878, 16980739},
    +	{7879, 1}, {7880, 16980995}, {7881, 1}, {7882, 16981251},
    +	{7883, 1}, {7884, 16981507}, {7885, 1}, {7886, 16981763},
    +	{7887, 1}, {7888, 16982019}, {7889, 1}, {7890, 16982275},
    +	{7891, 1}, {7892, 16982531}, {7893, 1}, {7894, 16982787},
    +	{7895, 1}, {7896, 16983043}, {7897, 1}, {7898, 16983299},
    +	{7899, 1}, {7900, 16983555}, {7901, 1}, {7902, 16983811},
    +	{7903, 1}, {7904, 16984067}, {7905, 1}, {7906, 16984323},
    +	{7907, 1}, {7908, 16984579}, {7909, 1}, {7910, 16984835},
    +	{7911, 1}, {7912, 16985091}, {7913, 1}, {7914, 16985347},
    +	{7915, 1}, {7916, 16985603}, {7917, 1}, {7918, 16985859},
    +	{7919, 1}, {7920, 16986115}, {7921, 1}, {7922, 16986371},
    +	{7923, 1}, {7924, 16986627}, {7925, 1}, {7926, 16986883},
    +	{7927, 1}, {7928, 16987139}, {7929, 1}, {7930, 16987395},
    +	{7931, 1}, {7932, 16987651}, {7933, 1}, {7934, 16987907},
    +	{7935, 1}, {7944, 16988163}, {7945, 16988419}, {7946, 16988675},
    +	{7947, 16988931}, {7948, 16989187}, {7949, 16989443}, {7950, 16989699},
    +	{7951, 16989955}, {7952, 1}, {7958, 2}, {7960, 16990211},
    +	{7961, 16990467}, {7962, 16990723}, {7963, 16990979}, {7964, 16991235},
    +	{7965, 16991491}, {7966, 2}, {7968, 1}, {7976, 16991747},
    +	{7977, 16992003}, {7978, 16992259}, {7979, 16992515}, {7980, 16992771},
    +	{7981, 16993027}, {7982, 16993283}, {7983, 16993539}, {7984, 1},
    +	{7992, 16993795}, {7993, 16994051}, {7994, 16994307}, {7995, 16994563},
    +	{7996, 16994819}, {7997, 16995075}, {7998, 16995331}, {7999, 16995587},
    +	{8000, 1}, {8006, 2}, {8008, 16995843}, {8009, 16996099},
    +	{8010, 16996355}, {8011, 16996611}, {8012, 16996867}, {8013, 16997123},
    +	{8014, 2}, {8016, 1}, {8024, 2}, {8025, 16997379},
    +	{8026, 2}, {8027, 16997635}, {8028, 2}, {8029, 16997891},
    +	{8030, 2}, {8031, 16998147}, {8032, 1}, {8040, 16998403},
    +	{8041, 16998659}, {8042, 16998915}, {8043, 16999171}, {8044, 16999427},
    +	{8045, 16999683}, {8046, 16999939}, {8047, 17000195}, {8048, 1},
    +	{8049, 16849923}, {8050, 1}, {8051, 16850179}, {8052, 1},
    +	{8053, 16850435}, {8054, 1}, {8055, 16850691}, {8056, 1},
    +	{8057, 16850947}, {8058, 1}, {8059, 16851203}, {8060, 1},
    +	{8061, 16851459}, {8062, 2}, {8064, 33777667}, {8065, 33778179},
    +	{8066, 33778691}, {8067, 33779203}, {8068, 33779715}, {8069, 33780227},
    +	{8070, 33780739}, {8071, 33781251}, {8072, 33777667}, {8073, 33778179},
    +	{8074, 33778691}, {8075, 33779203}, {8076, 33779715}, {8077, 33780227},
    +	{8078, 33780739}, {8079, 33781251}, {8080, 33781763}, {8081, 33782275},
    +	{8082, 33782787}, {8083, 33783299}, {8084, 33783811}, {8085, 33784323},
    +	{8086, 33784835}, {8087, 33785347}, {8088, 33781763}, {8089, 33782275},
    +	{8090, 33782787}, {8091, 33783299}, {8092, 33783811}, {8093, 33784323},
    +	{8094, 33784835}, {8095, 33785347}, {8096, 33785859}, {8097, 33786371},
    +	{8098, 33786883}, {8099, 33787395}, {8100, 33787907}, {8101, 33788419},
    +	{8102, 33788931}, {8103, 33789443}, {8104, 33785859}, {8105, 33786371},
    +	{8106, 33786883}, {8107, 33787395}, {8108, 33787907}, {8109, 33788419},
    +	{8110, 33788931}, {8111, 33789443}, {8112, 1}, {8114, 33789955},
    +	{8115, 33790467}, {8116, 33790979}, {8117, 2}, {8118, 1},
    +	{8119, 33791491}, {8120, 17014787}, {8121, 17015043}, {8122, 17012739},
    +	{8123, 16849923}, {8124, 33790467}, {8125, 33792515}, {8126, 16846851},
    +	{8127, 33792515}, {8128, 33793027}, {8129, 50570755}, {8130, 33794307},
    +	{8131, 33794819}, {8132, 33795331}, {8133, 2}, {8134, 1},
    +	{8135, 33795843}, {8136, 17019139}, {8137, 16850179}, {8138, 17017091},
    +	{8139, 16850435}, {8140, 33794819}, {8141, 50573827}, {8142, 50574595},
    +	{8143, 50575363}, {8144, 1}, {8147, 17021699}, {8148, 2},
    +	{8150, 1}, {8152, 17021955}, {8153, 17022211}, {8154, 17022467},
    +	{8155, 16850691}, {8156, 2}, {8157, 50577155}, {8158, 50577923},
    +	{8159, 50578691}, {8160, 1}, {8163, 17025027}, {8164, 1},
    +	{8168, 17025283}, {8169, 17025539}, {8170, 17025795}, {8171, 16851203},
    +	{8172, 17026051}, {8173, 50580739}, {8174, 50403587}, {8175, 17027075},
    +	{8176, 2}, {8178, 33804547}, {8179, 33805059}, {8180, 33805571},
    +	{8181, 2}, {8182, 1}, {8183, 33806083}, {8184, 17029379},
    +	{8185, 16850947}, {8186, 17027331}, {8187, 16851459}, {8188, 33805059},
    +	{8189, 33562883}, {8190, 33799939}, {8191, 2}, {8192, 16783875},
    +	{8203, 0}, {8204, 1}, {8206, 2}, {8208, 1},
    +	{8209, 17029635}, {8210, 1}, {8215, 33807107}, {8216, 1},
    +	{8228, 2}, {8231, 1}, {8232, 2}, {8239, 16783875},
    +	{8240, 1}, {8243, 33807619}, {8244, 50585347}, {8245, 1},
    +	{8246, 33808899}, {8247, 50586627}, {8248, 1}, {8252, 33810179},
    +	{8253, 1}, {8254, 33810691}, {8255, 1}, {8263, 33811203},
    +	{8264, 33811715}, {8265, 33812227}, {8266, 1}, {8279, 67362051},
    +	{8280, 1}, {8287, 16783875}, {8288, 0}, {8289, 2},
    +	{8292, 0}, {8293, 2}, {8304, 17035523}, {8305, 16779267},
    +	{8306, 2}, {8308, 16787715}, {8309, 17035779}, {8310, 17036035},
    +	{8311, 17036291}, {8312, 17036547}, {8313, 17036803}, {8314, 17037059},
    +	{8315, 17037315}, {8316, 17037571}, {8317, 17037827}, {8318, 17038083},
    +	{8319, 16780547}, {8320, 17035523}, {8321, 16786947}, {8322, 16785155},
    +	{8323, 16785411}, {8324, 16787715}, {8325, 17035779}, {8326, 17036035},
    +	{8327, 17036291}, {8328, 17036547}, {8329, 17036803}, {8330, 17037059},
    +	{8331, 17037315}, {8332, 17037571}, {8333, 17037827}, {8334, 17038083},
    +	{8335, 2}, {8336, 16777219}, {8337, 16778243}, {8338, 16780803},
    +	{8339, 16783107}, {8340, 16816387}, {8341, 16779011}, {8342, 16779779},
    +	{8343, 16780035}, {8344, 16780291}, {8345, 16780547}, {8346, 16781059},
    +	{8347, 16781827}, {8348, 16782083}, {8349, 2}, {8352, 1},
    +	{8360, 33558787}, {8361, 1}, {8385, 2}, {8400, 1},
    +	{8433, 2}, {8448, 50592771}, {8449, 50593539}, {8450, 16777731},
    +	{8451, 33817091}, {8452, 1}, {8453, 50594819}, {8454, 50595587},
    +	{8455, 16816643}, {8456, 1}, {8457, 33819139}, {8458, 16778755},
    +	{8459, 16779011}, {8463, 16802051}, {8464, 16779267}, {8466, 16780035},
    +	{8468, 1}, {8469, 16780547}, {8470, 33557763}, {8471, 1},
    +	{8473, 16781059}, {8474, 16781315}, {8475, 16781571}, {8478, 1},
    +	{8480, 33819651}, {8481, 50597379}, {8482, 33820931}, {8483, 1},
    +	{8484, 16783619}, {8485, 1}, {8486, 16857091}, {8487, 1},
    +	{8488, 16783619}, {8489, 1}, {8490, 16779779}, {8491, 16790787},
    +	{8492, 16777475}, {8493, 16777731}, {8494, 1}, {8495, 16778243},
    +	{8497, 16778499}, {8498, 2}, {8499, 16780291}, {8500, 16780803},
    +	{8501, 17044227}, {8502, 17044483}, {8503, 17044739}, {8504, 17044995},
    +	{8505, 16779267}, {8506, 1}, {8507, 50599683}, {8508, 16855043},
    +	{8509, 16852227}, {8511, 16855043}, {8512, 17046019}, {8513, 1},
    +	{8517, 16777987}, {8519, 16778243}, {8520, 16779267}, {8521, 16779523},
    +	{8522, 1}, {8528, 50600707}, {8529, 50601475}, {8530, 67379459},
    +	{8531, 50603267}, {8532, 50604035}, {8533, 50604803}, {8534, 50605571},
    +	{8535, 50606339}, {8536, 50607107}, {8537, 50607875}, {8538, 50608643},
    +	{8539, 50609411}, {8540, 50610179}, {8541, 50610947}, {8542, 50611715},
    +	{8543, 33564419}, {8544, 16779267}, {8545, 33835267}, {8546, 50612995},
    +	{8547, 33836547}, {8548, 16782595}, {8549, 33837059}, {8550, 50614787},
    +	{8551, 67392771}, {8552, 33839363}, {8553, 16783107}, {8554, 33839875},
    +	{8555, 50617603}, {8556, 16780035}, {8557, 16777731}, {8558, 16777987},
    +	{8559, 16780291}, {8560, 16779267}, {8561, 33835267}, {8562, 50612483},
    +	{8563, 33836547}, {8564, 16782595}, {8565, 33837059}, {8566, 50614787},
    +	{8567, 67392771}, {8568, 33839363}, {8569, 16783107}, {8570, 33839875},
    +	{8571, 50617603}, {8572, 16780035}, {8573, 16777731}, {8574, 16777987},
    +	{8575, 16780291}, {8576, 1}, {8579, 2}, {8580, 1},
    +	{8585, 50618371}, {8586, 1}, {8588, 2}, {8592, 1},
    +	{8748, 33841923}, {8749, 50619651}, {8750, 1}, {8751, 33843203},
    +	{8752, 50620931}, {8753, 1}, {9001, 17067267}, {9002, 17067523},
    +	{9003, 1}, {9255, 2}, {9280, 1}, {9291, 2},
    +	{9312, 16786947}, {9313, 16785155}, {9314, 16785411}, {9315, 16787715},
    +	{9316, 17035779}, {9317, 17036035}, {9318, 17036291}, {9319, 17036547},
    +	{9320, 17036803}, {9321, 33825539}, {9322, 33564163}, {9323, 33844995},
    +	{9324, 33845507}, {9325, 33846019}, {9326, 33846531}, {9327, 33847043},
    +	{9328, 33847555}, {9329, 33848067}, {9330, 33848579}, {9331, 33849091},
    +	{9332, 50626819}, {9333, 50627587}, {9334, 50628355}, {9335, 50629123},
    +	{9336, 50629891}, {9337, 50630659}, {9338, 50631427}, {9339, 50632195},
    +	{9340, 50632963}, {9341, 67410947}, {9342, 67411971}, {9343, 67412995},
    +	{9344, 67414019}, {9345, 67415043}, {9346, 67416067}, {9347, 67417091},
    +	{9348, 67418115}, {9349, 67419139}, {9350, 67420163}, {9351, 67421187},
    +	{9352, 2}, {9372, 50644995}, {9373, 50645763}, {9374, 50646531},
    +	{9375, 50647299}, {9376, 50648067}, {9377, 50648835}, {9378, 50649603},
    +	{9379, 50650371}, {9380, 50651139}, {9381, 50651907}, {9382, 50652675},
    +	{9383, 50653443}, {9384, 50654211}, {9385, 50654979}, {9386, 50655747},
    +	{9387, 50656515}, {9388, 50657283}, {9389, 50658051}, {9390, 50658819},
    +	{9391, 50659587}, {9392, 50660355}, {9393, 50661123}, {9394, 50661891},
    +	{9395, 50662659}, {9396, 50663427}, {9397, 50664195}, {9398, 16777219},
    +	{9399, 16777475}, {9400, 16777731}, {9401, 16777987}, {9402, 16778243},
    +	{9403, 16778499}, {9404, 16778755}, {9405, 16779011}, {9406, 16779267},
    +	{9407, 16779523}, {9408, 16779779}, {9409, 16780035}, {9410, 16780291},
    +	{9411, 16780547}, {9412, 16780803}, {9413, 16781059}, {9414, 16781315},
    +	{9415, 16781571}, {9416, 16781827}, {9417, 16782083}, {9418, 16782339},
    +	{9419, 16782595}, {9420, 16782851}, {9421, 16783107}, {9422, 16783363},
    +	{9423, 16783619}, {9424, 16777219}, {9425, 16777475}, {9426, 16777731},
    +	{9427, 16777987}, {9428, 16778243}, {9429, 16778499}, {9430, 16778755},
    +	{9431, 16779011}, {9432, 16779267}, {9433, 16779523}, {9434, 16779779},
    +	{9435, 16780035}, {9436, 16780291}, {9437, 16780547}, {9438, 16780803},
    +	{9439, 16781059}, {9440, 16781315}, {9441, 16781571}, {9442, 16781827},
    +	{9443, 16782083}, {9444, 16782339}, {9445, 16782595}, {9446, 16782851},
    +	{9447, 16783107}, {9448, 16783363}, {9449, 16783619}, {9450, 17035523},
    +	{9451, 1}, {10764, 67396355}, {10765, 1}, {10868, 50664963},
    +	{10869, 33888515}, {10870, 50665475}, {10871, 1}, {10972, 33889027},
    +	{10973, 1}, {11124, 2}, {11126, 1}, {11158, 2},
    +	{11159, 1}, {11264, 17112323}, {11265, 17112579}, {11266, 17112835},
    +	{11267, 17113091}, {11268, 17113347}, {11269, 17113603}, {11270, 17113859},
    +	{11271, 17114115}, {11272, 17114371}, {11273, 17114627}, {11274, 17114883},
    +	{11275, 17115139}, {11276, 17115395}, {11277, 17115651}, {11278, 17115907},
    +	{11279, 17116163}, {11280, 17116419}, {11281, 17116675}, {11282, 17116931},
    +	{11283, 17117187}, {11284, 17117443}, {11285, 17117699}, {11286, 17117955},
    +	{11287, 17118211}, {11288, 17118467}, {11289, 17118723}, {11290, 17118979},
    +	{11291, 17119235}, {11292, 17119491}, {11293, 17119747}, {11294, 17120003},
    +	{11295, 17120259}, {11296, 17120515}, {11297, 17120771}, {11298, 17121027},
    +	{11299, 17121283}, {11300, 17121539}, {11301, 17121795}, {11302, 17122051},
    +	{11303, 17122307}, {11304, 17122563}, {11305, 17122819}, {11306, 17123075},
    +	{11307, 17123331}, {11308, 17123587}, {11309, 17123843}, {11310, 17124099},
    +	{11311, 17124355}, {11312, 1}, {11360, 17124611}, {11361, 1},
    +	{11362, 17124867}, {11363, 17125123}, {11364, 17125379}, {11365, 1},
    +	{11367, 17125635}, {11368, 1}, {11369, 17125891}, {11370, 1},
    +	{11371, 17126147}, {11372, 1}, {11373, 16948483}, {11374, 16953091},
    +	{11375, 16948227}, {11376, 16950275}, {11377, 1}, {11378, 17126403},
    +	{11379, 1}, {11381, 17126659}, {11382, 1}, {11388, 16779523},
    +	{11389, 16782595}, {11390, 17126915}, {11391, 17127171}, {11392, 17127427},
    +	{11393, 1}, {11394, 17127683}, {11395, 1}, {11396, 17127939},
    +	{11397, 1}, {11398, 17128195}, {11399, 1}, {11400, 17128451},
    +	{11401, 1}, {11402, 17128707}, {11403, 1}, {11404, 17128963},
    +	{11405, 1}, {11406, 17129219}, {11407, 1}, {11408, 17129475},
    +	{11409, 1}, {11410, 17129731}, {11411, 1}, {11412, 17129987},
    +	{11413, 1}, {11414, 17130243}, {11415, 1}, {11416, 17130499},
    +	{11417, 1}, {11418, 17130755}, {11419, 1}, {11420, 17131011},
    +	{11421, 1}, {11422, 17131267}, {11423, 1}, {11424, 17131523},
    +	{11425, 1}, {11426, 17131779}, {11427, 1}, {11428, 17132035},
    +	{11429, 1}, {11430, 17132291}, {11431, 1}, {11432, 17132547},
    +	{11433, 1}, {11434, 17132803}, {11435, 1}, {11436, 17133059},
    +	{11437, 1}, {11438, 17133315}, {11439, 1}, {11440, 17133571},
    +	{11441, 1}, {11442, 17133827}, {11443, 1}, {11444, 17134083},
    +	{11445, 1}, {11446, 17134339}, {11447, 1}, {11448, 17134595},
    +	{11449, 1}, {11450, 17134851}, {11451, 1}, {11452, 17135107},
    +	{11453, 1}, {11454, 17135363}, {11455, 1}, {11456, 17135619},
    +	{11457, 1}, {11458, 17135875}, {11459, 1}, {11460, 17136131},
    +	{11461, 1}, {11462, 17136387}, {11463, 1}, {11464, 17136643},
    +	{11465, 1}, {11466, 17136899}, {11467, 1}, {11468, 17137155},
    +	{11469, 1}, {11470, 17137411}, {11471, 1}, {11472, 17137667},
    +	{11473, 1}, {11474, 17137923}, {11475, 1}, {11476, 17138179},
    +	{11477, 1}, {11478, 17138435}, {11479, 1}, {11480, 17138691},
    +	{11481, 1}, {11482, 17138947}, {11483, 1}, {11484, 17139203},
    +	{11485, 1}, {11486, 17139459}, {11487, 1}, {11488, 17139715},
    +	{11489, 1}, {11490, 17139971}, {11491, 1}, {11499, 17140227},
    +	{11500, 1}, {11501, 17140483}, {11502, 1}, {11506, 17140739},
    +	{11507, 1}, {11508, 2}, {11513, 1}, {11558, 2},
    +	{11559, 1}, {11560, 2}, {11565, 1}, {11566, 2},
    +	{11568, 1}, {11624, 2}, {11631, 17140995}, {11632, 1},
    +	{11633, 2}, {11647, 1}, {11671, 2}, {11680, 1},
    +	{11687, 2}, {11688, 1}, {11695, 2}, {11696, 1},
    +	{11703, 2}, {11704, 1}, {11711, 2}, {11712, 1},
    +	{11719, 2}, {11720, 1}, {11727, 2}, {11728, 1},
    +	{11735, 2}, {11736, 1}, {11743, 2}, {11744, 1},
    +	{11870, 2}, {11904, 1}, {11930, 2}, {11931, 1},
    +	{11935, 17141251}, {11936, 1}, {12019, 17141507}, {12020, 2},
    +	{12032, 17141763}, {12033, 17142019}, {12034, 17142275}, {12035, 17142531},
    +	{12036, 17142787}, {12037, 17143043}, {12038, 17143299}, {12039, 17143555},
    +	{12040, 17143811}, {12041, 17144067}, {12042, 17144323}, {12043, 17144579},
    +	{12044, 17144835}, {12045, 17145091}, {12046, 17145347}, {12047, 17145603},
    +	{12048, 17145859}, {12049, 17146115}, {12050, 17146371}, {12051, 17146627},
    +	{12052, 17146883}, {12053, 17147139}, {12054, 17147395}, {12055, 17147651},
    +	{12056, 17147907}, {12057, 17148163}, {12058, 17148419}, {12059, 17148675},
    +	{12060, 17148931}, {12061, 17149187}, {12062, 17149443}, {12063, 17149699},
    +	{12064, 17149955}, {12065, 17150211}, {12066, 17150467}, {12067, 17150723},
    +	{12068, 17150979}, {12069, 17151235}, {12070, 17151491}, {12071, 17151747},
    +	{12072, 17152003}, {12073, 17152259}, {12074, 17152515}, {12075, 17152771},
    +	{12076, 17153027}, {12077, 17153283}, {12078, 17153539}, {12079, 17153795},
    +	{12080, 17154051}, {12081, 17154307}, {12082, 17154563}, {12083, 17154819},
    +	{12084, 17155075}, {12085, 17155331}, {12086, 17155587}, {12087, 17155843},
    +	{12088, 17156099}, {12089, 17156355}, {12090, 17156611}, {12091, 17156867},
    +	{12092, 17157123}, {12093, 17157379}, {12094, 17157635}, {12095, 17157891},
    +	{12096, 17158147}, {12097, 17158403}, {12098, 17158659}, {12099, 17158915},
    +	{12100, 17159171}, {12101, 17159427}, {12102, 17159683}, {12103, 17159939},
    +	{12104, 17160195}, {12105, 17160451}, {12106, 17160707}, {12107, 17160963},
    +	{12108, 17161219}, {12109, 17161475}, {12110, 17161731}, {12111, 17161987},
    +	{12112, 17162243}, {12113, 17162499}, {12114, 17162755}, {12115, 17163011},
    +	{12116, 17163267}, {12117, 17163523}, {12118, 17163779}, {12119, 17164035},
    +	{12120, 17164291}, {12121, 17164547}, {12122, 17164803}, {12123, 17165059},
    +	{12124, 17165315}, {12125, 17165571}, {12126, 17165827}, {12127, 17166083},
    +	{12128, 17166339}, {12129, 17166595}, {12130, 17166851}, {12131, 17167107},
    +	{12132, 17167363}, {12133, 17167619}, {12134, 17167875}, {12135, 17168131},
    +	{12136, 17168387}, {12137, 17168643}, {12138, 17168899}, {12139, 17169155},
    +	{12140, 17169411}, {12141, 17169667}, {12142, 17169923}, {12143, 17170179},
    +	{12144, 17170435}, {12145, 17170691}, {12146, 17170947}, {12147, 17171203},
    +	{12148, 17171459}, {12149, 17171715}, {12150, 17171971}, {12151, 17172227},
    +	{12152, 17172483}, {12153, 17172739}, {12154, 17172995}, {12155, 17173251},
    +	{12156, 17173507}, {12157, 17173763}, {12158, 17174019}, {12159, 17174275},
    +	{12160, 17174531}, {12161, 17174787}, {12162, 17175043}, {12163, 17175299},
    +	{12164, 17175555}, {12165, 17175811}, {12166, 17176067}, {12167, 17176323},
    +	{12168, 17176579}, {12169, 17176835}, {12170, 17177091}, {12171, 17177347},
    +	{12172, 17177603}, {12173, 17177859}, {12174, 17178115}, {12175, 17178371},
    +	{12176, 17178627}, {12177, 17178883}, {12178, 17179139}, {12179, 17179395},
    +	{12180, 17179651}, {12181, 17179907}, {12182, 17180163}, {12183, 17180419},
    +	{12184, 17180675}, {12185, 17180931}, {12186, 17181187}, {12187, 17181443},
    +	{12188, 17181699}, {12189, 17181955}, {12190, 17182211}, {12191, 17182467},
    +	{12192, 17182723}, {12193, 17182979}, {12194, 17183235}, {12195, 17183491},
    +	{12196, 17183747}, {12197, 17184003}, {12198, 17184259}, {12199, 17184515},
    +	{12200, 17184771}, {12201, 17185027}, {12202, 17185283}, {12203, 17185539},
    +	{12204, 17185795}, {12205, 17186051}, {12206, 17186307}, {12207, 17186563},
    +	{12208, 17186819}, {12209, 17187075}, {12210, 17187331}, {12211, 17187587},
    +	{12212, 17187843}, {12213, 17188099}, {12214, 17188355}, {12215, 17188611},
    +	{12216, 17188867}, {12217, 17189123}, {12218, 17189379}, {12219, 17189635},
    +	{12220, 17189891}, {12221, 17190147}, {12222, 17190403}, {12223, 17190659},
    +	{12224, 17190915}, {12225, 17191171}, {12226, 17191427}, {12227, 17191683},
    +	{12228, 17191939}, {12229, 17192195}, {12230, 17192451}, {12231, 17192707},
    +	{12232, 17192963}, {12233, 17193219}, {12234, 17193475}, {12235, 17193731},
    +	{12236, 17193987}, {12237, 17194243}, {12238, 17194499}, {12239, 17194755},
    +	{12240, 17195011}, {12241, 17195267}, {12242, 17195523}, {12243, 17195779},
    +	{12244, 17196035}, {12245, 17196291}, {12246, 2}, {12288, 16783875},
    +	{12289, 1}, {12290, 17196547}, {12291, 1}, {12342, 17196803},
    +	{12343, 1}, {12344, 17147651}, {12345, 17197059}, {12346, 17197315},
    +	{12347, 1}, {12352, 2}, {12353, 1}, {12439, 2},
    +	{12441, 1}, {12443, 33974787}, {12444, 33975299}, {12445, 1},
    +	{12447, 33975811}, {12448, 1}, {12543, 33976323}, {12544, 2},
    +	{12549, 1}, {12592, 2}, {12593, 17199619}, {12594, 17199875},
    +	{12595, 17200131}, {12596, 17200387}, {12597, 17200643}, {12598, 17200899},
    +	{12599, 17201155}, {12600, 17201411}, {12601, 17201667}, {12602, 17201923},
    +	{12603, 17202179}, {12604, 17202435}, {12605, 17202691}, {12606, 17202947},
    +	{12607, 17203203}, {12608, 17203459}, {12609, 17203715}, {12610, 17203971},
    +	{12611, 17204227}, {12612, 17204483}, {12613, 17204739}, {12614, 17204995},
    +	{12615, 17205251}, {12616, 17205507}, {12617, 17205763}, {12618, 17206019},
    +	{12619, 17206275}, {12620, 17206531}, {12621, 17206787}, {12622, 17207043},
    +	{12623, 17207299}, {12624, 17207555}, {12625, 17207811}, {12626, 17208067},
    +	{12627, 17208323}, {12628, 17208579}, {12629, 17208835}, {12630, 17209091},
    +	{12631, 17209347}, {12632, 17209603}, {12633, 17209859}, {12634, 17210115},
    +	{12635, 17210371}, {12636, 17210627}, {12637, 17210883}, {12638, 17211139},
    +	{12639, 17211395}, {12640, 17211651}, {12641, 17211907}, {12642, 17212163},
    +	{12643, 17212419}, {12644, 2}, {12645, 17212675}, {12646, 17212931},
    +	{12647, 17213187}, {12648, 17213443}, {12649, 17213699}, {12650, 17213955},
    +	{12651, 17214211}, {12652, 17214467}, {12653, 17214723}, {12654, 17214979},
    +	{12655, 17215235}, {12656, 17215491}, {12657, 17215747}, {12658, 17216003},
    +	{12659, 17216259}, {12660, 17216515}, {12661, 17216771}, {12662, 17217027},
    +	{12663, 17217283}, {12664, 17217539}, {12665, 17217795}, {12666, 17218051},
    +	{12667, 17218307}, {12668, 17218563}, {12669, 17218819}, {12670, 17219075},
    +	{12671, 17219331}, {12672, 17219587}, {12673, 17219843}, {12674, 17220099},
    +	{12675, 17220355}, {12676, 17220611}, {12677, 17220867}, {12678, 17221123},
    +	{12679, 17221379}, {12680, 17221635}, {12681, 17221891}, {12682, 17222147},
    +	{12683, 17222403}, {12684, 17222659}, {12685, 17222915}, {12686, 17223171},
    +	{12687, 2}, {12688, 1}, {12690, 17141763}, {12691, 17143299},
    +	{12692, 17223427}, {12693, 17223683}, {12694, 17223939}, {12695, 17224195},
    +	{12696, 17224451}, {12697, 17224707}, {12698, 17142787}, {12699, 17224963},
    +	{12700, 17225219}, {12701, 17225475}, {12702, 17225731}, {12703, 17143811},
    +	{12704, 1}, {12772, 2}, {12784, 1}, {12800, 50780419},
    +	{12801, 50781187}, {12802, 50781955}, {12803, 50782723}, {12804, 50783491},
    +	{12805, 50784259}, {12806, 50785027}, {12807, 50785795}, {12808, 50786563},
    +	{12809, 50787331}, {12810, 50788099}, {12811, 50788867}, {12812, 50789635},
    +	{12813, 50790403}, {12814, 50791171}, {12815, 50791939}, {12816, 50792707},
    +	{12817, 50793475}, {12818, 50794243}, {12819, 50795011}, {12820, 50795779},
    +	{12821, 50796547}, {12822, 50797315}, {12823, 50798083}, {12824, 50798851},
    +	{12825, 50799619}, {12826, 50800387}, {12827, 50801155}, {12828, 50801923},
    +	{12829, 67579907}, {12830, 67580931}, {12831, 2}, {12832, 50804739},
    +	{12833, 50805507}, {12834, 50806275}, {12835, 50807043}, {12836, 50807811},
    +	{12837, 50808579}, {12838, 50809347}, {12839, 50810115}, {12840, 50810883},
    +	{12841, 50811651}, {12842, 50812419}, {12843, 50813187}, {12844, 50813955},
    +	{12845, 50814723}, {12846, 50815491}, {12847, 50816259}, {12848, 50817027},
    +	{12849, 50817795}, {12850, 50818563}, {12851, 50819331}, {12852, 50820099},
    +	{12853, 50820867}, {12854, 50821635}, {12855, 50822403}, {12856, 50823171},
    +	{12857, 50823939}, {12858, 50824707}, {12859, 50825475}, {12860, 50826243},
    +	{12861, 50827011}, {12862, 50827779}, {12863, 50828547}, {12864, 50829315},
    +	{12865, 50830083}, {12866, 50830851}, {12867, 50831619}, {12868, 17277955},
    +	{12869, 17278211}, {12870, 17158659}, {12871, 17278467}, {12872, 1},
    +	{12880, 50833155}, {12881, 33845251}, {12882, 34056707}, {12883, 33562371},
    +	{12884, 34057219}, {12885, 34057731}, {12886, 34058243}, {12887, 34058755},
    +	{12888, 34059267}, {12889, 34059779}, {12890, 34060291}, {12891, 33827331},
    +	{12892, 33826563}, {12893, 34060803}, {12894, 34061315}, {12895, 34061827},
    +	{12896, 17199619}, {12897, 17200387}, {12898, 17201155}, {12899, 17201667},
    +	{12900, 17203715}, {12901, 17203971}, {12902, 17204739}, {12903, 17205251},
    +	{12904, 17205507}, {12905, 17206019}, {12906, 17206275}, {12907, 17206531},
    +	{12908, 17206787}, {12909, 17207043}, {12910, 17236995}, {12911, 17237763},
    +	{12912, 17238531}, {12913, 17239299}, {12914, 17240067}, {12915, 17240835},
    +	{12916, 17241603}, {12917, 17242371}, {12918, 17243139}, {12919, 17243907},
    +	{12920, 17244675}, {12921, 17245443}, {12922, 17246211}, {12923, 17246979},
    +	{12924, 34062339}, {12925, 34062851}, {12926, 17286147}, {12927, 1},
    +	{12928, 17141763}, {12929, 17143299}, {12930, 17223427}, {12931, 17223683},
    +	{12932, 17253635}, {12933, 17254403}, {12934, 17255171}, {12935, 17144579},
    +	{12936, 17256707}, {12937, 17147651}, {12938, 17160451}, {12939, 17163523},
    +	{12940, 17163267}, {12941, 17160707}, {12942, 17184259}, {12943, 17149699},
    +	{12944, 17159939}, {12945, 17263619}, {12946, 17264387}, {12947, 17265155},
    +	{12948, 17265923}, {12949, 17266691}, {12950, 17267459}, {12951, 17268227},
    +	{12952, 17268995}, {12953, 17286403}, {12954, 17286659}, {12955, 17151235},
    +	{12956, 17286915}, {12957, 17287171}, {12958, 17287427}, {12959, 17287683},
    +	{12960, 17287939}, {12961, 17275907}, {12962, 17288195}, {12963, 17288451},
    +	{12964, 17223939}, {12965, 17224195}, {12966, 17224451}, {12967, 17288707},
    +	{12968, 17288963}, {12969, 17289219}, {12970, 17289475}, {12971, 17271299},
    +	{12972, 17272067}, {12973, 17272835}, {12974, 17273603}, {12975, 17274371},
    +	{12976, 17289731}, {12977, 34067203}, {12978, 34067715}, {12979, 34068227},
    +	{12980, 34068739}, {12981, 34069251}, {12982, 33564931}, {12983, 34057475},
    +	{12984, 34061571}, {12985, 34069763}, {12986, 34070275}, {12987, 34070787},
    +	{12988, 34071299}, {12989, 34071811}, {12990, 34072323}, {12991, 34072835},
    +	{12992, 34073347}, {12993, 34073859}, {12994, 34074371}, {12995, 34074883},
    +	{12996, 34075395}, {12997, 34075907}, {12998, 34076419}, {12999, 34076931},
    +	{13000, 34077443}, {13001, 50855171}, {13002, 50855939}, {13003, 50856707},
    +	{13004, 34080259}, {13005, 50857987}, {13006, 34081539}, {13007, 50859267},
    +	{13008, 17305603}, {13009, 17305859}, {13010, 17306115}, {13011, 17306371},
    +	{13012, 17306627}, {13013, 17306883}, {13014, 17307139}, {13015, 17307395},
    +	{13016, 17307651}, {13017, 17199107}, {13018, 17307907}, {13019, 17308163},
    +	{13020, 17308419}, {13021, 17308675}, {13022, 17308931}, {13023, 17309187},
    +	{13024, 17309443}, {13025, 17309699}, {13026, 17309955}, {13027, 17199363},
    +	{13028, 17310211}, {13029, 17310467}, {13030, 17310723}, {13031, 17310979},
    +	{13032, 17311235}, {13033, 17311491}, {13034, 17311747}, {13035, 17312003},
    +	{13036, 17312259}, {13037, 17312515}, {13038, 17312771}, {13039, 17313027},
    +	{13040, 17313283}, {13041, 17313539}, {13042, 17313795}, {13043, 17314051},
    +	{13044, 17314307}, {13045, 17314563}, {13046, 17314819}, {13047, 17315075},
    +	{13048, 17315331}, {13049, 17315587}, {13050, 17315843}, {13051, 17316099},
    +	{13052, 17316355}, {13053, 17316611}, {13054, 17316867}, {13055, 34094339},
    +	{13056, 67649283}, {13057, 67650307}, {13058, 67651331}, {13059, 50875139},
    +	{13060, 67653123}, {13061, 50876931}, {13062, 50877699}, {13063, 84432899},
    +	{13064, 67656963}, {13065, 50880771}, {13066, 50881539}, {13067, 50882307},
    +	{13068, 67660291}, {13069, 67661315}, {13070, 50885123}, {13071, 50885891},
    +	{13072, 34109443}, {13073, 50887171}, {13074, 67665155}, {13075, 67666179},
    +	{13076, 34112771}, {13077, 84444931}, {13078, 101223427}, {13079, 84447747},
    +	{13080, 50891011}, {13081, 84449027}, {13082, 84450307}, {13083, 67674371},
    +	{13084, 50898179}, {13085, 50898947}, {13086, 50899715}, {13087, 67677699},
    +	{13088, 84455939}, {13089, 67680003}, {13090, 50903811}, {13091, 50904579},
    +	{13092, 50905347}, {13093, 34128899}, {13094, 34129411}, {13095, 34118147},
    +	{13096, 34129923}, {13097, 50907651}, {13098, 50908419}, {13099, 84463619},
    +	{13100, 50910467}, {13101, 67688451}, {13102, 84466691}, {13103, 50913539},
    +	{13104, 34137091}, {13105, 34137603}, {13106, 84469763}, {13107, 67693827},
    +	{13108, 84472067}, {13109, 50918915}, {13110, 84474115}, {13111, 34143747},
    +	{13112, 50921475}, {13113, 50922243}, {13114, 50923011}, {13115, 50923779},
    +	{13116, 50924547}, {13117, 67702531}, {13118, 50926339}, {13119, 34149891},
    +	{13120, 50927619}, {13121, 50928387}, {13122, 50929155}, {13123, 67707139},
    +	{13124, 50930947}, {13125, 50931715}, {13126, 50932483}, {13127, 84487683},
    +	{13128, 67711747}, {13129, 34158339}, {13130, 84490499}, {13131, 34160131},
    +	{13132, 67715075}, {13133, 67669507}, {13134, 50938883}, {13135, 50939651},
    +	{13136, 50940419}, {13137, 67718403}, {13138, 34164995}, {13139, 50942723},
    +	{13140, 67720707}, {13141, 34167299}, {13142, 84499459}, {13143, 50893827},
    +	{13144, 34169091}, {13145, 34169603}, {13146, 34170115}, {13147, 34170627},
    +	{13148, 34171139}, {13149, 34171651}, {13150, 34172163}, {13151, 34172675},
    +	{13152, 34173187}, {13153, 34173699}, {13154, 50951427}, {13155, 50952195},
    +	{13156, 50952963}, {13157, 50953731}, {13158, 50954499}, {13159, 50955267},
    +	{13160, 50956035}, {13161, 50956803}, {13162, 50957571}, {13163, 50958339},
    +	{13164, 50959107}, {13165, 50959875}, {13166, 50960643}, {13167, 50961411},
    +	{13168, 50962179}, {13169, 50962947}, {13170, 34186499}, {13171, 34187011},
    +	{13172, 50964739}, {13173, 34188291}, {13174, 34188803}, {13175, 34189315},
    +	{13176, 50967043}, {13177, 50967811}, {13178, 34191363}, {13179, 34191875},
    +	{13180, 34192387}, {13181, 34192899}, {13182, 34193411}, {13183, 67748355},
    +	{13184, 34185987}, {13185, 34194947}, {13186, 34195459}, {13187, 34195971},
    +	{13188, 34196483}, {13189, 34196995}, {13190, 34197507}, {13191, 34198019},
    +	{13192, 50975747}, {13193, 67753731}, {13194, 34200323}, {13195, 34200835},
    +	{13196, 34201347}, {13197, 34201859}, {13198, 34202371}, {13199, 34202883},
    +	{13200, 34203395}, {13201, 50981123}, {13202, 50981891}, {13203, 50980355},
    +	{13204, 50982659}, {13205, 34206211}, {13206, 34206723}, {13207, 34207235},
    +	{13208, 33556995}, {13209, 34207747}, {13210, 34208259}, {13211, 34208771},
    +	{13212, 34209283}, {13213, 34209795}, {13214, 34210307}, {13215, 50988035},
    +	{13216, 50988803}, {13217, 34190083}, {13218, 50989571}, {13219, 50990339},
    +	{13220, 50991107}, {13221, 34190851}, {13222, 50991875}, {13223, 50992643},
    +	{13224, 67770627}, {13225, 34185987}, {13226, 50994435}, {13227, 50995203},
    +	{13228, 50995971}, {13229, 50996739}, {13230, 84551939}, {13231, 101330435},
    +	{13232, 34223107}, {13233, 34223619}, {13234, 34224131}, {13235, 34224643},
    +	{13236, 34225155}, {13237, 34225667}, {13238, 34226179}, {13239, 34226691},
    +	{13240, 34227203}, {13241, 34226691}, {13242, 34227715}, {13243, 34228227},
    +	{13244, 34228739}, {13245, 34229251}, {13246, 34229763}, {13247, 34229251},
    +	{13248, 34230275}, {13249, 34230787}, {13250, 2}, {13251, 34231299},
    +	{13252, 33817347}, {13253, 33554947}, {13254, 67786243}, {13255, 2},
    +	{13256, 34232835}, {13257, 34233347}, {13258, 34233859}, {13259, 34185731},
    +	{13260, 34234371}, {13261, 34234883}, {13262, 34210307}, {13263, 34235395},
    +	{13264, 33557251}, {13265, 34235907}, {13266, 51013635}, {13267, 34237187},
    +	{13268, 34197507}, {13269, 51014915}, {13270, 51015683}, {13271, 34239235},
    +	{13272, 2}, {13273, 51016963}, {13274, 34240515}, {13275, 34221315},
    +	{13276, 34241027}, {13277, 34241539}, {13278, 51019267}, {13279, 51020035},
    +	{13280, 34243587}, {13281, 34244099}, {13282, 34244611}, {13283, 34245123},
    +	{13284, 34245635}, {13285, 34246147}, {13286, 34246659}, {13287, 34247171},
    +	{13288, 34247683}, {13289, 51025411}, {13290, 51026179}, {13291, 51026947},
    +	{13292, 51027715}, {13293, 51028483}, {13294, 51029251}, {13295, 51030019},
    +	{13296, 51030787}, {13297, 51031555}, {13298, 51032323}, {13299, 51033091},
    +	{13300, 51033859}, {13301, 51034627}, {13302, 51035395}, {13303, 51036163},
    +	{13304, 51036931}, {13305, 51037699}, {13306, 51038467}, {13307, 51039235},
    +	{13308, 51040003}, {13309, 51040771}, {13310, 51041539}, {13311, 51042307},
    +	{13312, 1}, {42125, 2}, {42128, 1}, {42183, 2},
    +	{42192, 1}, {42540, 2}, {42560, 17488643}, {42561, 1},
    +	{42562, 17488899}, {42563, 1}, {42564, 17489155}, {42565, 1},
    +	{42566, 17489411}, {42567, 1}, {42568, 17489667}, {42569, 1},
    +	{42570, 16936451}, {42571, 1}, {42572, 17489923}, {42573, 1},
    +	{42574, 17490179}, {42575, 1}, {42576, 17490435}, {42577, 1},
    +	{42578, 17490691}, {42579, 1}, {42580, 17490947}, {42581, 1},
    +	{42582, 17491203}, {42583, 1}, {42584, 17491459}, {42585, 1},
    +	{42586, 17491715}, {42587, 1}, {42588, 17491971}, {42589, 1},
    +	{42590, 17492227}, {42591, 1}, {42592, 17492483}, {42593, 1},
    +	{42594, 17492739}, {42595, 1}, {42596, 17492995}, {42597, 1},
    +	{42598, 17493251}, {42599, 1}, {42600, 17493507}, {42601, 1},
    +	{42602, 17493763}, {42603, 1}, {42604, 17494019}, {42605, 1},
    +	{42624, 17494275}, {42625, 1}, {42626, 17494531}, {42627, 1},
    +	{42628, 17494787}, {42629, 1}, {42630, 17495043}, {42631, 1},
    +	{42632, 17495299}, {42633, 1}, {42634, 17495555}, {42635, 1},
    +	{42636, 17495811}, {42637, 1}, {42638, 17496067}, {42639, 1},
    +	{42640, 17496323}, {42641, 1}, {42642, 17496579}, {42643, 1},
    +	{42644, 17496835}, {42645, 1}, {42646, 17497091}, {42647, 1},
    +	{42648, 17497347}, {42649, 1}, {42650, 17497603}, {42651, 1},
    +	{42652, 16873219}, {42653, 16873731}, {42654, 1}, {42744, 2},
    +	{42752, 1}, {42786, 17497859}, {42787, 1}, {42788, 17498115},
    +	{42789, 1}, {42790, 17498371}, {42791, 1}, {42792, 17498627},
    +	{42793, 1}, {42794, 17498883}, {42795, 1}, {42796, 17499139},
    +	{42797, 1}, {42798, 17499395}, {42799, 1}, {42802, 17499651},
    +	{42803, 1}, {42804, 17499907}, {42805, 1}, {42806, 17500163},
    +	{42807, 1}, {42808, 17500419}, {42809, 1}, {42810, 17500675},
    +	{42811, 1}, {42812, 17500931}, {42813, 1}, {42814, 17501187},
    +	{42815, 1}, {42816, 17501443}, {42817, 1}, {42818, 17501699},
    +	{42819, 1}, {42820, 17501955}, {42821, 1}, {42822, 17502211},
    +	{42823, 1}, {42824, 17502467}, {42825, 1}, {42826, 17502723},
    +	{42827, 1}, {42828, 17502979}, {42829, 1}, {42830, 17503235},
    +	{42831, 1}, {42832, 17503491}, {42833, 1}, {42834, 17503747},
    +	{42835, 1}, {42836, 17504003}, {42837, 1}, {42838, 17504259},
    +	{42839, 1}, {42840, 17504515}, {42841, 1}, {42842, 17504771},
    +	{42843, 1}, {42844, 17505027}, {42845, 1}, {42846, 17505283},
    +	{42847, 1}, {42848, 17505539}, {42849, 1}, {42850, 17505795},
    +	{42851, 1}, {42852, 17506051}, {42853, 1}, {42854, 17506307},
    +	{42855, 1}, {42856, 17506563}, {42857, 1}, {42858, 17506819},
    +	{42859, 1}, {42860, 17507075}, {42861, 1}, {42862, 17507331},
    +	{42863, 1}, {42864, 17507331}, {42865, 1}, {42873, 17507587},
    +	{42874, 1}, {42875, 17507843}, {42876, 1}, {42877, 17508099},
    +	{42878, 17508355}, {42879, 1}, {42880, 17508611}, {42881, 1},
    +	{42882, 17508867}, {42883, 1}, {42884, 17509123}, {42885, 1},
    +	{42886, 17509379}, {42887, 1}, {42891, 17509635}, {42892, 1},
    +	{42893, 16951299}, {42894, 1}, {42896, 17509891}, {42897, 1},
    +	{42898, 17510147}, {42899, 1}, {42902, 17510403}, {42903, 1},
    +	{42904, 17510659}, {42905, 1}, {42906, 17510915}, {42907, 1},
    +	{42908, 17511171}, {42909, 1}, {42910, 17511427}, {42911, 1},
    +	{42912, 17511683}, {42913, 1}, {42914, 17511939}, {42915, 1},
    +	{42916, 17512195}, {42917, 1}, {42918, 17512451}, {42919, 1},
    +	{42920, 17512707}, {42921, 1}, {42922, 16841475}, {42923, 16948995},
    +	{42924, 16951043}, {42925, 17512963}, {42926, 16951555}, {42927, 1},
    +	{42928, 17513219}, {42929, 17513475}, {42930, 16952067}, {42931, 17513731},
    +	{42932, 17513987}, {42933, 1}, {42934, 17514243}, {42935, 1},
    +	{42936, 17514499}, {42937, 1}, {42938, 17514755}, {42939, 1},
    +	{42940, 17515011}, {42941, 1}, {42942, 17515267}, {42943, 1},
    +	{42944, 17515523}, {42945, 1}, {42946, 17515779}, {42947, 1},
    +	{42948, 17516035}, {42949, 16954371}, {42950, 17516291}, {42951, 17516547},
    +	{42952, 1}, {42953, 17516803}, {42954, 1}, {42955, 2},
    +	{42960, 17517059}, {42961, 1}, {42962, 2}, {42963, 1},
    +	{42964, 2}, {42965, 1}, {42966, 17517315}, {42967, 1},
    +	{42968, 17517571}, {42969, 1}, {42970, 2}, {42994, 16777731},
    +	{42995, 16778499}, {42996, 16781315}, {42997, 17517827}, {42998, 1},
    +	{43000, 16802051}, {43001, 16808195}, {43002, 1}, {43053, 2},
    +	{43056, 1}, {43066, 2}, {43072, 1}, {43128, 2},
    +	{43136, 1}, {43206, 2}, {43214, 1}, {43226, 2},
    +	{43232, 1}, {43348, 2}, {43359, 1}, {43389, 2},
    +	{43392, 1}, {43470, 2}, {43471, 1}, {43482, 2},
    +	{43486, 1}, {43519, 2}, {43520, 1}, {43575, 2},
    +	{43584, 1}, {43598, 2}, {43600, 1}, {43610, 2},
    +	{43612, 1}, {43715, 2}, {43739, 1}, {43767, 2},
    +	{43777, 1}, {43783, 2}, {43785, 1}, {43791, 2},
    +	{43793, 1}, {43799, 2}, {43808, 1}, {43815, 2},
    +	{43816, 1}, {43823, 2}, {43824, 1}, {43868, 17498371},
    +	{43869, 17518083}, {43870, 17124867}, {43871, 17518339}, {43872, 1},
    +	{43881, 17518595}, {43882, 1}, {43884, 2}, {43888, 17518851},
    +	{43889, 17519107}, {43890, 17519363}, {43891, 17519619}, {43892, 17519875},
    +	{43893, 17520131}, {43894, 17520387}, {43895, 17520643}, {43896, 17520899},
    +	{43897, 17521155}, {43898, 17521411}, {43899, 17521667}, {43900, 17521923},
    +	{43901, 17522179}, {43902, 17522435}, {43903, 17522691}, {43904, 17522947},
    +	{43905, 17523203}, {43906, 17523459}, {43907, 17523715}, {43908, 17523971},
    +	{43909, 17524227}, {43910, 17524483}, {43911, 17524739}, {43912, 17524995},
    +	{43913, 17525251}, {43914, 17525507}, {43915, 17525763}, {43916, 17526019},
    +	{43917, 17526275}, {43918, 17526531}, {43919, 17526787}, {43920, 17527043},
    +	{43921, 17527299}, {43922, 17527555}, {43923, 17527811}, {43924, 17528067},
    +	{43925, 17528323}, {43926, 17528579}, {43927, 17528835}, {43928, 17529091},
    +	{43929, 17529347}, {43930, 17529603}, {43931, 17529859}, {43932, 17530115},
    +	{43933, 17530371}, {43934, 17530627}, {43935, 17530883}, {43936, 17531139},
    +	{43937, 17531395}, {43938, 17531651}, {43939, 17531907}, {43940, 17532163},
    +	{43941, 17532419}, {43942, 17532675}, {43943, 17532931}, {43944, 17533187},
    +	{43945, 17533443}, {43946, 17533699}, {43947, 17533955}, {43948, 17534211},
    +	{43949, 17534467}, {43950, 17534723}, {43951, 17534979}, {43952, 17535235},
    +	{43953, 17535491}, {43954, 17535747}, {43955, 17536003}, {43956, 17536259},
    +	{43957, 17536515}, {43958, 17536771}, {43959, 17537027}, {43960, 17537283},
    +	{43961, 17537539}, {43962, 17537795}, {43963, 17538051}, {43964, 17538307},
    +	{43965, 17538563}, {43966, 17538819}, {43967, 17539075}, {43968, 1},
    +	{44014, 2}, {44016, 1}, {44026, 2}, {44032, 1},
    +	{55204, 2}, {55216, 1}, {55239, 2}, {55243, 1},
    +	{55292, 2}, {63744, 17539331}, {63745, 17539587}, {63746, 17182211},
    +	{63747, 17539843}, {63748, 17540099}, {63749, 17540355}, {63750, 17540611},
    +	{63751, 17196035}, {63753, 17540867}, {63754, 17184259}, {63755, 17541123},
    +	{63756, 17541379}, {63757, 17541635}, {63758, 17541891}, {63759, 17542147},
    +	{63760, 17542403}, {63761, 17542659}, {63762, 17542915}, {63763, 17543171},
    +	{63764, 17543427}, {63765, 17543683}, {63766, 17543939}, {63767, 17544195},
    +	{63768, 17544451}, {63769, 17544707}, {63770, 17544963}, {63771, 17545219},
    +	{63772, 17545475}, {63773, 17545731}, {63774, 17545987}, {63775, 17546243},
    +	{63776, 17546499}, {63777, 17546755}, {63778, 17547011}, {63779, 17547267},
    +	{63780, 17547523}, {63781, 17547779}, {63782, 17548035}, {63783, 17548291},
    +	{63784, 17548547}, {63785, 17548803}, {63786, 17549059}, {63787, 17549315},
    +	{63788, 17549571}, {63789, 17549827}, {63790, 17550083}, {63791, 17550339},
    +	{63792, 17550595}, {63793, 17550851}, {63794, 17551107}, {63795, 17551363},
    +	{63796, 17173507}, {63797, 17551619}, {63798, 17551875}, {63799, 17552131},
    +	{63800, 17552387}, {63801, 17552643}, {63802, 17552899}, {63803, 17553155},
    +	{63804, 17553411}, {63805, 17553667}, {63806, 17553923}, {63807, 17554179},
    +	{63808, 17192195}, {63809, 17554435}, {63810, 17554691}, {63811, 17554947},
    +	{63812, 17555203}, {63813, 17555459}, {63814, 17555715}, {63815, 17555971},
    +	{63816, 17556227}, {63817, 17556483}, {63818, 17556739}, {63819, 17556995},
    +	{63820, 17557251}, {63821, 17557507}, {63822, 17557763}, {63823, 17558019},
    +	{63824, 17558275}, {63825, 17558531}, {63826, 17558787}, {63827, 17559043},
    +	{63828, 17559299}, {63829, 17559555}, {63830, 17559811}, {63831, 17560067},
    +	{63832, 17560323}, {63833, 17560579}, {63834, 17560835}, {63835, 17561091},
    +	{63836, 17543427}, {63837, 17561347}, {63838, 17561603}, {63839, 17561859},
    +	{63840, 17562115}, {63841, 17562371}, {63842, 17562627}, {63843, 17562883},
    +	{63844, 17563139}, {63845, 17563395}, {63846, 17563651}, {63847, 17563907},
    +	{63848, 17564163}, {63849, 17564419}, {63850, 17564675}, {63851, 17564931},
    +	{63852, 17565187}, {63853, 17565443}, {63854, 17565699}, {63855, 17565955},
    +	{63856, 17566211}, {63857, 17182723}, {63858, 17566467}, {63859, 17566723},
    +	{63860, 17566979}, {63861, 17567235}, {63862, 17567491}, {63863, 17567747},
    +	{63864, 17568003}, {63865, 17568259}, {63866, 17568515}, {63867, 17568771},
    +	{63868, 17569027}, {63869, 17569283}, {63870, 17569539}, {63871, 17569795},
    +	{63872, 17570051}, {63873, 17151235}, {63874, 17570307}, {63875, 17570563},
    +	{63876, 17570819}, {63877, 17571075}, {63878, 17571331}, {63879, 17571587},
    +	{63880, 17571843}, {63881, 17572099}, {63882, 17146371}, {63883, 17572355},
    +	{63884, 17572611}, {63885, 17572867}, {63886, 17573123}, {63887, 17573379},
    +	{63888, 17573635}, {63889, 17573891}, {63890, 17574147}, {63891, 17574403},
    +	{63892, 17574659}, {63893, 17574915}, {63894, 17575171}, {63895, 17575427},
    +	{63896, 17575683}, {63897, 17575939}, {63898, 17576195}, {63899, 17576451},
    +	{63900, 17576707}, {63901, 17576963}, {63902, 17577219}, {63903, 17577475},
    +	{63904, 17577731}, {63905, 17565955}, {63906, 17577987}, {63907, 17578243},
    +	{63908, 17578499}, {63909, 17578755}, {63910, 17579011}, {63911, 17579267},
    +	{63912, 17317123}, {63913, 17579523}, {63914, 17561859}, {63915, 17579779},
    +	{63916, 17580035}, {63917, 17580291}, {63918, 17580547}, {63919, 17580803},
    +	{63920, 17581059}, {63921, 17581315}, {63922, 17581571}, {63923, 17581827},
    +	{63924, 17582083}, {63925, 17582339}, {63926, 17582595}, {63927, 17582851},
    +	{63928, 17583107}, {63929, 17583363}, {63930, 17583619}, {63931, 17583875},
    +	{63932, 17584131}, {63933, 17584387}, {63934, 17584643}, {63935, 17543427},
    +	{63936, 17584899}, {63937, 17585155}, {63938, 17585411}, {63939, 17585667},
    +	{63940, 17195779}, {63941, 17585923}, {63942, 17586179}, {63943, 17586435},
    +	{63944, 17586691}, {63945, 17586947}, {63946, 17587203}, {63947, 17587459},
    +	{63948, 17587715}, {63949, 17587971}, {63950, 17588227}, {63951, 17588483},
    +	{63952, 17588739}, {63953, 17254403}, {63954, 17588995}, {63955, 17589251},
    +	{63956, 17589507}, {63957, 17589763}, {63958, 17590019}, {63959, 17590275},
    +	{63960, 17590531}, {63961, 17590787}, {63962, 17591043}, {63963, 17562371},
    +	{63964, 17591299}, {63965, 17591555}, {63966, 17591811}, {63967, 17592067},
    +	{63968, 17592323}, {63969, 17592579}, {63970, 17592835}, {63971, 17593091},
    +	{63972, 17593347}, {63973, 17593603}, {63974, 17593859}, {63975, 17594115},
    +	{63976, 17594371}, {63977, 17184003}, {63978, 17594627}, {63979, 17594883},
    +	{63980, 17595139}, {63981, 17595395}, {63982, 17595651}, {63983, 17595907},
    +	{63984, 17596163}, {63985, 17596419}, {63986, 17596675}, {63987, 17596931},
    +	{63988, 17597187}, {63989, 17597443}, {63990, 17597699}, {63991, 17171459},
    +	{63992, 17597955}, {63993, 17598211}, {63994, 17598467}, {63995, 17598723},
    +	{63996, 17598979}, {63997, 17599235}, {63998, 17599491}, {63999, 17599747},
    +	{64000, 17600003}, {64001, 17600259}, {64002, 17600515}, {64003, 17600771},
    +	{64004, 17601027}, {64005, 17601283}, {64006, 17601539}, {64007, 17601795},
    +	{64008, 17178371}, {64009, 17602051}, {64010, 17179139}, {64011, 17602307},
    +	{64012, 17602563}, {64013, 17602819}, {64014, 1}, {64016, 17603075},
    +	{64017, 1}, {64018, 17603331}, {64019, 1}, {64021, 17603587},
    +	{64022, 17603843}, {64023, 17604099}, {64024, 17604355}, {64025, 17604611},
    +	{64026, 17604867}, {64027, 17605123}, {64028, 17605379}, {64029, 17605635},
    +	{64030, 17173251}, {64031, 1}, {64032, 17605891}, {64033, 1},
    +	{64034, 17606147}, {64035, 1}, {64037, 17606403}, {64038, 17606659},
    +	{64039, 1}, {64042, 17606915}, {64043, 17607171}, {64044, 17607427},
    +	{64045, 17607683}, {64046, 17607939}, {64047, 17608195}, {64048, 17608451},
    +	{64049, 17608707}, {64050, 17608963}, {64051, 17609219}, {64052, 17609475},
    +	{64053, 17609731}, {64054, 17609987}, {64055, 17610243}, {64056, 17610499},
    +	{64057, 17610755}, {64058, 17611011}, {64059, 17611267}, {64060, 17153027},
    +	{64061, 17611523}, {64062, 17611779}, {64063, 17612035}, {64064, 17612291},
    +	{64065, 17612547}, {64066, 17612803}, {64067, 17613059}, {64068, 17613315},
    +	{64069, 17613571}, {64070, 17613827}, {64071, 17614083}, {64072, 17614339},
    +	{64073, 17614595}, {64074, 17614851}, {64075, 17615107}, {64076, 17265155},
    +	{64077, 17615363}, {64078, 17615619}, {64079, 17615875}, {64080, 17616131},
    +	{64081, 17268227}, {64082, 17616387}, {64083, 17616643}, {64084, 17616899},
    +	{64085, 17617155}, {64086, 17617411}, {64087, 17575171}, {64088, 17617667},
    +	{64089, 17617923}, {64090, 17618179}, {64091, 17618435}, {64092, 17618691},
    +	{64093, 17618947}, {64095, 17619203}, {64096, 17619459}, {64097, 17619715},
    +	{64098, 17619971}, {64099, 17620227}, {64100, 17620483}, {64101, 17620739},
    +	{64102, 17620995}, {64103, 17606403}, {64104, 17621251}, {64105, 17621507},
    +	{64106, 17621763}, {64107, 17622019}, {64108, 17622275}, {64109, 17622531},
    +	{64110, 2}, {64112, 17622787}, {64113, 17623043}, {64114, 17623299},
    +	{64115, 17623555}, {64116, 17623811}, {64117, 17624067}, {64118, 17624323},
    +	{64119, 17624579}, {64120, 17609987}, {64121, 17624835}, {64122, 17625091},
    +	{64123, 17625347}, {64124, 17603075}, {64125, 17625603}, {64126, 17625859},
    +	{64127, 17626115}, {64128, 17626371}, {64129, 17626627}, {64130, 17626883},
    +	{64131, 17627139}, {64132, 17627395}, {64133, 17627651}, {64134, 17627907},
    +	{64135, 17628163}, {64136, 17628419}, {64137, 17612035}, {64138, 17628675},
    +	{64139, 17612291}, {64140, 17628931}, {64141, 17629187}, {64142, 17629443},
    +	{64143, 17629699}, {64144, 17629955}, {64145, 17603331}, {64146, 17548803},
    +	{64147, 17630211}, {64148, 17630467}, {64149, 17161475}, {64150, 17566211},
    +	{64151, 17587203}, {64152, 17630723}, {64153, 17630979}, {64154, 17614083},
    +	{64155, 17631235}, {64156, 17614339}, {64157, 17631491}, {64158, 17631747},
    +	{64159, 17632003}, {64160, 17603843}, {64161, 17632259}, {64162, 17632515},
    +	{64163, 17632771}, {64164, 17633027}, {64165, 17633283}, {64166, 17604099},
    +	{64167, 17633539}, {64168, 17633795}, {64169, 17634051}, {64170, 17634307},
    +	{64171, 17634563}, {64172, 17634819}, {64173, 17617411}, {64174, 17635075},
    +	{64175, 17635331}, {64176, 17575171}, {64177, 17635587}, {64178, 17618435},
    +	{64179, 17635843}, {64180, 17636099}, {64181, 17636355}, {64182, 17636611},
    +	{64183, 17636867}, {64184, 17619715}, {64185, 17637123}, {64186, 17606147},
    +	{64187, 17637379}, {64188, 17619971}, {64189, 17561347}, {64190, 17637635},
    +	{64191, 17620227}, {64192, 17637891}, {64193, 17620739}, {64194, 17638147},
    +	{64195, 17638403}, {64196, 17638659}, {64197, 17638915}, {64198, 17639171},
    +	{64199, 17621251}, {64200, 17605379}, {64201, 17639427}, {64202, 17621507},
    +	{64203, 17639683}, {64204, 17621763}, {64205, 17639939}, {64206, 17196035},
    +	{64207, 17640195}, {64208, 17640451}, {64209, 17640707}, {64210, 17640963},
    +	{64211, 17641219}, {64212, 17641475}, {64213, 17641731}, {64214, 17641987},
    +	{64215, 17642243}, {64216, 17642499}, {64217, 17642755}, {64218, 2},
    +	{64256, 34420227}, {64257, 34420739}, {64258, 34421251}, {64259, 51197699},
    +	{64260, 51198979}, {64261, 33559043}, {64263, 2}, {64275, 34422531},
    +	{64276, 34423043}, {64277, 34423555}, {64278, 34424067}, {64279, 34424579},
    +	{64280, 2}, {64285, 34425091}, {64286, 1}, {64287, 34425603},
    +	{64288, 17648899}, {64289, 17044227}, {64290, 17044995}, {64291, 17649155},
    +	{64292, 17649411}, {64293, 17649667}, {64294, 17649923}, {64295, 17650179},
    +	{64296, 17650435}, {64297, 17037059}, {64298, 34427907}, {64299, 34428419},
    +	{64300, 51206147}, {64301, 51206915}, {64302, 34430467}, {64303, 34430979},
    +	{64304, 34431491}, {64305, 34432003}, {64306, 34432515}, {64307, 34433027},
    +	{64308, 34433539}, {64309, 34434051}, {64310, 34434563}, {64311, 2},
    +	{64312, 34435075}, {64313, 34435587}, {64314, 34436099}, {64315, 34436611},
    +	{64316, 34437123}, {64317, 2}, {64318, 34437635}, {64319, 2},
    +	{64320, 34438147}, {64321, 34438659}, {64322, 2}, {64323, 34439171},
    +	{64324, 34439683}, {64325, 2}, {64326, 34440195}, {64327, 34440707},
    +	{64328, 34441219}, {64329, 34428931}, {64330, 34441731}, {64331, 34442243},
    +	{64332, 34442755}, {64333, 34443267}, {64334, 34443779}, {64335, 34444291},
    +	{64336, 17667587}, {64338, 17667843}, {64342, 17668099}, {64346, 17668355},
    +	{64350, 17668611}, {64354, 17668867}, {64358, 17669123}, {64362, 17669379},
    +	{64366, 17669635}, {64370, 17669891}, {64374, 17670147}, {64378, 17670403},
    +	{64382, 17670659}, {64386, 17670915}, {64388, 17671171}, {64390, 17671427},
    +	{64392, 17671683}, {64394, 17671939}, {64396, 17672195}, {64398, 17672451},
    +	{64402, 17672707}, {64406, 17672963}, {64410, 17673219}, {64414, 17673475},
    +	{64416, 17673731}, {64420, 17673987}, {64422, 17674243}, {64426, 17674499},
    +	{64430, 17674755}, {64432, 17675011}, {64434, 1}, {64451, 2},
    +	{64467, 17675267}, {64471, 16911363}, {64473, 17675523}, {64475, 17675779},
    +	{64477, 33688579}, {64478, 17676035}, {64480, 17676291}, {64482, 17676547},
    +	{64484, 17676803}, {64488, 17677059}, {64490, 34454531}, {64492, 34455043},
    +	{64494, 34455555}, {64496, 34456067}, {64498, 34456579}, {64500, 34457091},
    +	{64502, 34457603}, {64505, 34458115}, {64508, 17681411}, {64512, 34458883},
    +	{64513, 34459395}, {64514, 34459907}, {64515, 34458115}, {64516, 34460419},
    +	{64517, 34460931}, {64518, 34461443}, {64519, 34461955}, {64520, 34462467},
    +	{64521, 34462979}, {64522, 34463491}, {64523, 34464003}, {64524, 34464515},
    +	{64525, 34465027}, {64526, 34465539}, {64527, 34466051}, {64528, 34466563},
    +	{64529, 34467075}, {64530, 34467587}, {64531, 34468099}, {64532, 34468611},
    +	{64533, 34469123}, {64534, 34469635}, {64535, 34469379}, {64536, 34470147},
    +	{64537, 34470659}, {64538, 34471171}, {64539, 34471683}, {64540, 34472195},
    +	{64541, 34472707}, {64542, 34473219}, {64543, 34473731}, {64544, 34474243},
    +	{64545, 34474755}, {64546, 34475267}, {64547, 34475779}, {64548, 34476291},
    +	{64549, 34476803}, {64550, 34477315}, {64551, 34477827}, {64552, 34478339},
    +	{64553, 34478851}, {64554, 34479363}, {64555, 34479875}, {64556, 34480387},
    +	{64557, 34480899}, {64558, 34481411}, {64559, 34481923}, {64560, 34482435},
    +	{64561, 34482947}, {64562, 34483459}, {64563, 34483971}, {64564, 34484483},
    +	{64565, 34484995}, {64566, 34485507}, {64567, 34486019}, {64568, 34486531},
    +	{64569, 34487043}, {64570, 34487555}, {64571, 34488067}, {64572, 34488579},
    +	{64573, 34489091}, {64574, 34489603}, {64575, 34490115}, {64576, 34490627},
    +	{64577, 34491139}, {64578, 34491651}, {64579, 34492163}, {64580, 34492675},
    +	{64581, 34493187}, {64582, 34469891}, {64583, 34470403}, {64584, 34493699},
    +	{64585, 34494211}, {64586, 34494723}, {64587, 34495235}, {64588, 34495747},
    +	{64589, 34496259}, {64590, 34496771}, {64591, 34497283}, {64592, 34497795},
    +	{64593, 34498307}, {64594, 34498819}, {64595, 34499331}, {64596, 34499843},
    +	{64597, 34468867}, {64598, 34500355}, {64599, 34500867}, {64600, 34492931},
    +	{64601, 34501379}, {64602, 34500099}, {64603, 34501891}, {64604, 34502403},
    +	{64605, 34502915}, {64606, 51280643}, {64607, 51281411}, {64608, 51282179},
    +	{64609, 51282947}, {64610, 51283715}, {64611, 51284483}, {64612, 34508035},
    +	{64613, 34508547}, {64614, 34459907}, {64615, 34509059}, {64616, 34458115},
    +	{64617, 34460419}, {64618, 34509571}, {64619, 34510083}, {64620, 34462467},
    +	{64621, 34510595}, {64622, 34462979}, {64623, 34463491}, {64624, 34511107},
    +	{64625, 34511619}, {64626, 34465539}, {64627, 34512131}, {64628, 34466051},
    +	{64629, 34466563}, {64630, 34512643}, {64631, 34513155}, {64632, 34467587},
    +	{64633, 34513667}, {64634, 34468099}, {64635, 34468611}, {64636, 34482947},
    +	{64637, 34483459}, {64638, 34484995}, {64639, 34485507}, {64640, 34486019},
    +	{64641, 34488067}, {64642, 34488579}, {64643, 34489091}, {64644, 34489603},
    +	{64645, 34491651}, {64646, 34492163}, {64647, 34492675}, {64648, 34514179},
    +	{64649, 34493699}, {64650, 34514691}, {64651, 34515203}, {64652, 34496771},
    +	{64653, 34515715}, {64654, 34497283}, {64655, 34497795}, {64656, 34502915},
    +	{64657, 34516227}, {64658, 34516739}, {64659, 34492931}, {64660, 34494979},
    +	{64661, 34501379}, {64662, 34500099}, {64663, 34458883}, {64664, 34459395},
    +	{64665, 34517251}, {64666, 34459907}, {64667, 34517763}, {64668, 34460931},
    +	{64669, 34461443}, {64670, 34461955}, {64671, 34462467}, {64672, 34518275},
    +	{64673, 34464003}, {64674, 34464515}, {64675, 34465027}, {64676, 34465539},
    +	{64677, 34518787}, {64678, 34467587}, {64679, 34469123}, {64680, 34469635},
    +	{64681, 34469379}, {64682, 34470147}, {64683, 34470659}, {64684, 34471683},
    +	{64685, 34472195}, {64686, 34472707}, {64687, 34473219}, {64688, 34473731},
    +	{64689, 34474243}, {64690, 34519299}, {64691, 34474755}, {64692, 34475267},
    +	{64693, 34475779}, {64694, 34476291}, {64695, 34476803}, {64696, 34477315},
    +	{64697, 34478339}, {64698, 34478851}, {64699, 34479363}, {64700, 34479875},
    +	{64701, 34480387}, {64702, 34480899}, {64703, 34481411}, {64704, 34481923},
    +	{64705, 34482435}, {64706, 34483971}, {64707, 34484483}, {64708, 34486531},
    +	{64709, 34487043}, {64710, 34487555}, {64711, 34488067}, {64712, 34488579},
    +	{64713, 34490115}, {64714, 34490627}, {64715, 34491139}, {64716, 34491651},
    +	{64717, 34519811}, {64718, 34493187}, {64719, 34469891}, {64720, 34470403},
    +	{64721, 34493699}, {64722, 34495235}, {64723, 34495747}, {64724, 34496259},
    +	{64725, 34496771}, {64726, 34520323}, {64727, 34498307}, {64728, 34498819},
    +	{64729, 34520835}, {64730, 34468867}, {64731, 34500355}, {64732, 34500867},
    +	{64733, 34492931}, {64734, 34498051}, {64735, 34459907}, {64736, 34517763},
    +	{64737, 34462467}, {64738, 34518275}, {64739, 34465539}, {64740, 34518787},
    +	{64741, 34467587}, {64742, 34521347}, {64743, 34473731}, {64744, 34521859},
    +	{64745, 34522371}, {64746, 34522883}, {64747, 34488067}, {64748, 34488579},
    +	{64749, 34491651}, {64750, 34496771}, {64751, 34520323}, {64752, 34492931},
    +	{64753, 34498051}, {64754, 51300611}, {64755, 51301379}, {64756, 51302147},
    +	{64757, 34525699}, {64758, 34526211}, {64759, 34526723}, {64760, 34527235},
    +	{64761, 34527747}, {64762, 34528259}, {64763, 34528771}, {64764, 34529283},
    +	{64765, 34529795}, {64766, 34530307}, {64767, 34530819}, {64768, 34500611},
    +	{64769, 34531331}, {64770, 34531843}, {64771, 34532355}, {64772, 34501123},
    +	{64773, 34532867}, {64774, 34533379}, {64775, 34533891}, {64776, 34534403},
    +	{64777, 34534915}, {64778, 34535427}, {64779, 34535939}, {64780, 34522371},
    +	{64781, 34536451}, {64782, 34536963}, {64783, 34537475}, {64784, 34537987},
    +	{64785, 34525699}, {64786, 34526211}, {64787, 34526723}, {64788, 34527235},
    +	{64789, 34527747}, {64790, 34528259}, {64791, 34528771}, {64792, 34529283},
    +	{64793, 34529795}, {64794, 34530307}, {64795, 34530819}, {64796, 34500611},
    +	{64797, 34531331}, {64798, 34531843}, {64799, 34532355}, {64800, 34501123},
    +	{64801, 34532867}, {64802, 34533379}, {64803, 34533891}, {64804, 34534403},
    +	{64805, 34534915}, {64806, 34535427}, {64807, 34535939}, {64808, 34522371},
    +	{64809, 34536451}, {64810, 34536963}, {64811, 34537475}, {64812, 34537987},
    +	{64813, 34534915}, {64814, 34535427}, {64815, 34535939}, {64816, 34522371},
    +	{64817, 34521859}, {64818, 34522883}, {64819, 34477827}, {64820, 34472195},
    +	{64821, 34472707}, {64822, 34473219}, {64823, 34534915}, {64824, 34535427},
    +	{64825, 34535939}, {64826, 34477827}, {64827, 34478339}, {64828, 34538499},
    +	{64830, 1}, {64848, 51316227}, {64849, 51316995}, {64851, 51317763},
    +	{64852, 51318531}, {64853, 51319299}, {64854, 51320067}, {64855, 51320835},
    +	{64856, 51246851}, {64858, 51321603}, {64859, 51322371}, {64860, 51323139},
    +	{64861, 51323907}, {64862, 51324675}, {64863, 51325443}, {64865, 51326211},
    +	{64866, 51326979}, {64868, 51327747}, {64870, 51328515}, {64871, 51329283},
    +	{64873, 51330051}, {64874, 51330819}, {64876, 51331587}, {64878, 51332355},
    +	{64879, 51333123}, {64881, 51333891}, {64883, 51334659}, {64884, 51335427},
    +	{64885, 51336195}, {64886, 51336963}, {64888, 51337731}, {64889, 51338499},
    +	{64890, 51339267}, {64891, 51340035}, {64892, 51340803}, {64894, 51341571},
    +	{64895, 51342339}, {64896, 51343107}, {64897, 51343875}, {64898, 51344643},
    +	{64899, 51345411}, {64901, 51346179}, {64903, 51346947}, {64905, 51347715},
    +	{64906, 51247107}, {64907, 51348483}, {64908, 51349251}, {64909, 51270403},
    +	{64910, 51247619}, {64911, 51350019}, {64912, 2}, {64914, 51350787},
    +	{64915, 51351555}, {64916, 51352323}, {64917, 51353091}, {64918, 51353859},
    +	{64919, 51354627}, {64921, 51355395}, {64922, 51356163}, {64923, 51356931},
    +	{64924, 51357699}, {64926, 51358467}, {64927, 51359235}, {64928, 51360003},
    +	{64929, 51360771}, {64930, 51361539}, {64931, 51362307}, {64932, 51363075},
    +	{64933, 51363843}, {64934, 51364611}, {64935, 51365379}, {64936, 51366147},
    +	{64937, 51366915}, {64938, 51367683}, {64939, 51368451}, {64940, 51369219},
    +	{64941, 51369987}, {64942, 51277571}, {64943, 51370755}, {64944, 51371523},
    +	{64945, 51372291}, {64946, 51373059}, {64947, 51373827}, {64948, 51341571},
    +	{64949, 51343107}, {64950, 51374595}, {64951, 51375363}, {64952, 51376131},
    +	{64953, 51376899}, {64954, 51377667}, {64955, 51378435}, {64956, 51377667},
    +	{64957, 51376131}, {64958, 51379203}, {64959, 51379971}, {64960, 51380739},
    +	{64961, 51381507}, {64962, 51382275}, {64963, 51378435}, {64964, 51336195},
    +	{64965, 51328515}, {64966, 51383043}, {64967, 51383811}, {64968, 2},
    +	{64975, 1}, {64976, 2}, {65008, 51384579}, {65009, 51385347},
    +	{65010, 68163331}, {65011, 68164355}, {65012, 68165379}, {65013, 68166403},
    +	{65014, 68167427}, {65015, 68168451}, {65016, 68169475}, {65017, 51393283},
    +	{65018, 303052291}, {65019, 135284739}, {65020, 68177923}, {65021, 1},
    +	{65024, 0}, {65040, 17847299}, {65041, 17847555}, {65042, 2},
    +	{65043, 17110531}, {65044, 16848643}, {65045, 17032963}, {65046, 17033987},
    +	{65047, 17847811}, {65048, 17848067}, {65049, 2}, {65056, 1},
    +	{65072, 2}, {65073, 17848323}, {65074, 17848579}, {65075, 17848835},
    +	{65077, 17037827}, {65078, 17038083}, {65079, 17849091}, {65080, 17849347},
    +	{65081, 17849603}, {65082, 17849859}, {65083, 17850115}, {65084, 17850371},
    +	{65085, 17850627}, {65086, 17850883}, {65087, 17067267}, {65088, 17067523},
    +	{65089, 17851139}, {65090, 17851395}, {65091, 17851651}, {65092, 17851907},
    +	{65093, 1}, {65095, 17852163}, {65096, 17852419}, {65097, 33810691},
    +	{65101, 17848835}, {65104, 17847299}, {65105, 17847555}, {65106, 2},
    +	{65108, 16848643}, {65109, 17110531}, {65110, 17033987}, {65111, 17032963},
    +	{65112, 17848323}, {65113, 17037827}, {65114, 17038083}, {65115, 17849091},
    +	{65116, 17849347}, {65117, 17849603}, {65118, 17849859}, {65119, 17852675},
    +	{65120, 17852931}, {65121, 17853187}, {65122, 17037059}, {65123, 17853443},
    +	{65124, 17853699}, {65125, 17853955}, {65126, 17037571}, {65127, 2},
    +	{65128, 17854211}, {65129, 17854467}, {65130, 17854723}, {65131, 17854979},
    +	{65132, 2}, {65136, 34632451}, {65137, 34632963}, {65138, 34503427},
    +	{65139, 1}, {65140, 34504195}, {65141, 2}, {65142, 34504963},
    +	{65143, 34523395}, {65144, 34505731}, {65145, 34524163}, {65146, 34506499},
    +	{65147, 34524931}, {65148, 34507267}, {65149, 34633475}, {65150, 34633987},
    +	{65151, 34634499}, {65152, 17857795}, {65153, 17858051}, {65155, 17858307},
    +	{65157, 17858563}, {65159, 17858819}, {65161, 17677315}, {65165, 16910339},
    +	{65167, 17683715}, {65171, 17859075}, {65173, 17686787}, {65177, 17689859},
    +	{65181, 17681923}, {65185, 17682435}, {65189, 17684995}, {65193, 17834499},
    +	{65195, 17724675}, {65197, 17725187}, {65199, 17731587}, {65201, 17694979},
    +	{65205, 17745155}, {65209, 17697027}, {65213, 17698051}, {65217, 17700099},
    +	{65221, 17701123}, {65225, 17701635}, {65229, 17702659}, {65233, 17703683},
    +	{65237, 17706755}, {65241, 17708803}, {65245, 17711107}, {65249, 17682947},
    +	{65253, 17718019}, {65257, 17721091}, {65261, 16910851}, {65263, 17677059},
    +	{65265, 16911875}, {65269, 34636547}, {65271, 34637059}, {65273, 34637571},
    +	{65275, 34622467}, {65277, 2}, {65279, 0}, {65280, 2},
    +	{65281, 17032963}, {65282, 17860867}, {65283, 17852675}, {65284, 17854467},
    +	{65285, 17854723}, {65286, 17852931}, {65287, 17861123}, {65288, 17037827},
    +	{65289, 17038083}, {65290, 17853187}, {65291, 17037059}, {65292, 17847299},
    +	{65293, 17853443}, {65294, 17196547}, {65295, 17038595}, {65296, 17035523},
    +	{65297, 16786947}, {65298, 16785155}, {65299, 16785411}, {65300, 16787715},
    +	{65301, 17035779}, {65302, 17036035}, {65303, 17036291}, {65304, 17036547},
    +	{65305, 17036803}, {65306, 17110531}, {65307, 16848643}, {65308, 17853699},
    +	{65309, 17037571}, {65310, 17853955}, {65311, 17033987}, {65312, 17854979},
    +	{65313, 16777219}, {65314, 16777475}, {65315, 16777731}, {65316, 16777987},
    +	{65317, 16778243}, {65318, 16778499}, {65319, 16778755}, {65320, 16779011},
    +	{65321, 16779267}, {65322, 16779523}, {65323, 16779779}, {65324, 16780035},
    +	{65325, 16780291}, {65326, 16780547}, {65327, 16780803}, {65328, 16781059},
    +	{65329, 16781315}, {65330, 16781571}, {65331, 16781827}, {65332, 16782083},
    +	{65333, 16782339}, {65334, 16782595}, {65335, 16782851}, {65336, 16783107},
    +	{65337, 16783363}, {65338, 16783619}, {65339, 17852163}, {65340, 17854211},
    +	{65341, 17852419}, {65342, 17861379}, {65343, 17848835}, {65344, 17027075},
    +	{65345, 16777219}, {65346, 16777475}, {65347, 16777731}, {65348, 16777987},
    +	{65349, 16778243}, {65350, 16778499}, {65351, 16778755}, {65352, 16779011},
    +	{65353, 16779267}, {65354, 16779523}, {65355, 16779779}, {65356, 16780035},
    +	{65357, 16780291}, {65358, 16780547}, {65359, 16780803}, {65360, 16781059},
    +	{65361, 16781315}, {65362, 16781571}, {65363, 16781827}, {65364, 16782083},
    +	{65365, 16782339}, {65366, 16782595}, {65367, 16782851}, {65368, 16783107},
    +	{65369, 16783363}, {65370, 16783619}, {65371, 17849091}, {65372, 17861635},
    +	{65373, 17849347}, {65374, 17861891}, {65375, 17862147}, {65376, 17862403},
    +	{65377, 17196547}, {65378, 17851139}, {65379, 17851395}, {65380, 17847555},
    +	{65381, 17862659}, {65382, 17316867}, {65383, 17319427}, {65384, 17362435},
    +	{65385, 17862915}, {65386, 17363971}, {65387, 17323523}, {65388, 17863171},
    +	{65389, 17333763}, {65390, 17379587}, {65391, 17329155}, {65392, 17318147},
    +	{65393, 17305603}, {65394, 17305859}, {65395, 17306115}, {65396, 17306371},
    +	{65397, 17306627}, {65398, 17306883}, {65399, 17307139}, {65400, 17307395},
    +	{65401, 17307651}, {65402, 17199107}, {65403, 17307907}, {65404, 17308163},
    +	{65405, 17308419}, {65406, 17308675}, {65407, 17308931}, {65408, 17309187},
    +	{65409, 17309443}, {65410, 17309699}, {65411, 17309955}, {65412, 17199363},
    +	{65413, 17310211}, {65414, 17310467}, {65415, 17310723}, {65416, 17310979},
    +	{65417, 17311235}, {65418, 17311491}, {65419, 17311747}, {65420, 17312003},
    +	{65421, 17312259}, {65422, 17312515}, {65423, 17312771}, {65424, 17313027},
    +	{65425, 17313283}, {65426, 17313539}, {65427, 17313795}, {65428, 17314051},
    +	{65429, 17314307}, {65430, 17314563}, {65431, 17314819}, {65432, 17315075},
    +	{65433, 17315331}, {65434, 17315587}, {65435, 17315843}, {65436, 17316099},
    +	{65437, 17319939}, {65438, 17197827}, {65439, 17198339}, {65440, 2},
    +	{65441, 17199619}, {65442, 17199875}, {65443, 17200131}, {65444, 17200387},
    +	{65445, 17200643}, {65446, 17200899}, {65447, 17201155}, {65448, 17201411},
    +	{65449, 17201667}, {65450, 17201923}, {65451, 17202179}, {65452, 17202435},
    +	{65453, 17202691}, {65454, 17202947}, {65455, 17203203}, {65456, 17203459},
    +	{65457, 17203715}, {65458, 17203971}, {65459, 17204227}, {65460, 17204483},
    +	{65461, 17204739}, {65462, 17204995}, {65463, 17205251}, {65464, 17205507},
    +	{65465, 17205763}, {65466, 17206019}, {65467, 17206275}, {65468, 17206531},
    +	{65469, 17206787}, {65470, 17207043}, {65471, 2}, {65474, 17207299},
    +	{65475, 17207555}, {65476, 17207811}, {65477, 17208067}, {65478, 17208323},
    +	{65479, 17208579}, {65480, 2}, {65482, 17208835}, {65483, 17209091},
    +	{65484, 17209347}, {65485, 17209603}, {65486, 17209859}, {65487, 17210115},
    +	{65488, 2}, {65490, 17210371}, {65491, 17210627}, {65492, 17210883},
    +	{65493, 17211139}, {65494, 17211395}, {65495, 17211651}, {65496, 2},
    +	{65498, 17211907}, {65499, 17212163}, {65500, 17212419}, {65501, 2},
    +	{65504, 17863427}, {65505, 17863683}, {65506, 17863939}, {65507, 33561859},
    +	{65508, 17864195}, {65509, 17864451}, {65510, 17864707}, {65511, 2},
    +	{65512, 17864963}, {65513, 17865219}, {65514, 17865475}, {65515, 17865731},
    +	{65516, 17865987}, {65517, 17866243}, {65518, 17866499}, {65519, 2},
    +	{65536, 1}, {65548, 2}, {65549, 1}, {65575, 2},
    +	{65576, 1}, {65595, 2}, {65596, 1}, {65598, 2},
    +	{65599, 1}, {65614, 2}, {65616, 1}, {65630, 2},
    +	{65664, 1}, {65787, 2}, {65792, 1}, {65795, 2},
    +	{65799, 1}, {65844, 2}, {65847, 1}, {65935, 2},
    +	{65936, 1}, {65949, 2}, {65952, 1}, {65953, 2},
    +	{66000, 1}, {66046, 2}, {66176, 1}, {66205, 2},
    +	{66208, 1}, {66257, 2}, {66272, 1}, {66300, 2},
    +	{66304, 1}, {66340, 2}, {66349, 1}, {66379, 2},
    +	{66384, 1}, {66427, 2}, {66432, 1}, {66462, 2},
    +	{66463, 1}, {66500, 2}, {66504, 1}, {66518, 2},
    +	{66560, 17866755}, {66561, 17867011}, {66562, 17867267}, {66563, 17867523},
    +	{66564, 17867779}, {66565, 17868035}, {66566, 17868291}, {66567, 17868547},
    +	{66568, 17868803}, {66569, 17869059}, {66570, 17869315}, {66571, 17869571},
    +	{66572, 17869827}, {66573, 17870083}, {66574, 17870339}, {66575, 17870595},
    +	{66576, 17870851}, {66577, 17871107}, {66578, 17871363}, {66579, 17871619},
    +	{66580, 17871875}, {66581, 17872131}, {66582, 17872387}, {66583, 17872643},
    +	{66584, 17872899}, {66585, 17873155}, {66586, 17873411}, {66587, 17873667},
    +	{66588, 17873923}, {66589, 17874179}, {66590, 17874435}, {66591, 17874691},
    +	{66592, 17874947}, {66593, 17875203}, {66594, 17875459}, {66595, 17875715},
    +	{66596, 17875971}, {66597, 17876227}, {66598, 17876483}, {66599, 17876739},
    +	{66600, 1}, {66718, 2}, {66720, 1}, {66730, 2},
    +	{66736, 17876995}, {66737, 17877251}, {66738, 17877507}, {66739, 17877763},
    +	{66740, 17878019}, {66741, 17878275}, {66742, 17878531}, {66743, 17878787},
    +	{66744, 17879043}, {66745, 17879299}, {66746, 17879555}, {66747, 17879811},
    +	{66748, 17880067}, {66749, 17880323}, {66750, 17880579}, {66751, 17880835},
    +	{66752, 17881091}, {66753, 17881347}, {66754, 17881603}, {66755, 17881859},
    +	{66756, 17882115}, {66757, 17882371}, {66758, 17882627}, {66759, 17882883},
    +	{66760, 17883139}, {66761, 17883395}, {66762, 17883651}, {66763, 17883907},
    +	{66764, 17884163}, {66765, 17884419}, {66766, 17884675}, {66767, 17884931},
    +	{66768, 17885187}, {66769, 17885443}, {66770, 17885699}, {66771, 17885955},
    +	{66772, 2}, {66776, 1}, {66812, 2}, {66816, 1},
    +	{66856, 2}, {66864, 1}, {66916, 2}, {66927, 1},
    +	{66928, 17886211}, {66929, 17886467}, {66930, 17886723}, {66931, 17886979},
    +	{66932, 17887235}, {66933, 17887491}, {66934, 17887747}, {66935, 17888003},
    +	{66936, 17888259}, {66937, 17888515}, {66938, 17888771}, {66939, 2},
    +	{66940, 17889027}, {66941, 17889283}, {66942, 17889539}, {66943, 17889795},
    +	{66944, 17890051}, {66945, 17890307}, {66946, 17890563}, {66947, 17890819},
    +	{66948, 17891075}, {66949, 17891331}, {66950, 17891587}, {66951, 17891843},
    +	{66952, 17892099}, {66953, 17892355}, {66954, 17892611}, {66955, 2},
    +	{66956, 17892867}, {66957, 17893123}, {66958, 17893379}, {66959, 17893635},
    +	{66960, 17893891}, {66961, 17894147}, {66962, 17894403}, {66963, 2},
    +	{66964, 17894659}, {66965, 17894915}, {66966, 2}, {66967, 1},
    +	{66978, 2}, {66979, 1}, {66994, 2}, {66995, 1},
    +	{67002, 2}, {67003, 1}, {67005, 2}, {67072, 1},
    +	{67383, 2}, {67392, 1}, {67414, 2}, {67424, 1},
    +	{67432, 2}, {67456, 1}, {67457, 17895171}, {67458, 17895427},
    +	{67459, 16791043}, {67460, 17895683}, {67461, 16814083}, {67462, 2},
    +	{67463, 17895939}, {67464, 17896195}, {67465, 17896451}, {67466, 17896707},
    +	{67467, 16815363}, {67468, 16815619}, {67469, 17896963}, {67470, 17897219},
    +	{67471, 17897475}, {67472, 17897731}, {67473, 17897987}, {67474, 17898243},
    +	{67475, 16817155}, {67476, 17898499}, {67477, 16802051}, {67478, 17898755},
    +	{67479, 17899011}, {67480, 17899267}, {67481, 17899523}, {67482, 17899779},
    +	{67483, 17512963}, {67484, 17900035}, {67485, 17900291}, {67486, 17900547},
    +	{67487, 17900803}, {67488, 17901059}, {67489, 17901315}, {67490, 16795395},
    +	{67491, 17901571}, {67492, 17901827}, {67493, 16781315}, {67494, 17902083},
    +	{67495, 17902339}, {67496, 17125379}, {67497, 17902595}, {67498, 16819971},
    +	{67499, 17902851}, {67500, 17903107}, {67501, 17903363}, {67502, 17903619},
    +	{67503, 16820995}, {67504, 17903875}, {67505, 2}, {67506, 17904131},
    +	{67507, 17904387}, {67508, 17904643}, {67509, 17904899}, {67510, 17905155},
    +	{67511, 17905411}, {67512, 17905667}, {67513, 17905923}, {67514, 17906179},
    +	{67515, 2}, {67584, 1}, {67590, 2}, {67592, 1},
    +	{67593, 2}, {67594, 1}, {67638, 2}, {67639, 1},
    +	{67641, 2}, {67644, 1}, {67645, 2}, {67647, 1},
    +	{67670, 2}, {67671, 1}, {67743, 2}, {67751, 1},
    +	{67760, 2}, {67808, 1}, {67827, 2}, {67828, 1},
    +	{67830, 2}, {67835, 1}, {67868, 2}, {67871, 1},
    +	{67898, 2}, {67903, 1}, {67904, 2}, {67968, 1},
    +	{68024, 2}, {68028, 1}, {68048, 2}, {68050, 1},
    +	{68100, 2}, {68101, 1}, {68103, 2}, {68108, 1},
    +	{68116, 2}, {68117, 1}, {68120, 2}, {68121, 1},
    +	{68150, 2}, {68152, 1}, {68155, 2}, {68159, 1},
    +	{68169, 2}, {68176, 1}, {68185, 2}, {68192, 1},
    +	{68256, 2}, {68288, 1}, {68327, 2}, {68331, 1},
    +	{68343, 2}, {68352, 1}, {68406, 2}, {68409, 1},
    +	{68438, 2}, {68440, 1}, {68467, 2}, {68472, 1},
    +	{68498, 2}, {68505, 1}, {68509, 2}, {68521, 1},
    +	{68528, 2}, {68608, 1}, {68681, 2}, {68736, 17906435},
    +	{68737, 17906691}, {68738, 17906947}, {68739, 17907203}, {68740, 17907459},
    +	{68741, 17907715}, {68742, 17907971}, {68743, 17908227}, {68744, 17908483},
    +	{68745, 17908739}, {68746, 17908995}, {68747, 17909251}, {68748, 17909507},
    +	{68749, 17909763}, {68750, 17910019}, {68751, 17910275}, {68752, 17910531},
    +	{68753, 17910787}, {68754, 17911043}, {68755, 17911299}, {68756, 17911555},
    +	{68757, 17911811}, {68758, 17912067}, {68759, 17912323}, {68760, 17912579},
    +	{68761, 17912835}, {68762, 17913091}, {68763, 17913347}, {68764, 17913603},
    +	{68765, 17913859}, {68766, 17914115}, {68767, 17914371}, {68768, 17914627},
    +	{68769, 17914883}, {68770, 17915139}, {68771, 17915395}, {68772, 17915651},
    +	{68773, 17915907}, {68774, 17916163}, {68775, 17916419}, {68776, 17916675},
    +	{68777, 17916931}, {68778, 17917187}, {68779, 17917443}, {68780, 17917699},
    +	{68781, 17917955}, {68782, 17918211}, {68783, 17918467}, {68784, 17918723},
    +	{68785, 17918979}, {68786, 17919235}, {68787, 2}, {68800, 1},
    +	{68851, 2}, {68858, 1}, {68904, 2}, {68912, 1},
    +	{68922, 2}, {69216, 1}, {69247, 2}, {69248, 1},
    +	{69290, 2}, {69291, 1}, {69294, 2}, {69296, 1},
    +	{69298, 2}, {69373, 1}, {69416, 2}, {69424, 1},
    +	{69466, 2}, {69488, 1}, {69514, 2}, {69552, 1},
    +	{69580, 2}, {69600, 1}, {69623, 2}, {69632, 1},
    +	{69710, 2}, {69714, 1}, {69750, 2}, {69759, 1},
    +	{69821, 2}, {69822, 1}, {69827, 2}, {69840, 1},
    +	{69865, 2}, {69872, 1}, {69882, 2}, {69888, 1},
    +	{69941, 2}, {69942, 1}, {69960, 2}, {69968, 1},
    +	{70007, 2}, {70016, 1}, {70112, 2}, {70113, 1},
    +	{70133, 2}, {70144, 1}, {70162, 2}, {70163, 1},
    +	{70210, 2}, {70272, 1}, {70279, 2}, {70280, 1},
    +	{70281, 2}, {70282, 1}, {70286, 2}, {70287, 1},
    +	{70302, 2}, {70303, 1}, {70314, 2}, {70320, 1},
    +	{70379, 2}, {70384, 1}, {70394, 2}, {70400, 1},
    +	{70404, 2}, {70405, 1}, {70413, 2}, {70415, 1},
    +	{70417, 2}, {70419, 1}, {70441, 2}, {70442, 1},
    +	{70449, 2}, {70450, 1}, {70452, 2}, {70453, 1},
    +	{70458, 2}, {70459, 1}, {70469, 2}, {70471, 1},
    +	{70473, 2}, {70475, 1}, {70478, 2}, {70480, 1},
    +	{70481, 2}, {70487, 1}, {70488, 2}, {70493, 1},
    +	{70500, 2}, {70502, 1}, {70509, 2}, {70512, 1},
    +	{70517, 2}, {70656, 1}, {70748, 2}, {70749, 1},
    +	{70754, 2}, {70784, 1}, {70856, 2}, {70864, 1},
    +	{70874, 2}, {71040, 1}, {71094, 2}, {71096, 1},
    +	{71134, 2}, {71168, 1}, {71237, 2}, {71248, 1},
    +	{71258, 2}, {71264, 1}, {71277, 2}, {71296, 1},
    +	{71354, 2}, {71360, 1}, {71370, 2}, {71424, 1},
    +	{71451, 2}, {71453, 1}, {71468, 2}, {71472, 1},
    +	{71495, 2}, {71680, 1}, {71740, 2}, {71840, 17919491},
    +	{71841, 17919747}, {71842, 17920003}, {71843, 17920259}, {71844, 17920515},
    +	{71845, 17920771}, {71846, 17921027}, {71847, 17921283}, {71848, 17921539},
    +	{71849, 17921795}, {71850, 17922051}, {71851, 17922307}, {71852, 17922563},
    +	{71853, 17922819}, {71854, 17923075}, {71855, 17923331}, {71856, 17923587},
    +	{71857, 17923843}, {71858, 17924099}, {71859, 17924355}, {71860, 17924611},
    +	{71861, 17924867}, {71862, 17925123}, {71863, 17925379}, {71864, 17925635},
    +	{71865, 17925891}, {71866, 17926147}, {71867, 17926403}, {71868, 17926659},
    +	{71869, 17926915}, {71870, 17927171}, {71871, 17927427}, {71872, 1},
    +	{71923, 2}, {71935, 1}, {71943, 2}, {71945, 1},
    +	{71946, 2}, {71948, 1}, {71956, 2}, {71957, 1},
    +	{71959, 2}, {71960, 1}, {71990, 2}, {71991, 1},
    +	{71993, 2}, {71995, 1}, {72007, 2}, {72016, 1},
    +	{72026, 2}, {72096, 1}, {72104, 2}, {72106, 1},
    +	{72152, 2}, {72154, 1}, {72165, 2}, {72192, 1},
    +	{72264, 2}, {72272, 1}, {72355, 2}, {72368, 1},
    +	{72441, 2}, {72448, 1}, {72458, 2}, {72704, 1},
    +	{72713, 2}, {72714, 1}, {72759, 2}, {72760, 1},
    +	{72774, 2}, {72784, 1}, {72813, 2}, {72816, 1},
    +	{72848, 2}, {72850, 1}, {72872, 2}, {72873, 1},
    +	{72887, 2}, {72960, 1}, {72967, 2}, {72968, 1},
    +	{72970, 2}, {72971, 1}, {73015, 2}, {73018, 1},
    +	{73019, 2}, {73020, 1}, {73022, 2}, {73023, 1},
    +	{73032, 2}, {73040, 1}, {73050, 2}, {73056, 1},
    +	{73062, 2}, {73063, 1}, {73065, 2}, {73066, 1},
    +	{73103, 2}, {73104, 1}, {73106, 2}, {73107, 1},
    +	{73113, 2}, {73120, 1}, {73130, 2}, {73440, 1},
    +	{73465, 2}, {73472, 1}, {73489, 2}, {73490, 1},
    +	{73531, 2}, {73534, 1}, {73562, 2}, {73648, 1},
    +	{73649, 2}, {73664, 1}, {73714, 2}, {73727, 1},
    +	{74650, 2}, {74752, 1}, {74863, 2}, {74864, 1},
    +	{74869, 2}, {74880, 1}, {75076, 2}, {77712, 1},
    +	{77811, 2}, {77824, 1}, {78896, 2}, {78912, 1},
    +	{78934, 2}, {82944, 1}, {83527, 2}, {92160, 1},
    +	{92729, 2}, {92736, 1}, {92767, 2}, {92768, 1},
    +	{92778, 2}, {92782, 1}, {92863, 2}, {92864, 1},
    +	{92874, 2}, {92880, 1}, {92910, 2}, {92912, 1},
    +	{92918, 2}, {92928, 1}, {92998, 2}, {93008, 1},
    +	{93018, 2}, {93019, 1}, {93026, 2}, {93027, 1},
    +	{93048, 2}, {93053, 1}, {93072, 2}, {93760, 17927683},
    +	{93761, 17927939}, {93762, 17928195}, {93763, 17928451}, {93764, 17928707},
    +	{93765, 17928963}, {93766, 17929219}, {93767, 17929475}, {93768, 17929731},
    +	{93769, 17929987}, {93770, 17930243}, {93771, 17930499}, {93772, 17930755},
    +	{93773, 17931011}, {93774, 17931267}, {93775, 17931523}, {93776, 17931779},
    +	{93777, 17932035}, {93778, 17932291}, {93779, 17932547}, {93780, 17932803},
    +	{93781, 17933059}, {93782, 17933315}, {93783, 17933571}, {93784, 17933827},
    +	{93785, 17934083}, {93786, 17934339}, {93787, 17934595}, {93788, 17934851},
    +	{93789, 17935107}, {93790, 17935363}, {93791, 17935619}, {93792, 1},
    +	{93851, 2}, {93952, 1}, {94027, 2}, {94031, 1},
    +	{94088, 2}, {94095, 1}, {94112, 2}, {94176, 1},
    +	{94181, 2}, {94192, 1}, {94194, 2}, {94208, 1},
    +	{100344, 2}, {100352, 1}, {101590, 2}, {101632, 1},
    +	{101641, 2}, {110576, 1}, {110580, 2}, {110581, 1},
    +	{110588, 2}, {110589, 1}, {110591, 2}, {110592, 1},
    +	{110883, 2}, {110898, 1}, {110899, 2}, {110928, 1},
    +	{110931, 2}, {110933, 1}, {110934, 2}, {110948, 1},
    +	{110952, 2}, {110960, 1}, {111356, 2}, {113664, 1},
    +	{113771, 2}, {113776, 1}, {113789, 2}, {113792, 1},
    +	{113801, 2}, {113808, 1}, {113818, 2}, {113820, 1},
    +	{113824, 0}, {113828, 2}, {118528, 1}, {118574, 2},
    +	{118576, 1}, {118599, 2}, {118608, 1}, {118724, 2},
    +	{118784, 1}, {119030, 2}, {119040, 1}, {119079, 2},
    +	{119081, 1}, {119134, 34713091}, {119135, 34713603}, {119136, 51491331},
    +	{119137, 51492099}, {119138, 51492867}, {119139, 51493635}, {119140, 51494403},
    +	{119141, 1}, {119155, 2}, {119163, 1}, {119227, 34717955},
    +	{119228, 34718467}, {119229, 51496195}, {119230, 51496963}, {119231, 51497731},
    +	{119232, 51498499}, {119233, 1}, {119275, 2}, {119296, 1},
    +	{119366, 2}, {119488, 1}, {119508, 2}, {119520, 1},
    +	{119540, 2}, {119552, 1}, {119639, 2}, {119648, 1},
    +	{119673, 2}, {119808, 16777219}, {119809, 16777475}, {119810, 16777731},
    +	{119811, 16777987}, {119812, 16778243}, {119813, 16778499}, {119814, 16778755},
    +	{119815, 16779011}, {119816, 16779267}, {119817, 16779523}, {119818, 16779779},
    +	{119819, 16780035}, {119820, 16780291}, {119821, 16780547}, {119822, 16780803},
    +	{119823, 16781059}, {119824, 16781315}, {119825, 16781571}, {119826, 16781827},
    +	{119827, 16782083}, {119828, 16782339}, {119829, 16782595}, {119830, 16782851},
    +	{119831, 16783107}, {119832, 16783363}, {119833, 16783619}, {119834, 16777219},
    +	{119835, 16777475}, {119836, 16777731}, {119837, 16777987}, {119838, 16778243},
    +	{119839, 16778499}, {119840, 16778755}, {119841, 16779011}, {119842, 16779267},
    +	{119843, 16779523}, {119844, 16779779}, {119845, 16780035}, {119846, 16780291},
    +	{119847, 16780547}, {119848, 16780803}, {119849, 16781059}, {119850, 16781315},
    +	{119851, 16781571}, {119852, 16781827}, {119853, 16782083}, {119854, 16782339},
    +	{119855, 16782595}, {119856, 16782851}, {119857, 16783107}, {119858, 16783363},
    +	{119859, 16783619}, {119860, 16777219}, {119861, 16777475}, {119862, 16777731},
    +	{119863, 16777987}, {119864, 16778243}, {119865, 16778499}, {119866, 16778755},
    +	{119867, 16779011}, {119868, 16779267}, {119869, 16779523}, {119870, 16779779},
    +	{119871, 16780035}, {119872, 16780291}, {119873, 16780547}, {119874, 16780803},
    +	{119875, 16781059}, {119876, 16781315}, {119877, 16781571}, {119878, 16781827},
    +	{119879, 16782083}, {119880, 16782339}, {119881, 16782595}, {119882, 16782851},
    +	{119883, 16783107}, {119884, 16783363}, {119885, 16783619}, {119886, 16777219},
    +	{119887, 16777475}, {119888, 16777731}, {119889, 16777987}, {119890, 16778243},
    +	{119891, 16778499}, {119892, 16778755}, {119893, 2}, {119894, 16779267},
    +	{119895, 16779523}, {119896, 16779779}, {119897, 16780035}, {119898, 16780291},
    +	{119899, 16780547}, {119900, 16780803}, {119901, 16781059}, {119902, 16781315},
    +	{119903, 16781571}, {119904, 16781827}, {119905, 16782083}, {119906, 16782339},
    +	{119907, 16782595}, {119908, 16782851}, {119909, 16783107}, {119910, 16783363},
    +	{119911, 16783619}, {119912, 16777219}, {119913, 16777475}, {119914, 16777731},
    +	{119915, 16777987}, {119916, 16778243}, {119917, 16778499}, {119918, 16778755},
    +	{119919, 16779011}, {119920, 16779267}, {119921, 16779523}, {119922, 16779779},
    +	{119923, 16780035}, {119924, 16780291}, {119925, 16780547}, {119926, 16780803},
    +	{119927, 16781059}, {119928, 16781315}, {119929, 16781571}, {119930, 16781827},
    +	{119931, 16782083}, {119932, 16782339}, {119933, 16782595}, {119934, 16782851},
    +	{119935, 16783107}, {119936, 16783363}, {119937, 16783619}, {119938, 16777219},
    +	{119939, 16777475}, {119940, 16777731}, {119941, 16777987}, {119942, 16778243},
    +	{119943, 16778499}, {119944, 16778755}, {119945, 16779011}, {119946, 16779267},
    +	{119947, 16779523}, {119948, 16779779}, {119949, 16780035}, {119950, 16780291},
    +	{119951, 16780547}, {119952, 16780803}, {119953, 16781059}, {119954, 16781315},
    +	{119955, 16781571}, {119956, 16781827}, {119957, 16782083}, {119958, 16782339},
    +	{119959, 16782595}, {119960, 16782851}, {119961, 16783107}, {119962, 16783363},
    +	{119963, 16783619}, {119964, 16777219}, {119965, 2}, {119966, 16777731},
    +	{119967, 16777987}, {119968, 2}, {119970, 16778755}, {119971, 2},
    +	{119973, 16779523}, {119974, 16779779}, {119975, 2}, {119977, 16780547},
    +	{119978, 16780803}, {119979, 16781059}, {119980, 16781315}, {119981, 2},
    +	{119982, 16781827}, {119983, 16782083}, {119984, 16782339}, {119985, 16782595},
    +	{119986, 16782851}, {119987, 16783107}, {119988, 16783363}, {119989, 16783619},
    +	{119990, 16777219}, {119991, 16777475}, {119992, 16777731}, {119993, 16777987},
    +	{119994, 2}, {119995, 16778499}, {119996, 2}, {119997, 16779011},
    +	{119998, 16779267}, {119999, 16779523}, {120000, 16779779}, {120001, 16780035},
    +	{120002, 16780291}, {120003, 16780547}, {120004, 2}, {120005, 16781059},
    +	{120006, 16781315}, {120007, 16781571}, {120008, 16781827}, {120009, 16782083},
    +	{120010, 16782339}, {120011, 16782595}, {120012, 16782851}, {120013, 16783107},
    +	{120014, 16783363}, {120015, 16783619}, {120016, 16777219}, {120017, 16777475},
    +	{120018, 16777731}, {120019, 16777987}, {120020, 16778243}, {120021, 16778499},
    +	{120022, 16778755}, {120023, 16779011}, {120024, 16779267}, {120025, 16779523},
    +	{120026, 16779779}, {120027, 16780035}, {120028, 16780291}, {120029, 16780547},
    +	{120030, 16780803}, {120031, 16781059}, {120032, 16781315}, {120033, 16781571},
    +	{120034, 16781827}, {120035, 16782083}, {120036, 16782339}, {120037, 16782595},
    +	{120038, 16782851}, {120039, 16783107}, {120040, 16783363}, {120041, 16783619},
    +	{120042, 16777219}, {120043, 16777475}, {120044, 16777731}, {120045, 16777987},
    +	{120046, 16778243}, {120047, 16778499}, {120048, 16778755}, {120049, 16779011},
    +	{120050, 16779267}, {120051, 16779523}, {120052, 16779779}, {120053, 16780035},
    +	{120054, 16780291}, {120055, 16780547}, {120056, 16780803}, {120057, 16781059},
    +	{120058, 16781315}, {120059, 16781571}, {120060, 16781827}, {120061, 16782083},
    +	{120062, 16782339}, {120063, 16782595}, {120064, 16782851}, {120065, 16783107},
    +	{120066, 16783363}, {120067, 16783619}, {120068, 16777219}, {120069, 16777475},
    +	{120070, 2}, {120071, 16777987}, {120072, 16778243}, {120073, 16778499},
    +	{120074, 16778755}, {120075, 2}, {120077, 16779523}, {120078, 16779779},
    +	{120079, 16780035}, {120080, 16780291}, {120081, 16780547}, {120082, 16780803},
    +	{120083, 16781059}, {120084, 16781315}, {120085, 2}, {120086, 16781827},
    +	{120087, 16782083}, {120088, 16782339}, {120089, 16782595}, {120090, 16782851},
    +	{120091, 16783107}, {120092, 16783363}, {120093, 2}, {120094, 16777219},
    +	{120095, 16777475}, {120096, 16777731}, {120097, 16777987}, {120098, 16778243},
    +	{120099, 16778499}, {120100, 16778755}, {120101, 16779011}, {120102, 16779267},
    +	{120103, 16779523}, {120104, 16779779}, {120105, 16780035}, {120106, 16780291},
    +	{120107, 16780547}, {120108, 16780803}, {120109, 16781059}, {120110, 16781315},
    +	{120111, 16781571}, {120112, 16781827}, {120113, 16782083}, {120114, 16782339},
    +	{120115, 16782595}, {120116, 16782851}, {120117, 16783107}, {120118, 16783363},
    +	{120119, 16783619}, {120120, 16777219}, {120121, 16777475}, {120122, 2},
    +	{120123, 16777987}, {120124, 16778243}, {120125, 16778499}, {120126, 16778755},
    +	{120127, 2}, {120128, 16779267}, {120129, 16779523}, {120130, 16779779},
    +	{120131, 16780035}, {120132, 16780291}, {120133, 2}, {120134, 16780803},
    +	{120135, 2}, {120138, 16781827}, {120139, 16782083}, {120140, 16782339},
    +	{120141, 16782595}, {120142, 16782851}, {120143, 16783107}, {120144, 16783363},
    +	{120145, 2}, {120146, 16777219}, {120147, 16777475}, {120148, 16777731},
    +	{120149, 16777987}, {120150, 16778243}, {120151, 16778499}, {120152, 16778755},
    +	{120153, 16779011}, {120154, 16779267}, {120155, 16779523}, {120156, 16779779},
    +	{120157, 16780035}, {120158, 16780291}, {120159, 16780547}, {120160, 16780803},
    +	{120161, 16781059}, {120162, 16781315}, {120163, 16781571}, {120164, 16781827},
    +	{120165, 16782083}, {120166, 16782339}, {120167, 16782595}, {120168, 16782851},
    +	{120169, 16783107}, {120170, 16783363}, {120171, 16783619}, {120172, 16777219},
    +	{120173, 16777475}, {120174, 16777731}, {120175, 16777987}, {120176, 16778243},
    +	{120177, 16778499}, {120178, 16778755}, {120179, 16779011}, {120180, 16779267},
    +	{120181, 16779523}, {120182, 16779779}, {120183, 16780035}, {120184, 16780291},
    +	{120185, 16780547}, {120186, 16780803}, {120187, 16781059}, {120188, 16781315},
    +	{120189, 16781571}, {120190, 16781827}, {120191, 16782083}, {120192, 16782339},
    +	{120193, 16782595}, {120194, 16782851}, {120195, 16783107}, {120196, 16783363},
    +	{120197, 16783619}, {120198, 16777219}, {120199, 16777475}, {120200, 16777731},
    +	{120201, 16777987}, {120202, 16778243}, {120203, 16778499}, {120204, 16778755},
    +	{120205, 16779011}, {120206, 16779267}, {120207, 16779523}, {120208, 16779779},
    +	{120209, 16780035}, {120210, 16780291}, {120211, 16780547}, {120212, 16780803},
    +	{120213, 16781059}, {120214, 16781315}, {120215, 16781571}, {120216, 16781827},
    +	{120217, 16782083}, {120218, 16782339}, {120219, 16782595}, {120220, 16782851},
    +	{120221, 16783107}, {120222, 16783363}, {120223, 16783619}, {120224, 16777219},
    +	{120225, 16777475}, {120226, 16777731}, {120227, 16777987}, {120228, 16778243},
    +	{120229, 16778499}, {120230, 16778755}, {120231, 16779011}, {120232, 16779267},
    +	{120233, 16779523}, {120234, 16779779}, {120235, 16780035}, {120236, 16780291},
    +	{120237, 16780547}, {120238, 16780803}, {120239, 16781059}, {120240, 16781315},
    +	{120241, 16781571}, {120242, 16781827}, {120243, 16782083}, {120244, 16782339},
    +	{120245, 16782595}, {120246, 16782851}, {120247, 16783107}, {120248, 16783363},
    +	{120249, 16783619}, {120250, 16777219}, {120251, 16777475}, {120252, 16777731},
    +	{120253, 16777987}, {120254, 16778243}, {120255, 16778499}, {120256, 16778755},
    +	{120257, 16779011}, {120258, 16779267}, {120259, 16779523}, {120260, 16779779},
    +	{120261, 16780035}, {120262, 16780291}, {120263, 16780547}, {120264, 16780803},
    +	{120265, 16781059}, {120266, 16781315}, {120267, 16781571}, {120268, 16781827},
    +	{120269, 16782083}, {120270, 16782339}, {120271, 16782595}, {120272, 16782851},
    +	{120273, 16783107}, {120274, 16783363}, {120275, 16783619}, {120276, 16777219},
    +	{120277, 16777475}, {120278, 16777731}, {120279, 16777987}, {120280, 16778243},
    +	{120281, 16778499}, {120282, 16778755}, {120283, 16779011}, {120284, 16779267},
    +	{120285, 16779523}, {120286, 16779779}, {120287, 16780035}, {120288, 16780291},
    +	{120289, 16780547}, {120290, 16780803}, {120291, 16781059}, {120292, 16781315},
    +	{120293, 16781571}, {120294, 16781827}, {120295, 16782083}, {120296, 16782339},
    +	{120297, 16782595}, {120298, 16782851}, {120299, 16783107}, {120300, 16783363},
    +	{120301, 16783619}, {120302, 16777219}, {120303, 16777475}, {120304, 16777731},
    +	{120305, 16777987}, {120306, 16778243}, {120307, 16778499}, {120308, 16778755},
    +	{120309, 16779011}, {120310, 16779267}, {120311, 16779523}, {120312, 16779779},
    +	{120313, 16780035}, {120314, 16780291}, {120315, 16780547}, {120316, 16780803},
    +	{120317, 16781059}, {120318, 16781315}, {120319, 16781571}, {120320, 16781827},
    +	{120321, 16782083}, {120322, 16782339}, {120323, 16782595}, {120324, 16782851},
    +	{120325, 16783107}, {120326, 16783363}, {120327, 16783619}, {120328, 16777219},
    +	{120329, 16777475}, {120330, 16777731}, {120331, 16777987}, {120332, 16778243},
    +	{120333, 16778499}, {120334, 16778755}, {120335, 16779011}, {120336, 16779267},
    +	{120337, 16779523}, {120338, 16779779}, {120339, 16780035}, {120340, 16780291},
    +	{120341, 16780547}, {120342, 16780803}, {120343, 16781059}, {120344, 16781315},
    +	{120345, 16781571}, {120346, 16781827}, {120347, 16782083}, {120348, 16782339},
    +	{120349, 16782595}, {120350, 16782851}, {120351, 16783107}, {120352, 16783363},
    +	{120353, 16783619}, {120354, 16777219}, {120355, 16777475}, {120356, 16777731},
    +	{120357, 16777987}, {120358, 16778243}, {120359, 16778499}, {120360, 16778755},
    +	{120361, 16779011}, {120362, 16779267}, {120363, 16779523}, {120364, 16779779},
    +	{120365, 16780035}, {120366, 16780291}, {120367, 16780547}, {120368, 16780803},
    +	{120369, 16781059}, {120370, 16781315}, {120371, 16781571}, {120372, 16781827},
    +	{120373, 16782083}, {120374, 16782339}, {120375, 16782595}, {120376, 16782851},
    +	{120377, 16783107}, {120378, 16783363}, {120379, 16783619}, {120380, 16777219},
    +	{120381, 16777475}, {120382, 16777731}, {120383, 16777987}, {120384, 16778243},
    +	{120385, 16778499}, {120386, 16778755}, {120387, 16779011}, {120388, 16779267},
    +	{120389, 16779523}, {120390, 16779779}, {120391, 16780035}, {120392, 16780291},
    +	{120393, 16780547}, {120394, 16780803}, {120395, 16781059}, {120396, 16781315},
    +	{120397, 16781571}, {120398, 16781827}, {120399, 16782083}, {120400, 16782339},
    +	{120401, 16782595}, {120402, 16782851}, {120403, 16783107}, {120404, 16783363},
    +	{120405, 16783619}, {120406, 16777219}, {120407, 16777475}, {120408, 16777731},
    +	{120409, 16777987}, {120410, 16778243}, {120411, 16778499}, {120412, 16778755},
    +	{120413, 16779011}, {120414, 16779267}, {120415, 16779523}, {120416, 16779779},
    +	{120417, 16780035}, {120418, 16780291}, {120419, 16780547}, {120420, 16780803},
    +	{120421, 16781059}, {120422, 16781315}, {120423, 16781571}, {120424, 16781827},
    +	{120425, 16782083}, {120426, 16782339}, {120427, 16782595}, {120428, 16782851},
    +	{120429, 16783107}, {120430, 16783363}, {120431, 16783619}, {120432, 16777219},
    +	{120433, 16777475}, {120434, 16777731}, {120435, 16777987}, {120436, 16778243},
    +	{120437, 16778499}, {120438, 16778755}, {120439, 16779011}, {120440, 16779267},
    +	{120441, 16779523}, {120442, 16779779}, {120443, 16780035}, {120444, 16780291},
    +	{120445, 16780547}, {120446, 16780803}, {120447, 16781059}, {120448, 16781315},
    +	{120449, 16781571}, {120450, 16781827}, {120451, 16782083}, {120452, 16782339},
    +	{120453, 16782595}, {120454, 16782851}, {120455, 16783107}, {120456, 16783363},
    +	{120457, 16783619}, {120458, 16777219}, {120459, 16777475}, {120460, 16777731},
    +	{120461, 16777987}, {120462, 16778243}, {120463, 16778499}, {120464, 16778755},
    +	{120465, 16779011}, {120466, 16779267}, {120467, 16779523}, {120468, 16779779},
    +	{120469, 16780035}, {120470, 16780291}, {120471, 16780547}, {120472, 16780803},
    +	{120473, 16781059}, {120474, 16781315}, {120475, 16781571}, {120476, 16781827},
    +	{120477, 16782083}, {120478, 16782339}, {120479, 16782595}, {120480, 16782851},
    +	{120481, 16783107}, {120482, 16783363}, {120483, 16783619}, {120484, 17944835},
    +	{120485, 17945091}, {120486, 2}, {120488, 16851715}, {120489, 16851971},
    +	{120490, 16852227}, {120491, 16852483}, {120492, 16852739}, {120493, 16852995},
    +	{120494, 16853251}, {120495, 16853507}, {120496, 16846851}, {120497, 16853763},
    +	{120498, 16854019}, {120499, 16786179}, {120500, 16854275}, {120501, 16854531},
    +	{120502, 16854787}, {120503, 16855043}, {120504, 16855299}, {120505, 16853507},
    +	{120506, 16855555}, {120507, 16855811}, {120508, 16856067}, {120509, 16856323},
    +	{120510, 16856579}, {120511, 16856835}, {120512, 16857091}, {120513, 17945347},
    +	{120514, 16851715}, {120515, 16851971}, {120516, 16852227}, {120517, 16852483},
    +	{120518, 16852739}, {120519, 16852995}, {120520, 16853251}, {120521, 16853507},
    +	{120522, 16846851}, {120523, 16853763}, {120524, 16854019}, {120525, 16786179},
    +	{120526, 16854275}, {120527, 16854531}, {120528, 16854787}, {120529, 16855043},
    +	{120530, 16855299}, {120531, 16855555}, {120533, 16855811}, {120534, 16856067},
    +	{120535, 16856323}, {120536, 16856579}, {120537, 16856835}, {120538, 16857091},
    +	{120539, 17945603}, {120540, 16852739}, {120541, 16853507}, {120542, 16853763},
    +	{120543, 16856323}, {120544, 16855299}, {120545, 16855043}, {120546, 16851715},
    +	{120547, 16851971}, {120548, 16852227}, {120549, 16852483}, {120550, 16852739},
    +	{120551, 16852995}, {120552, 16853251}, {120553, 16853507}, {120554, 16846851},
    +	{120555, 16853763}, {120556, 16854019}, {120557, 16786179}, {120558, 16854275},
    +	{120559, 16854531}, {120560, 16854787}, {120561, 16855043}, {120562, 16855299},
    +	{120563, 16853507}, {120564, 16855555}, {120565, 16855811}, {120566, 16856067},
    +	{120567, 16856323}, {120568, 16856579}, {120569, 16856835}, {120570, 16857091},
    +	{120571, 17945347}, {120572, 16851715}, {120573, 16851971}, {120574, 16852227},
    +	{120575, 16852483}, {120576, 16852739}, {120577, 16852995}, {120578, 16853251},
    +	{120579, 16853507}, {120580, 16846851}, {120581, 16853763}, {120582, 16854019},
    +	{120583, 16786179}, {120584, 16854275}, {120585, 16854531}, {120586, 16854787},
    +	{120587, 16855043}, {120588, 16855299}, {120589, 16855555}, {120591, 16855811},
    +	{120592, 16856067}, {120593, 16856323}, {120594, 16856579}, {120595, 16856835},
    +	{120596, 16857091}, {120597, 17945603}, {120598, 16852739}, {120599, 16853507},
    +	{120600, 16853763}, {120601, 16856323}, {120602, 16855299}, {120603, 16855043},
    +	{120604, 16851715}, {120605, 16851971}, {120606, 16852227}, {120607, 16852483},
    +	{120608, 16852739}, {120609, 16852995}, {120610, 16853251}, {120611, 16853507},
    +	{120612, 16846851}, {120613, 16853763}, {120614, 16854019}, {120615, 16786179},
    +	{120616, 16854275}, {120617, 16854531}, {120618, 16854787}, {120619, 16855043},
    +	{120620, 16855299}, {120621, 16853507}, {120622, 16855555}, {120623, 16855811},
    +	{120624, 16856067}, {120625, 16856323}, {120626, 16856579}, {120627, 16856835},
    +	{120628, 16857091}, {120629, 17945347}, {120630, 16851715}, {120631, 16851971},
    +	{120632, 16852227}, {120633, 16852483}, {120634, 16852739}, {120635, 16852995},
    +	{120636, 16853251}, {120637, 16853507}, {120638, 16846851}, {120639, 16853763},
    +	{120640, 16854019}, {120641, 16786179}, {120642, 16854275}, {120643, 16854531},
    +	{120644, 16854787}, {120645, 16855043}, {120646, 16855299}, {120647, 16855555},
    +	{120649, 16855811}, {120650, 16856067}, {120651, 16856323}, {120652, 16856579},
    +	{120653, 16856835}, {120654, 16857091}, {120655, 17945603}, {120656, 16852739},
    +	{120657, 16853507}, {120658, 16853763}, {120659, 16856323}, {120660, 16855299},
    +	{120661, 16855043}, {120662, 16851715}, {120663, 16851971}, {120664, 16852227},
    +	{120665, 16852483}, {120666, 16852739}, {120667, 16852995}, {120668, 16853251},
    +	{120669, 16853507}, {120670, 16846851}, {120671, 16853763}, {120672, 16854019},
    +	{120673, 16786179}, {120674, 16854275}, {120675, 16854531}, {120676, 16854787},
    +	{120677, 16855043}, {120678, 16855299}, {120679, 16853507}, {120680, 16855555},
    +	{120681, 16855811}, {120682, 16856067}, {120683, 16856323}, {120684, 16856579},
    +	{120685, 16856835}, {120686, 16857091}, {120687, 17945347}, {120688, 16851715},
    +	{120689, 16851971}, {120690, 16852227}, {120691, 16852483}, {120692, 16852739},
    +	{120693, 16852995}, {120694, 16853251}, {120695, 16853507}, {120696, 16846851},
    +	{120697, 16853763}, {120698, 16854019}, {120699, 16786179}, {120700, 16854275},
    +	{120701, 16854531}, {120702, 16854787}, {120703, 16855043}, {120704, 16855299},
    +	{120705, 16855555}, {120707, 16855811}, {120708, 16856067}, {120709, 16856323},
    +	{120710, 16856579}, {120711, 16856835}, {120712, 16857091}, {120713, 17945603},
    +	{120714, 16852739}, {120715, 16853507}, {120716, 16853763}, {120717, 16856323},
    +	{120718, 16855299}, {120719, 16855043}, {120720, 16851715}, {120721, 16851971},
    +	{120722, 16852227}, {120723, 16852483}, {120724, 16852739}, {120725, 16852995},
    +	{120726, 16853251}, {120727, 16853507}, {120728, 16846851}, {120729, 16853763},
    +	{120730, 16854019}, {120731, 16786179}, {120732, 16854275}, {120733, 16854531},
    +	{120734, 16854787}, {120735, 16855043}, {120736, 16855299}, {120737, 16853507},
    +	{120738, 16855555}, {120739, 16855811}, {120740, 16856067}, {120741, 16856323},
    +	{120742, 16856579}, {120743, 16856835}, {120744, 16857091}, {120745, 17945347},
    +	{120746, 16851715}, {120747, 16851971}, {120748, 16852227}, {120749, 16852483},
    +	{120750, 16852739}, {120751, 16852995}, {120752, 16853251}, {120753, 16853507},
    +	{120754, 16846851}, {120755, 16853763}, {120756, 16854019}, {120757, 16786179},
    +	{120758, 16854275}, {120759, 16854531}, {120760, 16854787}, {120761, 16855043},
    +	{120762, 16855299}, {120763, 16855555}, {120765, 16855811}, {120766, 16856067},
    +	{120767, 16856323}, {120768, 16856579}, {120769, 16856835}, {120770, 16857091},
    +	{120771, 17945603}, {120772, 16852739}, {120773, 16853507}, {120774, 16853763},
    +	{120775, 16856323}, {120776, 16855299}, {120777, 16855043}, {120778, 16858627},
    +	{120780, 2}, {120782, 17035523}, {120783, 16786947}, {120784, 16785155},
    +	{120785, 16785411}, {120786, 16787715}, {120787, 17035779}, {120788, 17036035},
    +	{120789, 17036291}, {120790, 17036547}, {120791, 17036803}, {120792, 17035523},
    +	{120793, 16786947}, {120794, 16785155}, {120795, 16785411}, {120796, 16787715},
    +	{120797, 17035779}, {120798, 17036035}, {120799, 17036291}, {120800, 17036547},
    +	{120801, 17036803}, {120802, 17035523}, {120803, 16786947}, {120804, 16785155},
    +	{120805, 16785411}, {120806, 16787715}, {120807, 17035779}, {120808, 17036035},
    +	{120809, 17036291}, {120810, 17036547}, {120811, 17036803}, {120812, 17035523},
    +	{120813, 16786947}, {120814, 16785155}, {120815, 16785411}, {120816, 16787715},
    +	{120817, 17035779}, {120818, 17036035}, {120819, 17036291}, {120820, 17036547},
    +	{120821, 17036803}, {120822, 17035523}, {120823, 16786947}, {120824, 16785155},
    +	{120825, 16785411}, {120826, 16787715}, {120827, 17035779}, {120828, 17036035},
    +	{120829, 17036291}, {120830, 17036547}, {120831, 17036803}, {120832, 1},
    +	{121484, 2}, {121499, 1}, {121504, 2}, {121505, 1},
    +	{121520, 2}, {122624, 1}, {122655, 2}, {122661, 1},
    +	{122667, 2}, {122880, 1}, {122887, 2}, {122888, 1},
    +	{122905, 2}, {122907, 1}, {122914, 2}, {122915, 1},
    +	{122917, 2}, {122918, 1}, {122923, 2}, {122928, 16866563},
    +	{122929, 16866819}, {122930, 16867075}, {122931, 16867331}, {122932, 16867587},
    +	{122933, 16867843}, {122934, 16868099}, {122935, 16868355}, {122936, 16868611},
    +	{122937, 16869123}, {122938, 16869379}, {122939, 16869635}, {122940, 16870147},
    +	{122941, 16870403}, {122942, 16870659}, {122943, 16870915}, {122944, 16871171},
    +	{122945, 16871427}, {122946, 16871683}, {122947, 16871939}, {122948, 16872195},
    +	{122949, 16872451}, {122950, 16872707}, {122951, 16873475}, {122952, 16873987},
    +	{122953, 16874243}, {122954, 17495299}, {122955, 16888835}, {122956, 16864003},
    +	{122957, 16864515}, {122958, 16890883}, {122959, 16883715}, {122960, 17945859},
    +	{122961, 16866563}, {122962, 16866819}, {122963, 16867075}, {122964, 16867331},
    +	{122965, 16867587}, {122966, 16867843}, {122967, 16868099}, {122968, 16868355},
    +	{122969, 16868611}, {122970, 16869123}, {122971, 16869379}, {122972, 16870147},
    +	{122973, 16870403}, {122974, 16870915}, {122975, 16871427}, {122976, 16871683},
    +	{122977, 16871939}, {122978, 16872195}, {122979, 16872451}, {122980, 16872707},
    +	{122981, 16873219}, {122982, 16873475}, {122983, 16879875}, {122984, 16864003},
    +	{122985, 16863747}, {122986, 16866307}, {122987, 16883203}, {122988, 17490435},
    +	{122989, 16883971}, {122990, 2}, {123023, 1}, {123024, 2},
    +	{123136, 1}, {123181, 2}, {123184, 1}, {123198, 2},
    +	{123200, 1}, {123210, 2}, {123214, 1}, {123216, 2},
    +	{123536, 1}, {123567, 2}, {123584, 1}, {123642, 2},
    +	{123647, 1}, {123648, 2}, {124112, 1}, {124154, 2},
    +	{124896, 1}, {124903, 2}, {124904, 1}, {124908, 2},
    +	{124909, 1}, {124911, 2}, {124912, 1}, {124927, 2},
    +	{124928, 1}, {125125, 2}, {125127, 1}, {125143, 2},
    +	{125184, 17946115}, {125185, 17946371}, {125186, 17946627}, {125187, 17946883},
    +	{125188, 17947139}, {125189, 17947395}, {125190, 17947651}, {125191, 17947907},
    +	{125192, 17948163}, {125193, 17948419}, {125194, 17948675}, {125195, 17948931},
    +	{125196, 17949187}, {125197, 17949443}, {125198, 17949699}, {125199, 17949955},
    +	{125200, 17950211}, {125201, 17950467}, {125202, 17950723}, {125203, 17950979},
    +	{125204, 17951235}, {125205, 17951491}, {125206, 17951747}, {125207, 17952003},
    +	{125208, 17952259}, {125209, 17952515}, {125210, 17952771}, {125211, 17953027},
    +	{125212, 17953283}, {125213, 17953539}, {125214, 17953795}, {125215, 17954051},
    +	{125216, 17954307}, {125217, 17954563}, {125218, 1}, {125260, 2},
    +	{125264, 1}, {125274, 2}, {125278, 1}, {125280, 2},
    +	{126065, 1}, {126133, 2}, {126209, 1}, {126270, 2},
    +	{126464, 16910339}, {126465, 17683715}, {126466, 17681923}, {126467, 17834499},
    +	{126468, 2}, {126469, 16910851}, {126470, 17731587}, {126471, 17682435},
    +	{126472, 17700099}, {126473, 16911875}, {126474, 17708803}, {126475, 17711107},
    +	{126476, 17682947}, {126477, 17718019}, {126478, 17694979}, {126479, 17701635},
    +	{126480, 17703683}, {126481, 17697027}, {126482, 17706755}, {126483, 17725187},
    +	{126484, 17745155}, {126485, 17686787}, {126486, 17689859}, {126487, 17684995},
    +	{126488, 17724675}, {126489, 17698051}, {126490, 17701123}, {126491, 17702659},
    +	{126492, 17954819}, {126493, 17673475}, {126494, 17955075}, {126495, 17955331},
    +	{126496, 2}, {126497, 17683715}, {126498, 17681923}, {126499, 2},
    +	{126500, 17721091}, {126501, 2}, {126503, 17682435}, {126504, 2},
    +	{126505, 16911875}, {126506, 17708803}, {126507, 17711107}, {126508, 17682947},
    +	{126509, 17718019}, {126510, 17694979}, {126511, 17701635}, {126512, 17703683},
    +	{126513, 17697027}, {126514, 17706755}, {126515, 2}, {126516, 17745155},
    +	{126517, 17686787}, {126518, 17689859}, {126519, 17684995}, {126520, 2},
    +	{126521, 17698051}, {126522, 2}, {126523, 17702659}, {126524, 2},
    +	{126530, 17681923}, {126531, 2}, {126535, 17682435}, {126536, 2},
    +	{126537, 16911875}, {126538, 2}, {126539, 17711107}, {126540, 2},
    +	{126541, 17718019}, {126542, 17694979}, {126543, 17701635}, {126544, 2},
    +	{126545, 17697027}, {126546, 17706755}, {126547, 2}, {126548, 17745155},
    +	{126549, 2}, {126551, 17684995}, {126552, 2}, {126553, 17698051},
    +	{126554, 2}, {126555, 17702659}, {126556, 2}, {126557, 17673475},
    +	{126558, 2}, {126559, 17955331}, {126560, 2}, {126561, 17683715},
    +	{126562, 17681923}, {126563, 2}, {126564, 17721091}, {126565, 2},
    +	{126567, 17682435}, {126568, 17700099}, {126569, 16911875}, {126570, 17708803},
    +	{126571, 2}, {126572, 17682947}, {126573, 17718019}, {126574, 17694979},
    +	{126575, 17701635}, {126576, 17703683}, {126577, 17697027}, {126578, 17706755},
    +	{126579, 2}, {126580, 17745155}, {126581, 17686787}, {126582, 17689859},
    +	{126583, 17684995}, {126584, 2}, {126585, 17698051}, {126586, 17701123},
    +	{126587, 17702659}, {126588, 17954819}, {126589, 2}, {126590, 17955075},
    +	{126591, 2}, {126592, 16910339}, {126593, 17683715}, {126594, 17681923},
    +	{126595, 17834499}, {126596, 17721091}, {126597, 16910851}, {126598, 17731587},
    +	{126599, 17682435}, {126600, 17700099}, {126601, 16911875}, {126602, 2},
    +	{126603, 17711107}, {126604, 17682947}, {126605, 17718019}, {126606, 17694979},
    +	{126607, 17701635}, {126608, 17703683}, {126609, 17697027}, {126610, 17706755},
    +	{126611, 17725187}, {126612, 17745155}, {126613, 17686787}, {126614, 17689859},
    +	{126615, 17684995}, {126616, 17724675}, {126617, 17698051}, {126618, 17701123},
    +	{126619, 17702659}, {126620, 2}, {126625, 17683715}, {126626, 17681923},
    +	{126627, 17834499}, {126628, 2}, {126629, 16910851}, {126630, 17731587},
    +	{126631, 17682435}, {126632, 17700099}, {126633, 16911875}, {126634, 2},
    +	{126635, 17711107}, {126636, 17682947}, {126637, 17718019}, {126638, 17694979},
    +	{126639, 17701635}, {126640, 17703683}, {126641, 17697027}, {126642, 17706755},
    +	{126643, 17725187}, {126644, 17745155}, {126645, 17686787}, {126646, 17689859},
    +	{126647, 17684995}, {126648, 17724675}, {126649, 17698051}, {126650, 17701123},
    +	{126651, 17702659}, {126652, 2}, {126704, 1}, {126706, 2},
    +	{126976, 1}, {127020, 2}, {127024, 1}, {127124, 2},
    +	{127136, 1}, {127151, 2}, {127153, 1}, {127168, 2},
    +	{127169, 1}, {127184, 2}, {127185, 1}, {127222, 2},
    +	{127233, 34732803}, {127234, 34733315}, {127235, 34733827}, {127236, 34734339},
    +	{127237, 34734851}, {127238, 34735363}, {127239, 34735875}, {127240, 34736387},
    +	{127241, 34736899}, {127242, 34737411}, {127243, 1}, {127248, 50644995},
    +	{127249, 50645763}, {127250, 50646531}, {127251, 50647299}, {127252, 50648067},
    +	{127253, 50648835}, {127254, 50649603}, {127255, 50650371}, {127256, 50651139},
    +	{127257, 50651907}, {127258, 50652675}, {127259, 50653443}, {127260, 50654211},
    +	{127261, 50654979}, {127262, 50655747}, {127263, 50656515}, {127264, 50657283},
    +	{127265, 50658051}, {127266, 50658819}, {127267, 50659587}, {127268, 50660355},
    +	{127269, 50661123}, {127270, 50661891}, {127271, 50662659}, {127272, 50663427},
    +	{127273, 50664195}, {127274, 51515139}, {127275, 16777731}, {127276, 16781571},
    +	{127277, 33554947}, {127278, 34738691}, {127279, 1}, {127280, 16777219},
    +	{127281, 16777475}, {127282, 16777731}, {127283, 16777987}, {127284, 16778243},
    +	{127285, 16778499}, {127286, 16778755}, {127287, 16779011}, {127288, 16779267},
    +	{127289, 16779523}, {127290, 16779779}, {127291, 16780035}, {127292, 16780291},
    +	{127293, 16780547}, {127294, 16780803}, {127295, 16781059}, {127296, 16781315},
    +	{127297, 16781571}, {127298, 16781827}, {127299, 16782083}, {127300, 16782339},
    +	{127301, 16782595}, {127302, 16782851}, {127303, 16783107}, {127304, 16783363},
    +	{127305, 16783619}, {127306, 34739203}, {127307, 34226691}, {127308, 34739715},
    +	{127309, 33752579}, {127310, 51517443}, {127311, 34740995}, {127312, 1},
    +	{127338, 34209539}, {127339, 34189571}, {127340, 34741507}, {127341, 1},
    +	{127376, 34742019}, {127377, 1}, {127406, 2}, {127462, 1},
    +	{127488, 34742531}, {127489, 34743043}, {127490, 17307907}, {127491, 2},
    +	{127504, 17157891}, {127505, 17966339}, {127506, 17966595}, {127507, 17351683},
    +	{127508, 17143299}, {127509, 17966851}, {127510, 17967107}, {127511, 17225475},
    +	{127512, 17967363}, {127513, 17967619}, {127514, 17967875}, {127515, 17584643},
    +	{127516, 17968131}, {127517, 17968387}, {127518, 17968643}, {127519, 17968899},
    +	{127520, 17969155}, {127521, 17969411}, {127522, 17167107}, {127523, 17969667},
    +	{127524, 17969923}, {127525, 17970179}, {127526, 17970435}, {127527, 17970691},
    +	{127528, 17970947}, {127529, 17141763}, {127530, 17223427}, {127531, 17971203},
    +	{127532, 17288707}, {127533, 17224195}, {127534, 17288963}, {127535, 17971459},
    +	{127536, 17181443}, {127537, 17971715}, {127538, 17971971}, {127539, 17972227},
    +	{127540, 17972483}, {127541, 17972739}, {127542, 17264387}, {127543, 17160451},
    +	{127544, 17972995}, {127545, 17973251}, {127546, 17973507}, {127547, 17973763},
    +	{127548, 2}, {127552, 51528451}, {127553, 51529219}, {127554, 51529987},
    +	{127555, 51530755}, {127556, 51531523}, {127557, 51532291}, {127558, 51533059},
    +	{127559, 51533827}, {127560, 51534595}, {127561, 2}, {127568, 17980931},
    +	{127569, 17981187}, {127570, 2}, {127584, 1}, {127590, 2},
    +	{127744, 1}, {128728, 2}, {128732, 1}, {128749, 2},
    +	{128752, 1}, {128765, 2}, {128768, 1}, {128887, 2},
    +	{128891, 1}, {128986, 2}, {128992, 1}, {129004, 2},
    +	{129008, 1}, {129009, 2}, {129024, 1}, {129036, 2},
    +	{129040, 1}, {129096, 2}, {129104, 1}, {129114, 2},
    +	{129120, 1}, {129160, 2}, {129168, 1}, {129198, 2},
    +	{129200, 1}, {129202, 2}, {129280, 1}, {129620, 2},
    +	{129632, 1}, {129646, 2}, {129648, 1}, {129661, 2},
    +	{129664, 1}, {129673, 2}, {129680, 1}, {129726, 2},
    +	{129727, 1}, {129734, 2}, {129742, 1}, {129756, 2},
    +	{129760, 1}, {129769, 2}, {129776, 1}, {129785, 2},
    +	{129792, 1}, {129939, 2}, {129940, 1}, {129995, 2},
    +	{130032, 17035523}, {130033, 16786947}, {130034, 16785155}, {130035, 16785411},
    +	{130036, 16787715}, {130037, 17035779}, {130038, 17036035}, {130039, 17036291},
    +	{130040, 17036547}, {130041, 17036803}, {130042, 2}, {131072, 1},
    +	{173792, 2}, {173824, 1}, {177978, 2}, {177984, 1},
    +	{178206, 2}, {178208, 1}, {183970, 2}, {183984, 1},
    +	{191457, 2}, {194560, 17981443}, {194561, 17981699}, {194562, 17981955},
    +	{194563, 17982211}, {194564, 17982467}, {194565, 17608451}, {194566, 17982723},
    +	{194567, 17982979}, {194568, 17983235}, {194569, 17983491}, {194570, 17608707},
    +	{194571, 17983747}, {194572, 17984003}, {194573, 17984259}, {194574, 17608963},
    +	{194575, 17984515}, {194576, 17984771}, {194577, 17985027}, {194578, 17985283},
    +	{194579, 17985539}, {194580, 17985795}, {194581, 17968643}, {194582, 17986051},
    +	{194583, 17986307}, {194584, 17986563}, {194585, 17986819}, {194586, 17987075},
    +	{194587, 17623043}, {194588, 17987331}, {194589, 17145859}, {194590, 17987587},
    +	{194591, 17987843}, {194592, 17988099}, {194593, 17988355}, {194594, 17973251},
    +	{194595, 17988611}, {194596, 17988867}, {194597, 17624323}, {194598, 17609219},
    +	{194599, 17609475}, {194600, 17624579}, {194601, 17989123}, {194602, 17989379},
    +	{194603, 17562883}, {194604, 17989635}, {194605, 17609731}, {194606, 17989891},
    +	{194607, 17990147}, {194608, 17990403}, {194609, 17990659}, {194612, 17990915},
    +	{194613, 17991171}, {194614, 17991427}, {194615, 17991683}, {194616, 17991939},
    +	{194617, 17992195}, {194618, 17992451}, {194619, 17992707}, {194620, 17992963},
    +	{194621, 17993219}, {194622, 17993475}, {194623, 17993731}, {194624, 17993987},
    +	{194625, 17994243}, {194626, 17994499}, {194627, 17994755}, {194628, 17995011},
    +	{194629, 17995267}, {194631, 17625091}, {194632, 17995523}, {194633, 17995779},
    +	{194634, 17996035}, {194635, 17996291}, {194636, 17610243}, {194637, 17996547},
    +	{194638, 17996803}, {194639, 17997059}, {194640, 17600003}, {194641, 17997315},
    +	{194642, 17997571}, {194643, 17997827}, {194644, 17998083}, {194645, 17998339},
    +	{194646, 17998595}, {194647, 17998851}, {194648, 17999107}, {194649, 17999363},
    +	{194650, 17999619}, {194651, 17999875}, {194652, 18000131}, {194653, 17966851},
    +	{194654, 18000387}, {194655, 18000643}, {194656, 18000899}, {194657, 18001155},
    +	{194658, 18001411}, {194659, 18001667}, {194660, 18001923}, {194661, 18002179},
    +	{194662, 18002435}, {194663, 18002691}, {194664, 2}, {194665, 18002947},
    +	{194666, 18003203}, {194668, 18003459}, {194669, 18003715}, {194670, 18003971},
    +	{194671, 17561859}, {194672, 18004227}, {194673, 18004483}, {194674, 18004739},
    +	{194675, 18004995}, {194676, 2}, {194677, 17152515}, {194678, 18005251},
    +	{194679, 18005507}, {194680, 17153027}, {194681, 18005763}, {194682, 18006019},
    +	{194683, 18006275}, {194684, 18006531}, {194685, 18006787}, {194686, 18007043},
    +	{194687, 18007299}, {194688, 18007555}, {194689, 18007811}, {194690, 18008067},
    +	{194691, 18008323}, {194692, 18008579}, {194693, 18008835}, {194694, 18009091},
    +	{194695, 18009347}, {194696, 18009603}, {194697, 18009859}, {194698, 18010115},
    +	{194699, 18010371}, {194700, 18010627}, {194701, 18010883}, {194702, 17548547},
    +	{194703, 18011139}, {194704, 17155587}, {194705, 18011395}, {194707, 18011651},
    +	{194708, 18011907}, {194710, 18012163}, {194711, 18012419}, {194712, 18012675},
    +	{194713, 18012931}, {194714, 18013187}, {194715, 18013443}, {194716, 18013699},
    +	{194717, 18013955}, {194718, 18014211}, {194719, 18014467}, {194720, 18014723},
    +	{194721, 18014979}, {194722, 18015235}, {194723, 17611523}, {194724, 18015491},
    +	{194725, 18015747}, {194726, 18016003}, {194727, 18016259}, {194728, 17628163},
    +	{194729, 18016259}, {194730, 18016515}, {194731, 17612035}, {194732, 18016771},
    +	{194733, 18017027}, {194734, 18017283}, {194735, 18017539}, {194736, 17612291},
    +	{194737, 17541635}, {194738, 17414915}, {194739, 18017795}, {194740, 18018051},
    +	{194741, 18018307}, {194742, 18018563}, {194743, 18018819}, {194744, 18019075},
    +	{194745, 18019331}, {194746, 18019587}, {194747, 18019843}, {194748, 18020099},
    +	{194749, 18020355}, {194750, 18020611}, {194751, 18020867}, {194752, 18021123},
    +	{194753, 18021379}, {194754, 18021635}, {194755, 18021891}, {194756, 18022147},
    +	{194757, 18022403}, {194758, 18022659}, {194759, 18022915}, {194760, 17612547},
    +	{194761, 18023171}, {194762, 18023427}, {194763, 18023683}, {194764, 18023939},
    +	{194765, 18024195}, {194766, 18024451}, {194767, 17613059}, {194768, 18024707},
    +	{194769, 18024963}, {194770, 18025219}, {194771, 18025475}, {194772, 18025731},
    +	{194773, 18025987}, {194774, 18026243}, {194775, 18026499}, {194776, 17548803},
    +	{194777, 17630211}, {194778, 18026755}, {194779, 18027011}, {194780, 18027267},
    +	{194781, 18027523}, {194782, 18027779}, {194783, 18028035}, {194784, 18028291},
    +	{194785, 18028547}, {194786, 17613315}, {194787, 18028803}, {194788, 18029059},
    +	{194789, 18029315}, {194790, 18029571}, {194791, 17640963}, {194792, 18029827},
    +	{194793, 18030083}, {194794, 18030339}, {194795, 18030595}, {194796, 18030851},
    +	{194797, 18031107}, {194798, 18031363}, {194799, 18031619}, {194800, 18031875},
    +	{194801, 18032131}, {194802, 18032387}, {194803, 18032643}, {194804, 18032899},
    +	{194805, 17566211}, {194806, 18033155}, {194807, 18033411}, {194808, 18033667},
    +	{194809, 18033923}, {194810, 18034179}, {194811, 18034435}, {194812, 18034691},
    +	{194813, 18034947}, {194814, 18035203}, {194815, 18035459}, {194816, 18035715},
    +	{194817, 17613571}, {194818, 17587203}, {194819, 18035971}, {194820, 18036227},
    +	{194821, 18036483}, {194822, 18036739}, {194823, 18036995}, {194824, 18037251},
    +	{194825, 18037507}, {194826, 18037763}, {194827, 17630979}, {194828, 18038019},
    +	{194829, 18038275}, {194830, 18038531}, {194831, 18038787}, {194832, 18039043},
    +	{194833, 18039299}, {194834, 18039555}, {194835, 18039811}, {194836, 17631235},
    +	{194837, 18040067}, {194838, 18040323}, {194839, 18040579}, {194840, 18040835},
    +	{194841, 18041091}, {194842, 18041347}, {194843, 18041603}, {194844, 18041859},
    +	{194845, 18042115}, {194846, 18042371}, {194847, 2}, {194848, 18042627},
    +	{194849, 17631747}, {194850, 18042883}, {194851, 18043139}, {194852, 18043395},
    +	{194853, 18043651}, {194854, 18043907}, {194855, 18044163}, {194856, 18044419},
    +	{194857, 18044675}, {194858, 18044931}, {194859, 18045187}, {194860, 18045443},
    +	{194862, 18045699}, {194863, 18045955}, {194864, 17632259}, {194865, 18046211},
    +	{194866, 18046467}, {194867, 18046723}, {194868, 18046979}, {194869, 18047235},
    +	{194870, 18047491}, {194871, 18047747}, {194872, 17562627}, {194873, 18048003},
    +	{194874, 18048259}, {194875, 18048515}, {194876, 18048771}, {194877, 18049027},
    +	{194878, 18049283}, {194879, 18049539}, {194880, 17633795}, {194881, 18049795},
    +	{194882, 18050051}, {194883, 18050307}, {194884, 18050563}, {194885, 18050819},
    +	{194886, 18051075}, {194888, 17634051}, {194889, 17641475}, {194890, 18051331},
    +	{194891, 18051587}, {194892, 18051843}, {194893, 18052099}, {194894, 18052355},
    +	{194895, 17553155}, {194896, 17634563}, {194897, 18052611}, {194898, 18052867},
    +	{194899, 17616131}, {194900, 18053123}, {194901, 18053379}, {194902, 17605123},
    +	{194903, 18053635}, {194904, 18053891}, {194905, 17616899}, {194906, 18054147},
    +	{194907, 18054403}, {194908, 18054659}, {194909, 18054915}, {194911, 2},
    +	{194912, 18055171}, {194913, 18055427}, {194914, 18055683}, {194915, 18055939},
    +	{194916, 18056195}, {194917, 18056451}, {194918, 18056707}, {194919, 18056963},
    +	{194920, 18057219}, {194921, 18057475}, {194922, 18057731}, {194923, 18057987},
    +	{194924, 18058243}, {194925, 18058499}, {194926, 18058755}, {194927, 18059011},
    +	{194928, 18059267}, {194929, 18059523}, {194930, 18059779}, {194931, 18060035},
    +	{194932, 18060291}, {194933, 18060547}, {194934, 18060803}, {194935, 18061059},
    +	{194936, 18061315}, {194937, 18061571}, {194938, 17618435}, {194939, 18061827},
    +	{194940, 18062083}, {194941, 18062339}, {194942, 18062595}, {194943, 18062851},
    +	{194944, 18063107}, {194945, 18063363}, {194946, 18063619}, {194947, 18063875},
    +	{194948, 18064131}, {194949, 18064387}, {194950, 18064643}, {194951, 18064899},
    +	{194952, 18065155}, {194953, 18065411}, {194954, 18065667}, {194955, 18011651},
    +	{194956, 18065923}, {194957, 18066179}, {194958, 18066435}, {194959, 18066691},
    +	{194960, 18066947}, {194961, 18067203}, {194962, 18067459}, {194963, 18067715},
    +	{194964, 18067971}, {194965, 18068227}, {194966, 18068483}, {194967, 18068739},
    +	{194968, 17566979}, {194969, 18068995}, {194970, 18069251}, {194971, 18069507},
    +	{194972, 18069763}, {194973, 18070019}, {194974, 18070275}, {194975, 17619203},
    +	{194976, 18070531}, {194977, 18070787}, {194978, 18071043}, {194979, 18071299},
    +	{194980, 18071555}, {194981, 18071811}, {194982, 18072067}, {194983, 18072323},
    +	{194984, 18072579}, {194985, 18072835}, {194986, 18073091}, {194987, 18073347},
    +	{194988, 18073603}, {194989, 18073859}, {194990, 18074115}, {194991, 18074371},
    +	{194992, 18074627}, {194993, 18074883}, {194994, 18075139}, {194995, 18075395},
    +	{194996, 17551875}, {194997, 18075651}, {194998, 18075907}, {194999, 18076163},
    +	{195000, 18076419}, {195001, 18076675}, {195002, 18076931}, {195003, 17636355},
    +	{195004, 18077187}, {195005, 18077443}, {195006, 18077699}, {195007, 2},
    +	{195008, 18077955}, {195009, 18078211}, {195010, 18078467}, {195011, 18078723},
    +	{195012, 17178627}, {195013, 18078979}, {195014, 18079235}, {195015, 18079491},
    +	{195016, 18079747}, {195017, 18080003}, {195018, 18080259}, {195019, 18080515},
    +	{195020, 18080771}, {195021, 18081027}, {195022, 18081283}, {195023, 18081539},
    +	{195024, 17637635}, {195025, 17637891}, {195026, 17180419}, {195027, 18081795},
    +	{195028, 18082051}, {195029, 18082307}, {195030, 18082563}, {195031, 18082819},
    +	{195032, 18083075}, {195033, 18083331}, {195034, 18083587}, {195035, 18083843},
    +	{195036, 18084099}, {195037, 18084355}, {195038, 18084611}, {195039, 17638147},
    +	{195040, 18084867}, {195041, 18085123}, {195042, 18085379}, {195043, 18085635},
    +	{195044, 18085891}, {195045, 18086147}, {195046, 18086403}, {195047, 18086659},
    +	{195048, 18086915}, {195049, 18087171}, {195050, 18087427}, {195051, 18087683},
    +	{195052, 18087939}, {195053, 18088195}, {195054, 18088451}, {195055, 18088707},
    +	{195056, 18088963}, {195057, 18089219}, {195058, 18089475}, {195059, 18089731},
    +	{195060, 18089987}, {195061, 18090243}, {195062, 18090499}, {195063, 18090755},
    +	{195064, 18091011}, {195065, 18091267}, {195066, 18091523}, {195067, 18091779},
    +	{195068, 18092035}, {195069, 18092291}, {195070, 17639683}, {195072, 18092547},
    +	{195073, 18092803}, {195074, 18093059}, {195075, 18093315}, {195076, 18093571},
    +	{195077, 18093827}, {195078, 18094083}, {195079, 18094339}, {195080, 18094595},
    +	{195081, 18094851}, {195082, 17639939}, {195083, 18095107}, {195084, 18095363},
    +	{195085, 18095619}, {195086, 18095875}, {195087, 18096131}, {195088, 18096387},
    +	{195089, 18096643}, {195090, 18096899}, {195091, 18097155}, {195092, 18097411},
    +	{195093, 17192707}, {195094, 18097667}, {195095, 17193731}, {195096, 18097923},
    +	{195097, 18098179}, {195098, 18098435}, {195099, 18098691}, {195100, 17195011},
    +	{195101, 18098947}, {195102, 2}, {196608, 1}, {201547, 2},
    +	{201552, 1}, {205744, 2}, {917760, 0}, {918000, 2}
    +};
    +
    +
    +} // namespace ada::idna
    +#endif // ADA_IDNA_TABLES_H
    +
    +/* end file src/mapping_tables.cpp */
    +
    +namespace ada::idna {
    +
    +// This can be greatly accelerated. For now we just use a simply
    +// binary search. In practice, you should *not* do that.
    +uint32_t find_range_index(uint32_t key) {
    +  ////////////////
    +  // This could be implemented with std::lower_bound, but we roll our own
    +  // because we want to allow further optimizations in the future.
    +  ////////////////
    +  uint32_t len = std::size(table);
    +  uint32_t low = 0;
    +  uint32_t high = len - 1;
    +  while (low <= high) {
    +    uint32_t middle_index = (low + high) >> 1;  // cannot overflow
    +    uint32_t middle_value = table[middle_index][0];
    +    if (middle_value < key) {
    +      low = middle_index + 1;
    +    } else if (middle_value > key) {
    +      high = middle_index - 1;
    +    } else {
    +      return middle_index;  // perfect match
         }
       }
    +  return low == 0 ? 0 : low - 1;
    +}
     
    -  std::string ipv6(const std::array& address) noexcept {
    -    size_t compress_length = 0; // The length of a long sequence of zeros.
    -    size_t compress = 0; // The start of a long sequence of zeros.
    -    find_longest_sequence_of_ipv6_pieces(address, compress, compress_length);
    +bool ascii_has_upper_case(char* input, size_t length) {
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  uint64_t broadcast_80 = broadcast(0x80);
    +  uint64_t broadcast_Ap = broadcast(128 - 'A');
    +  uint64_t broadcast_Zp = broadcast(128 - 'Z');
    +  size_t i = 0;
     
    -    if (compress_length <= 1) {
    -      // Optimization opportunity: Find a faster way then snprintf for imploding and return here.
    -      compress = compress_length = 8;
    -    }
    +  uint64_t runner{0};
     
    -    std::string output(4 * 8 + 7 + 2, '\0');
    -    size_t piece_index = 0;
    -    char *point = output.data();
    -    char *point_end = output.data() + output.size();
    -    *point++ = '[';
    -    while (true) {
    -      if (piece_index == compress) {
    -        *point++ = ':';
    -        // If we skip a value initially, we need to write '::', otherwise
    -        // a single ':' will do since it follows a previous ':'.
    -        if(piece_index == 0) { *point++ = ':'; }
    -        piece_index += compress_length;
    -        if(piece_index == 8) { break; }
    -      }
    -      point = std::to_chars(point, point_end, address[piece_index], 16).ptr;
    -      piece_index++;
    -      if(piece_index == 8) { break; }
    -      *point++ = ':';
    -    }
    -    *point++ = ']';
    -    output.resize(point - output.data());
    -    return output;
    +  for (; i + 7 < length; i += 8) {
    +    uint64_t word{};
    +    memcpy(&word, input + i, sizeof(word));
    +    runner |= (((word + broadcast_Ap) ^ (word + broadcast_Zp)) & broadcast_80);
       }
    -
    -  std::string ipv4(const uint64_t address) noexcept {
    -    std::string output(15, '\0');
    -    char *point = output.data();
    -    char *point_end = output.data() + output.size();
    -    point = std::to_chars(point, point_end, uint8_t(address >> 24)).ptr;
    -    for (int i = 2; i >= 0; i--) {
    -     *point++ = '.';
    -     point = std::to_chars(point, point_end, uint8_t(address >> (i * 8))).ptr;
    -    }
    -    output.resize(point - output.data());
    -    return output;
    +  if (i < length) {
    +    uint64_t word{};
    +    memcpy(&word, input + i, length - i);
    +    runner |= (((word + broadcast_Ap) ^ (word + broadcast_Zp)) & broadcast_80);
       }
    +  return runner != 0;
    +}
     
    -} // namespace ada::serializers
    -/* end file src/serializers.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=implementation.cpp
    -/* begin file src/implementation.cpp */
    -#include 
    -
    -
    -namespace ada {
    -
    -  ada_warn_unused tl::expected parse(std::string_view input,
    -                            const ada::url* base_url,
    -                            ada::encoding_type encoding) {
    -    if(encoding != encoding_type::UTF8) {
    -      // @todo Add support for non UTF8 input
    -    }
    -    ada::url u = ada::parser::parse_url(input, base_url, encoding);
    -    if(!u.is_valid) { return tl::unexpected(errors::generic_error); }
    -    return u;
    -  }
    -
    -  std::string href_from_file(std::string_view input) {
    -    // This is going to be much faster than constructing a URL.
    -    std::string tmp_buffer;
    -    std::string_view internal_input;
    -    if(unicode::has_tabs_or_newline(input)) {
    -      tmp_buffer = input;
    -      helpers::remove_ascii_tab_or_newline(tmp_buffer);
    -      internal_input = tmp_buffer;
    -    } else {
    -      internal_input = input;
    -    }
    -    std::string path;
    -    if(internal_input.empty()) {
    -      path = "/";
    -    } else if((internal_input[0] == '/') ||(internal_input[0] == '\\')){
    -      helpers::parse_prepared_path(internal_input.substr(1), ada::scheme::type::FILE, path);
    -    } else {
    -      helpers::parse_prepared_path(internal_input, ada::scheme::type::FILE, path);
    -    }
    -    return "file://" + path;
    +void ascii_map(char* input, size_t length) {
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  uint64_t broadcast_80 = broadcast(0x80);
    +  uint64_t broadcast_Ap = broadcast(128 - 'A');
    +  uint64_t broadcast_Zp = broadcast(128 - 'Z');
    +  size_t i = 0;
    +
    +  for (; i + 7 < length; i += 8) {
    +    uint64_t word{};
    +    memcpy(&word, input + i, sizeof(word));
    +    word ^=
    +        (((word + broadcast_Ap) ^ (word + broadcast_Zp)) & broadcast_80) >> 2;
    +    memcpy(input + i, &word, sizeof(word));
    +  }
    +  if (i < length) {
    +    uint64_t word{};
    +    memcpy(&word, input + i, length - i);
    +    word ^=
    +        (((word + broadcast_Ap) ^ (word + broadcast_Zp)) & broadcast_80) >> 2;
    +    memcpy(input + i, &word, length - i);
       }
    +}
    +
    +// Map the characters according to IDNA, returning the empty string on error.
    +std::u32string map(std::u32string_view input) {
    +  //  [Map](https://www.unicode.org/reports/tr46/#ProcessingStepMap).
    +  //  For each code point in the domain_name string, look up the status
    +  //  value in Section 5, [IDNA Mapping
    +  //  Table](https://www.unicode.org/reports/tr46/#IDNA_Mapping_Table),
    +  //  and take the following actions:
    +  //    * disallowed: Leave the code point unchanged in the string, and
    +  //    record that there was an error.
    +  //    * ignored: Remove the code point from the string. This is
    +  //    equivalent to mapping the code point to an empty string.
    +  //    * mapped: Replace the code point in the string by the value for
    +  //    the mapping in Section 5, [IDNA Mapping
    +  //    Table](https://www.unicode.org/reports/tr46/#IDNA_Mapping_Table).
    +  //    * valid: Leave the code point unchanged in the string.
    +  static std::u32string error = U"";
    +  std::u32string answer;
    +  answer.reserve(input.size());
    +  for (char32_t x : input) {
    +    size_t index = find_range_index(x);
    +    uint32_t descriptor = table[index][1];
    +    uint8_t code = uint8_t(descriptor);
    +    switch (code) {
    +      case 0:
    +        break;  // nothing to do, ignored
    +      case 1:
    +        answer.push_back(x);  // valid, we just copy it to output
    +        break;
    +      case 2:
    +        return error;  // disallowed
    +        break;
     
    -  ada_warn_unused std::string to_string(ada::encoding_type type) {
    -    switch(type) {
    -    case ada::encoding_type::UTF8 : return "UTF-8";
    -    case ada::encoding_type::UTF_16LE : return "UTF-16LE";
    -    case ada::encoding_type::UTF_16BE : return "UTF-16BE";
    -    default: unreachable();
    +      // case 3 :
    +      default:
    +        // We have a mapping
    +        {
    +          size_t char_count = (descriptor >> 24);
    +          uint16_t char_index = uint16_t(descriptor >> 8);
    +          for (size_t idx = char_index; idx < char_index + char_count; idx++) {
    +            answer.push_back(mappings[idx]);
    +          }
    +        }
         }
       }
    +  return answer;
    +}
    +}  // namespace ada::idna
    +/* end file src/mapping.cpp */
    +/* begin file src/normalization.cpp */
    +
    +/* begin file src/unilib/uninorms.h */
    +// This file is part of UniLib .
    +//
    +// Copyright 2014 Institute of Formal and Applied Linguistics, Faculty of
    +// Mathematics and Physics, Charles University in Prague, Czech Republic.
    +//
    +// This Source Code Form is subject to the terms of the Mozilla Public
    +// License, v. 2.0. If a copy of the MPL was not distributed with this
    +// file, You can obtain one at http://mozilla.org/MPL/2.0/.
    +//
    +// UniLib version: 3.3.1-dev
    +// Unicode version: 15.0.0
    +
    +
    +#include 
    +#include 
     
    -} // namespace ada
    -/* end file src/implementation.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=helpers.cpp
    -/* begin file src/helpers.cpp */
    +namespace ufal {
    +namespace unilib {
    +
    +class uninorms {
    + public:
    +  static void nfc(std::u32string& str);
    +  static void nfd(std::u32string& str);
    +  static void nfkc(std::u32string& str);
    +  static void nfkd(std::u32string& str);
    +
    + private:
    +  static void compose(std::u32string& str);
    +  static void decompose(std::u32string& str, bool kanonical);
    +
    +  static const char32_t CHARS = 0x110000;
    +
    +  struct Hangul {
    +    // Hangul decomposition and composition
    +    static const char32_t SBase = 0xAC00, LBase = 0x1100, VBase = 0x1161,
    +                          TBase = 0x11A7;
    +    static const char32_t LCount = 19, VCount = 21, TCount = 28,
    +                          NCount = VCount * TCount, SCount = LCount * NCount;
    +  };
    +
    +  static const uint8_t ccc_index[CHARS >> 8];
    +  static const uint8_t ccc_block[][256];
    +
    +  static const uint8_t composition_index[CHARS >> 8];
    +  static const uint16_t composition_block[][257];
    +  static const char32_t composition_data[];
    +
    +  static const uint8_t decomposition_index[CHARS >> 8];
    +  static const uint16_t decomposition_block[][257];
    +  static const char32_t decomposition_data[];
    +};
    +
    +}  // namespace unilib
    +}  // namespace ufal
    +/* end file src/unilib/uninorms.h */
    +/* begin file src/unilib/uninorms.cpp */
    +// This file is part of UniLib .
    +//
    +// Copyright 2014 Institute of Formal and Applied Linguistics, Faculty of
    +// Mathematics and Physics, Charles University in Prague, Czech Republic.
    +//
    +// This Source Code Form is subject to the terms of the Mozilla Public
    +// License, v. 2.0. If a copy of the MPL was not distributed with this
    +// file, You can obtain one at http://mozilla.org/MPL/2.0/.
    +//
    +// UniLib version: 3.3.1-dev
    +// Unicode version: 15.0.0
    +
    +
    +namespace ufal {
    +namespace unilib {
    +
    +void uninorms::nfc(std::u32string& str) {
    +  decompose(str, false);
    +  compose(str);
    +}
     
    -#include 
    -#include 
    -#include 
    -#include 
    +void uninorms::nfd(std::u32string& str) { decompose(str, false); }
     
    -namespace ada::helpers {
    +void uninorms::nfkc(std::u32string& str) {
    +  decompose(str, true);
    +  compose(str);
    +}
     
    -  template 
    -  void encode_json(std::string_view view, out_iter out) {
    -    // trivial implementation. could be faster.
    -    const char * hexvalues = "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f";
    -    for(uint8_t c : view) {
    -      if(c == '\\') {
    -        *out++ = '\\'; *out++ = '\\';
    -      } else if(c == '"') {
    -        *out++ = '\\'; *out++ = '"';
    -      } else if(c <= 0x1f) {
    -        *out++ = '\\'; *out++= 'u'; *out++= '0'; *out++= '0';
    -        *out++ = hexvalues[2*c];
    -        *out++ = hexvalues[2*c+1];
    -      } else {
    -        *out++ = c;
    -      }
    -    }
    -  }
    -
    -  ada_unused std::string get_state(ada::state s) {
    -    switch (s) {
    -      case ada::state::AUTHORITY: return "Authority";
    -      case ada::state::SCHEME_START: return "Scheme Start";
    -      case ada::state::SCHEME: return "Scheme";
    -      case ada::state::HOST: return "Host";
    -      case ada::state::NO_SCHEME: return "No Scheme";
    -      case ada::state::FRAGMENT: return "Fragment";
    -      case ada::state::RELATIVE_SCHEME: return "Relative Scheme";
    -      case ada::state::RELATIVE_SLASH: return "Relative Slash";
    -      case ada::state::FILE: return "File";
    -      case ada::state::FILE_HOST: return "File Host";
    -      case ada::state::FILE_SLASH: return "File Slash";
    -      case ada::state::PATH_OR_AUTHORITY: return "Path or Authority";
    -      case ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES: return "Special Authority Ignore Slashes";
    -      case ada::state::SPECIAL_AUTHORITY_SLASHES: return "Special Authority Slashes";
    -      case ada::state::SPECIAL_RELATIVE_OR_AUTHORITY: return "Special Relative or Authority";
    -      case ada::state::QUERY: return "Query";
    -      case ada::state::PATH: return "Path";
    -      case ada::state::PATH_START: return "Path Start";
    -      case ada::state::OPAQUE_PATH: return "Opaque Path";
    -      case ada::state::PORT: return "Port";
    -      default: return "unknown state";
    -    }
    -  }
    -
    -  ada_really_inline std::optional prune_fragment(std::string_view& input) noexcept {
    -    // compiles down to 20--30 instructions including a class to memchr (C function).
    -    // this function should be quite fast.
    -    size_t location_of_first = input.find('#');
    -    if(location_of_first == std::string_view::npos) { return std::nullopt; }
    -    std::string_view fragment = input;
    -    fragment.remove_prefix(location_of_first+1);
    -    input.remove_suffix(input.size() - location_of_first);
    -    return fragment;
    -  }
    -
    -  ada_really_inline void shorten_path(std::string& path, ada::scheme::type type) noexcept {
    -    size_t first_delimiter = path.find_first_of('/', 1);
    -
    -    // Let path be url’s path.
    -    // If url’s scheme is "file", path’s size is 1, and path[0] is a normalized Windows drive letter, then return.
    -    if (type == ada::scheme::type::FILE && first_delimiter == std::string_view::npos) {
    -      if (checkers::is_normalized_windows_drive_letter(std::string_view(path.data() + 1, first_delimiter - 1))) {
    -        return;
    +void uninorms::nfkd(std::u32string& str) { decompose(str, true); }
    +
    +void uninorms::compose(std::u32string& str) {
    +  size_t old, com;
    +  for (old = 0, com = 0; old < str.size(); old++, com++) {
    +    str[com] = str[old];
    +    if (str[old] >= Hangul::LBase &&
    +        str[old] < Hangul::LBase + Hangul::LCount) {
    +      // Check Hangul composition L + V [+ T].
    +      if (old + 1 < str.size() && str[old + 1] >= Hangul::VBase &&
    +          str[old + 1] < Hangul::VBase + Hangul::VCount) {
    +        str[com] =
    +            Hangul::SBase + ((str[old] - Hangul::LBase) * Hangul::VCount +
    +                             str[old + 1] - Hangul::VBase) *
    +                                Hangul::TCount;
    +        old++;
    +        if (old + 1 < str.size() && str[old + 1] > Hangul::TBase &&
    +            str[old + 1] < Hangul::TBase + Hangul::TCount)
    +          str[com] += str[++old] - Hangul::TBase;
           }
    -    }
    +    } else if (str[old] >= Hangul::SBase &&
    +               str[old] < Hangul::SBase + Hangul::SCount) {
    +      // Check Hangul composition LV + T
    +      if ((str[old] - Hangul::SBase) % Hangul::TCount && old + 1 < str.size() &&
    +          str[old + 1] > Hangul::TBase &&
    +          str[old + 1] < Hangul::TBase + Hangul::TCount)
    +        str[com] += str[++old] - Hangul::TBase;
    +    } else if (str[old] < CHARS) {
    +      // Check composition_data
    +      auto composition =
    +          &composition_block[composition_index[str[old] >> 8]][str[old] & 0xFF];
    +      auto starter = com;
    +      for (int last_ccc = -1; old + 1 < str.size(); old++) {
    +        int ccc =
    +            str[old + 1] < CHARS
    +                ? ccc_block[ccc_index[str[old + 1] >> 8]][str[old + 1] & 0xFF]
    +                : 0;
    +        if (composition[1] - composition[0] && last_ccc < ccc) {
    +          // Try finding a composition.
    +          auto l = composition[0], r = composition[1];
    +          while (l + 2 < r) {
    +            auto m = l + (((r - l) >> 1) & ~1);
    +            if (composition_data[m] <= str[old + 1]) l = m;
    +            if (composition_data[m] >= str[old + 1]) r = m;
    +          }
    +          if (composition_data[l] == str[old + 1]) {
    +            // Found a composition.
    +            str[starter] = composition_data[l + 1];
    +            composition =
    +                &composition_block[composition_index[composition_data[l + 1] >>
    +                                                     8]]
    +                                  [composition_data[l + 1] & 0xFF];
    +            continue;
    +          }
    +        }
     
    -    // Remove path’s last item, if any.
    -    if (!path.empty()) {
    -      path.erase(path.rfind('/'));
    +        if (!ccc) break;
    +        last_ccc = ccc;
    +        str[++com] = str[old + 1];
    +      }
         }
       }
     
    -  ada_really_inline void remove_ascii_tab_or_newline(std::string& input) noexcept {
    -    // if this ever becomes a performance issue, we could use an approach similar to has_tabs_or_newline
    -    input.erase(std::remove_if(input.begin(), input.end(), [](char c) {
    -      return ada::unicode::is_ascii_tab_or_newline(c);
    -    }), input.end());
    -  }
    -
    -  ada_really_inline std::string_view substring(std::string_view input, size_t pos) noexcept {
    -    ada_log("substring(", input, " [", input.size() ,"bytes],", pos, ")");
    -    return pos > input.size() ? std::string_view() : input.substr(pos);
    -  }
    -
    -  // Reverse the byte order.
    -  ada_really_inline uint64_t swap_bytes(uint64_t val) noexcept {
    -    // performance: this often compiles to a single instruction (e.g., bswap)
    -    return ((((val) & 0xff00000000000000ull) >> 56) |
    -          (((val) & 0x00ff000000000000ull) >> 40) |
    -          (((val) & 0x0000ff0000000000ull) >> 24) |
    -          (((val) & 0x000000ff00000000ull) >> 8 ) |
    -          (((val) & 0x00000000ff000000ull) << 8 ) |
    -          (((val) & 0x0000000000ff0000ull) << 24) |
    -          (((val) & 0x000000000000ff00ull) << 40) |
    -          (((val) & 0x00000000000000ffull) << 56));
    -  }
    +  if (com < old) str.resize(com);
    +}
     
    -  ada_really_inline uint64_t swap_bytes_if_big_endian(uint64_t val) noexcept {
    -    // performance: under little-endian systems (most systems), this function
    -    // is free (just returns the input).
    -#if ADA_IS_BIG_ENDIAN
    -    return swap_bytes(val);
    -#else
    -    return val; // unchanged (trivial)
    -#endif
    +void uninorms::decompose(std::u32string& str, bool kompatibility) {
    +  // Count how much additional space do we need.
    +  bool any_decomposition = false;
    +  size_t additional = 0;
    +  for (auto&& chr : str) {
    +    int decomposition_len = 0;
    +
    +    if (chr >= Hangul::SBase && chr < Hangul::SBase + Hangul::SCount) {
    +      // Hangul decomposition.
    +      decomposition_len = 2 + ((chr - Hangul::SBase) % Hangul::TCount ? 1 : 0);
    +    } else if (chr < CHARS) {
    +      // Check decomposition_data.
    +      auto decomposition =
    +          &decomposition_block[decomposition_index[chr >> 8]][chr & 0xFF];
    +      decomposition_len = (decomposition[1] >> 2) - (decomposition[0] >> 2);
    +      if (decomposition_len && !kompatibility && (decomposition[0] & 1))
    +        decomposition_len = 0;
    +      if (decomposition_len && kompatibility && (decomposition[0] & 2))
    +        // Further kompatibility decomposition.
    +        for (auto i = decomposition[0] >> 2; i < decomposition[1] >> 2; i++) {
    +          auto further_decomposition =
    +              &decomposition_block[decomposition_index[decomposition_data[i] >>
    +                                                       8]]
    +                                  [decomposition_data[i] & 0xFF];
    +          if (further_decomposition[0] & 1)
    +            decomposition_len += (further_decomposition[1] >> 2) -
    +                                 (further_decomposition[0] >> 2) - 1;
    +        }
    +    }
    +    // Do we decompose current character?
    +    if (!decomposition_len) continue;
    +    any_decomposition = true;
    +    additional += decomposition_len - 1;
       }
     
    -  // starting at index location, this finds the next location of a character
    -  // :, /, \\, ? or [. If none is found, view.size() is returned.
    -  // For use within get_host_delimiter_location.
    -  ada_really_inline size_t find_next_host_delimiter_special(std::string_view view, size_t location) noexcept {
    -    // performance: if you plan to call find_next_host_delimiter more than once,
    -    // you *really* want find_next_host_delimiter to be inlined, because
    -    // otherwise, the constants may get reloaded each time (bad).
    -    auto has_zero_byte = [](uint64_t v) {
    -      return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    -    };
    -    auto index_of_first_set_byte = [](uint64_t v) {
    -      return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    -    };
    -    auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    -    size_t i = location;
    -    uint64_t mask1 = broadcast(':');
    -    uint64_t mask2 = broadcast('/');
    -    uint64_t mask3 = broadcast('\\');
    -    uint64_t mask4 = broadcast('?');
    -    uint64_t mask5 = broadcast('[');
    -    // This loop will get autovectorized under many optimizing compilers,
    -    // so you get actually SIMD!
    -    for (; i + 7 < view.size(); i += 8) {
    -      uint64_t word{};
    -      // performance: the next memcpy translates into a single CPU instruction.
    -      memcpy(&word, view.data() + i, sizeof(word));
    -      // performance: on little-endian systems (most systems), this next line is free.
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      uint64_t xor4 = word ^ mask4;
    -      uint64_t xor5 = word ^ mask5;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3) | has_zero_byte(xor4) | has_zero_byte(xor5);
    -      if(is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -    if (i < view.size()) {
    -      uint64_t word{};
    -      // performance: the next memcpy translates into a function call, but
    -      // that is difficult to avoid. Might be a bit expensive.
    -      memcpy(&word, view.data() + i, view.size() - i);
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      uint64_t xor4 = word ^ mask4;
    -      uint64_t xor5 = word ^ mask5;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3) | has_zero_byte(xor4) | has_zero_byte(xor5);
    -      if(is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -    return view.size();
    -  }
    -
    -  // starting at index location, this finds the next location of a character
    -  // :, /, ? or [. If none is found, view.size() is returned.
    -  // For use within get_host_delimiter_location.
    -  ada_really_inline size_t find_next_host_delimiter(std::string_view view, size_t location) noexcept {
    -    // performance: if you plan to call find_next_host_delimiter more than once,
    -    // you *really* want find_next_host_delimiter to be inlined, because
    -    // otherwise, the constants may get reloaded each time (bad).
    -    auto has_zero_byte = [](uint64_t v) {
    -      return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    -    };
    -    auto index_of_first_set_byte = [](uint64_t v) {
    -      return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    -    };
    -    auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    -    size_t i = location;
    -    uint64_t mask1 = broadcast(':');
    -    uint64_t mask2 = broadcast('/');
    -    uint64_t mask4 = broadcast('?');
    -    uint64_t mask5 = broadcast('[');
    -    // This loop will get autovectorized under many optimizing compilers,
    -    // so you get actually SIMD!
    -    for (; i + 7 < view.size(); i += 8) {
    -      uint64_t word{};
    -      // performance: the next memcpy translates into a single CPU instruction.
    -      memcpy(&word, view.data() + i, sizeof(word));
    -      // performance: on little-endian systems (most systems), this next line is free.
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor4 = word ^ mask4;
    -      uint64_t xor5 = word ^ mask5;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor4) | has_zero_byte(xor5);
    -      if(is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -    if (i < view.size()) {
    -      uint64_t word{};
    -      // performance: the next memcpy translates into a function call, but
    -      // that is difficult to avoid. Might be a bit expensive.
    -      memcpy(&word, view.data() + i, view.size() - i);
    -      // performance: on little-endian systems (most systems), this next line is free.
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor4 = word ^ mask4;
    -      uint64_t xor5 = word ^ mask5;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor4) | has_zero_byte(xor5);
    -      if(is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -    return view.size();
    -  }
    -
    -  ada_really_inline std::pair get_host_delimiter_location(const bool is_special, std::string_view& view) noexcept {
    -    /**
    -     * The spec at https://url.spec.whatwg.org/#hostname-state expects us to compute
    -     * a variable called insideBrackets but this variable is only used once, to check
    -     * whether a ':' character was found outside brackets.
    -     * Exact text:
    -     * "Otherwise, if c is U+003A (:) and insideBrackets is false, then:".
    -     * It is conceptually simpler and arguably more efficient to just return a Boolean
    -     * indicating whether ':' was found outside brackets.
    -     */
    -    const size_t view_size = view.size();
    -    size_t location = 0;
    -    bool found_colon = false;
    -    /**
    -     * Performance analysis:
    -     *
    -     * We are basically seeking the end of the hostname which can be indicated
    -     * by the end of the view, or by one of the characters ':', '/', '?', '\\' (where '\\' is only
    -     * applicable for special URLs). However, these must appear outside a bracket range. E.g.,
    -     * if you have [something?]fd: then the '?' does not count.
    -     *
    -     * So we can skip ahead to the next delimiter, as long as we include '[' in the set of delimiters,
    -     * and that we handle it first.
    -     *
    -     * So the trick is to have a fast function that locates the next delimiter. Unless we find '[',
    -     * then it only needs to be called once! Ideally, such a function would be provided by the C++
    -     * standard library, but it seems that find_first_of is not very fast, so we are forced to roll
    -     * our own.
    -     *
    -     * We do not break into two loops for speed, but for clarity.
    -     */
    -    if(is_special) {
    -      // We move to the next delimiter.
    -      location = find_next_host_delimiter_special(view, location);
    -      // Unless we find '[' then we are going only going to have to call
    -      // find_next_host_delimiter_special once.
    -      for (;location < view_size; location = find_next_host_delimiter_special(view, location)) {
    -        if (view[location] == '[') {
    -          location = view.find(']', location);
    -          if (location == std::string_view::npos) {
    -            // performance: view.find might get translated to a memchr, which
    -            // has no notion of std::string_view::npos, so the code does not
    -            // reflect the assembly.
    -            location = view_size;
    -            break;
    -          }
    -        } else {
    -          found_colon = view[location] == ':';
    -          break;
    -        }
    -      }
    -    } else {
    -      // We move to the next delimiter.
    -      location = find_next_host_delimiter(view, location);
    -      // Unless we find '[' then we are going only going to have to call
    -      // find_next_host_delimiter_special once.
    -      for (;location < view_size; location = find_next_host_delimiter(view, location)) {
    -        if (view[location] == '[') {
    -          location = view.find(']', location);
    -          if (location == std::string_view::npos) {
    -            // performance: view.find might get translated to a memchr, which
    -            // has no notion of std::string_view::npos, so the code does not
    -            // reflect the assembly.
    -            location = view_size;
    -            break;
    +  // If needed, allocate enough space and perform the decomposition.
    +  if (any_decomposition) {
    +    str.resize(str.size() + additional);
    +    for (size_t dec = str.size(), old = dec - additional; old--;)
    +      if (str[old] >= Hangul::SBase &&
    +          str[old] < Hangul::SBase + Hangul::SCount) {
    +        // Hangul decomposition.
    +        char32_t s_index = str[old] - Hangul::SBase;
    +        if (s_index % Hangul::TCount)
    +          str[--dec] = Hangul::TBase + s_index % Hangul::TCount;
    +        str[--dec] =
    +            Hangul::VBase + (s_index % Hangul::NCount) / Hangul::TCount;
    +        str[--dec] = Hangul::LBase + s_index / Hangul::NCount;
    +      } else if (str[old] < CHARS) {
    +        // Check decomposition_data.
    +        auto decomposition =
    +            &decomposition_block[decomposition_index[str[old] >> 8]]
    +                                [str[old] & 0xFF];
    +        int decomposition_len =
    +            (decomposition[1] >> 2) - (decomposition[0] >> 2);
    +        if (decomposition_len && !kompatibility && (decomposition[0] & 1))
    +          decomposition_len = 0;
    +        if (decomposition_len && kompatibility && (decomposition[0] & 2)) {
    +          // Further kompatibility decomposition.
    +          while (decomposition_len--) {
    +            auto chr =
    +                decomposition_data[(decomposition[0] >> 2) + decomposition_len];
    +            auto further_decomposition =
    +                &decomposition_block[decomposition_index[chr >> 8]][chr & 0xFF];
    +            if (further_decomposition[0] & 1) {
    +              for (int further_decomposition_len =
    +                       (further_decomposition[1] >> 2) -
    +                       (further_decomposition[0] >> 2);
    +                   further_decomposition_len--;)
    +                str[--dec] =
    +                    decomposition_data[(further_decomposition[0] >> 2) +
    +                                       further_decomposition_len];
    +            } else {
    +              str[--dec] = chr;
    +            }
               }
    +        } else if (decomposition_len) {
    +          // Non-recursive decomposition.
    +          while (decomposition_len--)
    +            str[--dec] =
    +                decomposition_data[(decomposition[0] >> 2) + decomposition_len];
             } else {
    -          found_colon = view[location] == ':';
    -          break;
    +          // No decomposition.
    +          str[--dec] = str[old];
             }
    +      } else {
    +        // Non-Unicode character.
    +        str[--dec] = str[old];
           }
    -    }
    -    // performance: remove_suffix may translate into a single instruction.
    -    view.remove_suffix(view_size - location);
    -    return {location, found_colon};
       }
     
    -  ada_really_inline void trim_c0_whitespace(std::string_view& input) noexcept {
    -    while(!input.empty() && ada::unicode::is_c0_control_or_space(input.front())) { input.remove_prefix(1); }
    -    while(!input.empty() && ada::unicode::is_c0_control_or_space(input.back())) { input.remove_suffix(1); }
    +  // Sort combining marks.
    +  for (size_t i = 1; i < str.size(); i++) {
    +    unsigned ccc =
    +        str[i] < CHARS ? ccc_block[ccc_index[str[i] >> 8]][str[i] & 0xFF] : 0;
    +    if (!ccc) continue;
    +
    +    auto chr = str[i];
    +    size_t j;
    +    for (j = i;
    +         j && (str[j - 1] < CHARS
    +                   ? ccc_block[ccc_index[str[j - 1] >> 8]][str[j - 1] & 0xFF]
    +                   : 0) > ccc;
    +         j--)
    +      str[j] = str[j - 1];
    +    str[j] = chr;
       }
    +}
     
    +// Data fields
    +const char32_t uninorms::CHARS;
    +
    +const char32_t uninorms::Hangul::SBase;
    +const char32_t uninorms::Hangul::LBase;
    +const char32_t uninorms::Hangul::VBase;
    +const char32_t uninorms::Hangul::TBase;
    +const char32_t uninorms::Hangul::LCount;
    +const char32_t uninorms::Hangul::VCount;
    +const char32_t uninorms::Hangul::TCount;
    +const char32_t uninorms::Hangul::NCount;
    +const char32_t uninorms::Hangul::SCount;
    +
    +const uint8_t uninorms::ccc_index[uninorms::CHARS >> 8] = {
    +    0,  0,  0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 0,  0,
    +    15, 0,  0,  0,  16, 17, 18, 19, 20, 21, 22, 0,  0,  23, 0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  24, 25, 0,  0,  26, 0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  27, 0,  28, 29, 30,
    +    31, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  32, 0,  0,  33, 0,  0,  34, 35, 36, 0,  0,  0,  0,  0,  0,
    +    37, 0,  0,  38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 0,  52,
    +    53, 0,  54, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  55, 56, 0,  0,  0,  57, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  58, 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  59, 60, 0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  61, 56, 62, 0,  63, 0,  0,  0,  64, 65, 0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    +    0};
    +const uint8_t uninorms::ccc_block[][256] = {
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
    +     230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220,
    +     220, 220, 220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220,
    +     220, 220, 220, 220, 220, 220, 220, 1,   1,   1,   1,   1,   220, 220, 220,
    +     220, 230, 230, 230, 230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230,
    +     230, 230, 220, 220, 0,   230, 230, 230, 220, 220, 220, 220, 230, 232, 220,
    +     220, 230, 233, 234, 234, 233, 234, 234, 233, 230, 230, 230, 230, 230, 230,
    +     230, 230, 230, 230, 230, 230, 230, 0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0},
    +    {0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230,
    +     230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   220, 230, 230, 230, 230,
    +     220, 230, 230, 230, 222, 220, 230, 230, 230, 230, 230, 230, 220, 220, 220,
    +     220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10,  11,  12,  13,
    +     14,  15,  16,  17,  18,  19,  19,  20,  21,  22,  0,   23,  0,   24,  25,
    +     0,   230, 220, 0,   18,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   230, 230, 230, 230, 230, 230, 230, 230, 30,  31,  32,  0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     27,  28,  29,  30,  31,  32,  33,  34,  230, 230, 220, 220, 230, 230, 230,
    +     230, 230, 220, 230, 230, 220, 0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   35,  0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   230, 230, 230, 230, 230, 230, 230, 0,   0,   230, 230,
    +     230, 230, 220, 230, 0,   0,   230, 230, 0,   220, 230, 230, 220, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   36,  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220,
    +     220, 230, 220, 230, 230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230, 230, 230, 230, 230,
    +     230, 230, 220, 230, 0,   0,   0,   0,   0,   0,   0,   0,   0,   220, 0,
    +     0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   230, 230, 230, 230, 0,   230, 230, 230,
    +     230, 230, 230, 230, 230, 230, 0,   230, 230, 230, 0,   230, 230, 230, 230,
    +     230, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   220,
    +     220, 220, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   230, 220, 220, 220, 230, 230, 230, 230, 0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   230, 230, 230, 230, 230, 220, 220, 220,
    +     220, 220, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
    +     230, 0,   220, 230, 230, 220, 230, 230, 220, 230, 230, 230, 220, 220, 220,
    +     27,  28,  29,  230, 230, 230, 220, 230, 230, 220, 220, 230, 230, 230, 230,
    +     230},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   7,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,   0, 0, 230, 220, 230, 230, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0,   0,   0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 7, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0,  0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   103, 103, 9,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     107, 107, 107, 107, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   118, 118, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   122, 122, 122, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0},
    +    {0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   220, 220, 0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 220, 0,   220, 0,   216, 0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 129, 130, 0,   132, 0,   0, 0,
    +     0,   0, 130, 130, 130, 130, 0, 0, 130, 0,   230, 230, 9,   0, 230,
    +     230, 0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   220, 0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0,   0, 0,   0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0, 0,
    +     0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 9, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 230, 220, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   230, 220, 0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   9,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230, 230, 230,
    +     230, 230, 230, 230, 230, 0,   0,   220, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230, 230, 230, 230,
    +     230, 220, 220, 220, 220, 220, 220, 230, 230, 220, 0,   220, 220, 230, 230,
    +     220, 220, 230, 230, 230, 230, 230, 220, 230, 230, 230, 230, 0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0},
    +    {0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   7,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 230, 230, 230, 230,
    +     230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   9,
    +     9,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   9,   9,   0,   0,   0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0},
    +    {0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   7,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230, 230,
    +     230, 0, 1, 220, 220, 220, 220, 220, 230, 230, 220, 220, 220, 220, 230,
    +     0,   1, 1, 1,   1,   1,   1,   1,   0,   0,   0,   0,   220, 0,   0,
    +     0,   0, 0, 0,   230, 0,   0,   0,   230, 230, 0,   0,   0,   0,   0,
    +     0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230, 230, 220,
    +     230, 230, 230, 230, 230, 230, 230, 220, 230, 230, 234, 214, 220, 202, 230,
    +     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
    +     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
    +     230, 230, 230, 230, 230, 230, 232, 228, 228, 220, 218, 230, 233, 220, 230,
    +     220},
    +    {0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,
    +     230, 230, 1, 1, 230, 230, 230, 230, 1,   1,   1, 230, 230, 0,   0,   0,
    +     0,   230, 0, 0, 0,   1,   1,   230, 220, 230, 1, 1,   220, 220, 220, 220,
    +     230, 0,   0, 0, 0,   0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   9,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230,
    +     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
    +     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
    +     230},
    +    {0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 218, 228, 232, 222, 224, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230,
    +     0,   0,   0, 0, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230, 230,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     230, 230, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0},
    +    {0,   0,   0,   0,   0,   0,   9,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   9,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   9,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   230,
    +     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
    +     230, 230, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0},
    +    {0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220,
    +     220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 230, 0, 230, 230, 220, 0, 0, 230, 230, 0, 0, 0, 0, 0,
    +     230, 230, 0, 230, 0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 0,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0,   0,   0, 0, 0,   0,   0, 0, 0, 0, 9,
    +     0,   0,   0, 0,   0, 0,   0, 0,   0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   230, 230, 230, 230, 230, 230, 230, 220, 220, 220, 220, 220, 220,
    +     220, 230, 230, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 220, 0, 230, 0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   230, 1, 220, 0,
    +     0, 0, 0, 9, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 0, 0, 0,   0, 0,   0,   0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,   0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 230, 230, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,  0, 0, 0, 0,   0,   0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220},
    +    {0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 220, 220,
    +     230, 230, 230, 220, 230, 220, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   230, 220, 230, 220, 0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0,   0,   0,   0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 9, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   7,   7,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   9, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0,
    +     230, 230, 230, 230, 230, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0,
    +     0,   0,   0,   0,   0,   0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 7,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
    +     7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 7, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 9, 9, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 216, 216, 1,   1,   1,   0,   0,   0,   226, 216, 216,
    +     216, 216, 216, 0, 0, 0,   0,   0,   0,   0,   0,   220, 220, 220, 220, 220,
    +     220, 220, 220, 0, 0, 230, 230, 230, 230, 230, 220, 220, 0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   230, 230, 230, 230, 0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0, 0, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0},
    +    {0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0,   0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {230, 230, 230, 230, 230, 230, 230, 0,   230, 230, 230, 230, 230, 230, 230,
    +     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0,   0,   230, 230, 230,
    +     230, 230, 230, 230, 0,   230, 230, 0,   230, 230, 230, 230, 230, 0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   230, 0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
    +     0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   230, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 0,   0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 232, 220, 230, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 220, 220, 220, 220, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0,   0},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 230, 7, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0,   0, 0}};
    +
    +const uint8_t uninorms::composition_index[uninorms::CHARS >> 8] = {
    +    0, 1, 2, 3, 4,  5,  6, 5, 5,  7,  5, 8,  9,  10, 5, 5, 11, 5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  12, 5, 5, 13, 14, 5, 15, 16, 5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 17, 5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 18, 19, 5, 20, 21, 22, 5, 5, 5,  23, 5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5,  5, 5, 5, 5,
    +    5, 5, 5, 5, 5,  5,  5, 5, 5,  5,  5, 5,  5,  5,  5, 5, 5,  5};
    +const uint16_t uninorms::composition_block[][257] = {
    +    {1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
    +     1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
    +     1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
    +     1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
    +     1,   3,   5,   7,   7,   7,   39,  45,  55,  67,  101, 103, 117, 131, 161,
    +     163, 173, 185, 191, 209, 241, 245, 245, 261, 275, 289, 327, 331, 343, 347,
    +     365, 377, 377, 377, 377, 377, 377, 377, 409, 415, 425, 437, 471, 473, 487,
    +     503, 531, 535, 545, 557, 563, 581, 613, 617, 617, 633, 647, 663, 701, 705,
    +     719, 723, 743, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
    +     755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
    +     755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
    +     755, 755, 755, 755, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
    +     761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
    +     769, 769, 771, 773, 777, 779, 779, 779, 787, 787, 787, 787, 787, 789, 789,
    +     789, 789, 789, 797, 803, 805, 805, 807, 807, 807, 807, 815, 815, 815, 815,
    +     815, 815, 823, 823, 825, 827, 831, 833, 833, 833, 841, 841, 841, 841, 841,
    +     843, 843, 843, 843, 843, 851, 857, 859, 859, 861, 861, 861, 861, 869, 869,
    +     869, 869},
    +    {869, 869, 869, 877, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885, 885,
    +     885, 885, 885, 885, 889, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
    +     893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
    +     893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
    +     893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893, 893,
    +     893, 893, 897, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901, 901,
    +     901, 903, 905, 905, 905, 905, 905, 907, 909, 909, 909, 909, 909, 909, 909,
    +     911, 913, 915, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917, 917,
    +     917, 917, 917, 917, 917, 917, 917, 917, 919, 919, 919, 919, 919, 919, 919,
    +     919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919,
    +     919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, 929, 939, 939, 939,
    +     939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, 949, 959, 959, 959,
    +     959, 959, 959, 959, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961,
    +     961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961,
    +     961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 961,
    +     961, 961, 961, 961, 961, 961, 961, 961, 961, 961, 963, 965, 965, 965, 965,
    +     965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965,
    +     965, 965},
    +    {965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965,
    +     965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, 965,
    +     965, 965, 965, 965, 965, 965, 965, 965, 965, 967, 969, 971, 973, 973, 973,
    +     973, 973, 975, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977,
    +     977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977,
    +     977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977,
    +     977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977,
    +     977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977,
    +     977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977,
    +     977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 977, 979, 979, 979,
    +     979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979,
    +     979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979,
    +     979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979,
    +     979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979,
    +     979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979,
    +     979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979,
    +     979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979, 979,
    +     979, 979},
    +    {979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    +     979,  979,  993,  993,  993,  993,  1001, 1001, 1011, 1011, 1025, 1025,
    +     1025, 1025, 1025, 1025, 1033, 1033, 1035, 1035, 1035, 1035, 1047, 1047,
    +     1047, 1047, 1057, 1057, 1057, 1059, 1059, 1061, 1061, 1061, 1077, 1077,
    +     1077, 1077, 1085, 1085, 1097, 1097, 1113, 1113, 1113, 1113, 1113, 1113,
    +     1121, 1121, 1125, 1125, 1125, 1125, 1141, 1141, 1141, 1141, 1153, 1159,
    +     1165, 1165, 1165, 1167, 1167, 1167, 1167, 1171, 1171, 1171, 1171, 1171,
    +     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
    +     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
    +     1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1171,
    +     1171, 1171, 1171, 1171, 1171},
    +    {1171, 1171, 1171, 1171, 1171, 1171, 1171, 1173, 1173, 1173, 1173, 1173,
    +     1173, 1173, 1173, 1173, 1173, 1177, 1177, 1177, 1179, 1179, 1185, 1189,
    +     1191, 1199, 1199, 1201, 1201, 1201, 1201, 1203, 1203, 1203, 1203, 1203,
    +     1211, 1211, 1211, 1211, 1213, 1213, 1213, 1213, 1215, 1215, 1217, 1217,
    +     1217, 1221, 1221, 1221, 1223, 1223, 1229, 1233, 1235, 1243, 1243, 1245,
    +     1245, 1245, 1245, 1247, 1247, 1247, 1247, 1247, 1255, 1255, 1255, 1255,
    +     1257, 1257, 1257, 1257, 1259, 1259, 1261, 1261, 1261, 1261, 1261, 1261,
    +     1261, 1261, 1261, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
    +     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263,
    +     1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1263, 1265, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
    +     1267, 1269, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
    +     1271, 1271, 1271, 1271, 1271, 1273, 1275, 1275, 1275, 1275, 1275, 1275,
    +     1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
    +     1275, 1275, 1275, 1275, 1275},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
    +     1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
    +     1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275, 1275,
    +     1275, 1275, 1275, 1275, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
    +     1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
    +     1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281, 1281,
    +     1281, 1283, 1283, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285, 1285,
    +     1285, 1285, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287, 1287,
    +     1287, 1287, 1287, 1287, 1287, 1287, 1287, 1289, 1289, 1289, 1291, 1291,
    +     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
    +     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
    +     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
    +     1291, 1291, 1291, 1291, 1291},
    +    {1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
    +     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
    +     1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291, 1291,
    +     1291, 1291, 1291, 1291, 1291, 1293, 1293, 1293, 1293, 1293, 1293, 1293,
    +     1293, 1295, 1295, 1295, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297,
    +     1297, 1297, 1297, 1297, 1297, 1297, 1297, 1297, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301},
    +    {1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301, 1301,
    +     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
    +     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
    +     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
    +     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
    +     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
    +     1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307, 1307,
    +     1307, 1307, 1307, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
    +     1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
    +     1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
    +     1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309, 1309,
    +     1309, 1309, 1309, 1309, 1309, 1309, 1309, 1313, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315},
    +    {1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315,
    +     1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1315, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317, 1317,
    +     1319, 1319, 1319, 1319, 1319, 1319, 1319, 1325, 1325, 1325, 1325, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327},
    +    {1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327,
    +     1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1327, 1331,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333, 1333,
    +     1333, 1333, 1339, 1339, 1339, 1341, 1341, 1341, 1341, 1341, 1341, 1341,
    +     1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341,
    +     1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341,
    +     1341, 1341, 1341, 1341, 1341},
    +    {1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341,
    +     1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341,
    +     1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341, 1341,
    +     1341, 1341, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343, 1343,
    +     1343, 1343, 1343, 1343, 1343},
    +    {1343, 1343, 1343, 1343, 1343, 1343, 1345, 1345, 1347, 1347, 1349, 1349,
    +     1351, 1351, 1353, 1353, 1353, 1353, 1355, 1355, 1355, 1355, 1355, 1355,
    +     1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355,
    +     1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355,
    +     1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1355, 1357,
    +     1357, 1359, 1359, 1361, 1363, 1363, 1363, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365},
    +    {1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
    +     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1367, 1369, 1369, 1369, 1369,
    +     1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369,
    +     1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369,
    +     1369, 1369, 1369, 1369, 1369, 1369, 1369, 1371, 1373, 1373, 1373, 1373,
    +     1373, 1373, 1373, 1375, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377,
    +     1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377,
    +     1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377,
    +     1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377,
    +     1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377,
    +     1377, 1377, 1377, 1377, 1377, 1381, 1385, 1385, 1385, 1385, 1385, 1385,
    +     1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385, 1385,
    +     1385, 1385, 1385, 1385, 1385, 1387, 1389, 1389, 1389, 1389, 1389, 1389,
    +     1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
    +     1389, 1391, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393,
    +     1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393,
    +     1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393,
    +     1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393, 1393,
    +     1393, 1393, 1393, 1393, 1393},
    +    {1393, 1401, 1409, 1411, 1413, 1415, 1417, 1419, 1421, 1429, 1437, 1439,
    +     1441, 1443, 1445, 1447, 1449, 1453, 1457, 1457, 1457, 1457, 1457, 1457,
    +     1457, 1461, 1465, 1465, 1465, 1465, 1465, 1465, 1465, 1473, 1481, 1483,
    +     1485, 1487, 1489, 1491, 1493, 1501, 1509, 1511, 1513, 1515, 1517, 1519,
    +     1521, 1527, 1533, 1533, 1533, 1533, 1533, 1533, 1533, 1539, 1545, 1545,
    +     1545, 1545, 1545, 1545, 1545, 1549, 1553, 1553, 1553, 1553, 1553, 1553,
    +     1553, 1557, 1561, 1561, 1561, 1561, 1561, 1561, 1561, 1567, 1573, 1573,
    +     1573, 1573, 1573, 1573, 1573, 1573, 1579, 1579, 1579, 1579, 1579, 1579,
    +     1579, 1587, 1595, 1597, 1599, 1601, 1603, 1605, 1607, 1615, 1623, 1625,
    +     1627, 1629, 1631, 1633, 1635, 1637, 1637, 1637, 1637, 1639, 1639, 1639,
    +     1639, 1639, 1639, 1639, 1639, 1641, 1641, 1641, 1641, 1641, 1641, 1641,
    +     1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641,
    +     1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641,
    +     1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641,
    +     1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641, 1641,
    +     1641, 1641, 1641, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
    +     1649, 1649, 1649, 1649, 1649, 1649, 1649, 1651, 1651, 1651, 1651, 1651,
    +     1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651,
    +     1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651,
    +     1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651, 1651,
    +     1651, 1651, 1651, 1651, 1651, 1651, 1651, 1653, 1653, 1653, 1653, 1653,
    +     1653, 1653, 1653, 1659, 1659},
    +    {1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659, 1659,
    +     1659, 1661, 1661, 1663, 1663, 1665, 1665, 1665, 1665, 1665, 1665, 1665,
    +     1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665,
    +     1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665,
    +     1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665,
    +     1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665, 1665,
    +     1665, 1665, 1665, 1665, 1665, 1667, 1667, 1669, 1669, 1671, 1671, 1671,
    +     1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
    +     1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
    +     1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1671,
    +     1671, 1671, 1671, 1671, 1671},
    +    {1671, 1671, 1671, 1671, 1673, 1673, 1673, 1673, 1673, 1675, 1675, 1675,
    +     1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
    +     1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677, 1677,
    +     1679, 1679, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
    +     1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681,
    +     1681, 1683, 1683, 1683, 1683, 1683, 1683, 1683, 1685, 1685, 1687, 1687,
    +     1687, 1689, 1689, 1689, 1689, 1689, 1691, 1691, 1691, 1691, 1691, 1691,
    +     1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691,
    +     1691, 1691, 1693, 1693, 1693, 1695, 1697, 1697, 1697, 1697, 1697, 1697,
    +     1697, 1697, 1697, 1697, 1697, 1697, 1697, 1699, 1701, 1701, 1701, 1703,
    +     1705, 1705, 1705, 1707, 1709, 1711, 1713, 1713, 1713, 1713, 1713, 1715,
    +     1717, 1717, 1717, 1719, 1721, 1721, 1721, 1721, 1721, 1721, 1721, 1721,
    +     1721, 1721, 1723, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725, 1725,
    +     1725, 1725, 1725, 1725, 1725, 1725, 1725, 1727, 1727, 1727, 1727, 1727,
    +     1727, 1729, 1731, 1731, 1733, 1733, 1733, 1733, 1733, 1733, 1733, 1735,
    +     1737, 1739, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741},
    +    {1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741,
    +     1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1741, 1743,
    +     1743, 1743, 1743, 1743, 1745, 1745, 1747, 1747, 1749, 1749, 1751, 1751,
    +     1753, 1753, 1755, 1755, 1757, 1757, 1759, 1759, 1761, 1761, 1763, 1763,
    +     1765, 1765, 1767, 1767, 1767, 1769, 1769, 1771, 1771, 1773, 1773, 1773,
    +     1773, 1773, 1773, 1773, 1777, 1777, 1777, 1781, 1781, 1781, 1785, 1785,
    +     1785, 1789, 1789, 1789, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
    +     1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
    +     1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793, 1793,
    +     1793, 1793, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1795, 1797,
    +     1797, 1797, 1797, 1797, 1799, 1799, 1801, 1801, 1803, 1803, 1805, 1805,
    +     1807, 1807, 1809, 1809, 1811, 1811, 1813, 1813, 1815, 1815, 1817, 1817,
    +     1819, 1819, 1821, 1821, 1821, 1823, 1823, 1825, 1825, 1827, 1827, 1827,
    +     1827, 1827, 1827, 1827, 1831, 1831, 1831, 1835, 1835, 1835, 1839, 1839,
    +     1839, 1843, 1843, 1843, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
    +     1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847, 1847,
    +     1849, 1851, 1853, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855, 1855,
    +     1855, 1855, 1857, 1857, 1857},
    +    {1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857,
    +     1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1857, 1859, 1859,
    +     1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863},
    +    {1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863, 1863,
    +     1863, 1863, 1865, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867},
    +    {1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867, 1867,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871},
    +    {1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871, 1871,
    +     1871, 1871, 1871, 1871, 1871, 1871, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877},
    +    {1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877, 1877,
    +     1877, 1877, 1877, 1877, 1877, 1879, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881},
    +    {1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881, 1881,
    +     1881, 1881, 1881, 1881, 1881, 1881, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883, 1883,
    +     1883, 1883, 1883, 1883, 1883}};
    +const char32_t uninorms::composition_data[] = {
    +    0,     824,   8814,  824,   8800,  824,   8815,  768,   192,   769,   193,
    +    770,   194,   771,   195,   772,   256,   774,   258,   775,   550,   776,
    +    196,   777,   7842,  778,   197,   780,   461,   783,   512,   785,   514,
    +    803,   7840,  805,   7680,  808,   260,   775,   7682,  803,   7684,  817,
    +    7686,  769,   262,   770,   264,   775,   266,   780,   268,   807,   199,
    +    775,   7690,  780,   270,   803,   7692,  807,   7696,  813,   7698,  817,
    +    7694,  768,   200,   769,   201,   770,   202,   771,   7868,  772,   274,
    +    774,   276,   775,   278,   776,   203,   777,   7866,  780,   282,   783,
    +    516,   785,   518,   803,   7864,  807,   552,   808,   280,   813,   7704,
    +    816,   7706,  775,   7710,  769,   500,   770,   284,   772,   7712,  774,
    +    286,   775,   288,   780,   486,   807,   290,   770,   292,   775,   7714,
    +    776,   7718,  780,   542,   803,   7716,  807,   7720,  814,   7722,  768,
    +    204,   769,   205,   770,   206,   771,   296,   772,   298,   774,   300,
    +    775,   304,   776,   207,   777,   7880,  780,   463,   783,   520,   785,
    +    522,   803,   7882,  808,   302,   816,   7724,  770,   308,   769,   7728,
    +    780,   488,   803,   7730,  807,   310,   817,   7732,  769,   313,   780,
    +    317,   803,   7734,  807,   315,   813,   7740,  817,   7738,  769,   7742,
    +    775,   7744,  803,   7746,  768,   504,   769,   323,   771,   209,   775,
    +    7748,  780,   327,   803,   7750,  807,   325,   813,   7754,  817,   7752,
    +    768,   210,   769,   211,   770,   212,   771,   213,   772,   332,   774,
    +    334,   775,   558,   776,   214,   777,   7886,  779,   336,   780,   465,
    +    783,   524,   785,   526,   795,   416,   803,   7884,  808,   490,   769,
    +    7764,  775,   7766,  769,   340,   775,   7768,  780,   344,   783,   528,
    +    785,   530,   803,   7770,  807,   342,   817,   7774,  769,   346,   770,
    +    348,   775,   7776,  780,   352,   803,   7778,  806,   536,   807,   350,
    +    775,   7786,  780,   356,   803,   7788,  806,   538,   807,   354,   813,
    +    7792,  817,   7790,  768,   217,   769,   218,   770,   219,   771,   360,
    +    772,   362,   774,   364,   776,   220,   777,   7910,  778,   366,   779,
    +    368,   780,   467,   783,   532,   785,   534,   795,   431,   803,   7908,
    +    804,   7794,  808,   370,   813,   7798,  816,   7796,  771,   7804,  803,
    +    7806,  768,   7808,  769,   7810,  770,   372,   775,   7814,  776,   7812,
    +    803,   7816,  775,   7818,  776,   7820,  768,   7922,  769,   221,   770,
    +    374,   771,   7928,  772,   562,   775,   7822,  776,   376,   777,   7926,
    +    803,   7924,  769,   377,   770,   7824,  775,   379,   780,   381,   803,
    +    7826,  817,   7828,  768,   224,   769,   225,   770,   226,   771,   227,
    +    772,   257,   774,   259,   775,   551,   776,   228,   777,   7843,  778,
    +    229,   780,   462,   783,   513,   785,   515,   803,   7841,  805,   7681,
    +    808,   261,   775,   7683,  803,   7685,  817,   7687,  769,   263,   770,
    +    265,   775,   267,   780,   269,   807,   231,   775,   7691,  780,   271,
    +    803,   7693,  807,   7697,  813,   7699,  817,   7695,  768,   232,   769,
    +    233,   770,   234,   771,   7869,  772,   275,   774,   277,   775,   279,
    +    776,   235,   777,   7867,  780,   283,   783,   517,   785,   519,   803,
    +    7865,  807,   553,   808,   281,   813,   7705,  816,   7707,  775,   7711,
    +    769,   501,   770,   285,   772,   7713,  774,   287,   775,   289,   780,
    +    487,   807,   291,   770,   293,   775,   7715,  776,   7719,  780,   543,
    +    803,   7717,  807,   7721,  814,   7723,  817,   7830,  768,   236,   769,
    +    237,   770,   238,   771,   297,   772,   299,   774,   301,   776,   239,
    +    777,   7881,  780,   464,   783,   521,   785,   523,   803,   7883,  808,
    +    303,   816,   7725,  770,   309,   780,   496,   769,   7729,  780,   489,
    +    803,   7731,  807,   311,   817,   7733,  769,   314,   780,   318,   803,
    +    7735,  807,   316,   813,   7741,  817,   7739,  769,   7743,  775,   7745,
    +    803,   7747,  768,   505,   769,   324,   771,   241,   775,   7749,  780,
    +    328,   803,   7751,  807,   326,   813,   7755,  817,   7753,  768,   242,
    +    769,   243,   770,   244,   771,   245,   772,   333,   774,   335,   775,
    +    559,   776,   246,   777,   7887,  779,   337,   780,   466,   783,   525,
    +    785,   527,   795,   417,   803,   7885,  808,   491,   769,   7765,  775,
    +    7767,  769,   341,   775,   7769,  780,   345,   783,   529,   785,   531,
    +    803,   7771,  807,   343,   817,   7775,  769,   347,   770,   349,   775,
    +    7777,  780,   353,   803,   7779,  806,   537,   807,   351,   775,   7787,
    +    776,   7831,  780,   357,   803,   7789,  806,   539,   807,   355,   813,
    +    7793,  817,   7791,  768,   249,   769,   250,   770,   251,   771,   361,
    +    772,   363,   774,   365,   776,   252,   777,   7911,  778,   367,   779,
    +    369,   780,   468,   783,   533,   785,   535,   795,   432,   803,   7909,
    +    804,   7795,  808,   371,   813,   7799,  816,   7797,  771,   7805,  803,
    +    7807,  768,   7809,  769,   7811,  770,   373,   775,   7815,  776,   7813,
    +    778,   7832,  803,   7817,  775,   7819,  776,   7821,  768,   7923,  769,
    +    253,   770,   375,   771,   7929,  772,   563,   775,   7823,  776,   255,
    +    777,   7927,  778,   7833,  803,   7925,  769,   378,   770,   7825,  775,
    +    380,   780,   382,   803,   7827,  817,   7829,  768,   8173,  769,   901,
    +    834,   8129,  768,   7846,  769,   7844,  771,   7850,  777,   7848,  772,
    +    478,   769,   506,   769,   508,   772,   482,   769,   7688,  768,   7872,
    +    769,   7870,  771,   7876,  777,   7874,  769,   7726,  768,   7890,  769,
    +    7888,  771,   7894,  777,   7892,  769,   7756,  772,   556,   776,   7758,
    +    772,   554,   769,   510,   768,   475,   769,   471,   772,   469,   780,
    +    473,   768,   7847,  769,   7845,  771,   7851,  777,   7849,  772,   479,
    +    769,   507,   769,   509,   772,   483,   769,   7689,  768,   7873,  769,
    +    7871,  771,   7877,  777,   7875,  769,   7727,  768,   7891,  769,   7889,
    +    771,   7895,  777,   7893,  769,   7757,  772,   557,   776,   7759,  772,
    +    555,   769,   511,   768,   476,   769,   472,   772,   470,   780,   474,
    +    768,   7856,  769,   7854,  771,   7860,  777,   7858,  768,   7857,  769,
    +    7855,  771,   7861,  777,   7859,  768,   7700,  769,   7702,  768,   7701,
    +    769,   7703,  768,   7760,  769,   7762,  768,   7761,  769,   7763,  775,
    +    7780,  775,   7781,  775,   7782,  775,   7783,  769,   7800,  769,   7801,
    +    776,   7802,  776,   7803,  775,   7835,  768,   7900,  769,   7898,  771,
    +    7904,  777,   7902,  803,   7906,  768,   7901,  769,   7899,  771,   7905,
    +    777,   7903,  803,   7907,  768,   7914,  769,   7912,  771,   7918,  777,
    +    7916,  803,   7920,  768,   7915,  769,   7913,  771,   7919,  777,   7917,
    +    803,   7921,  780,   494,   772,   492,   772,   493,   772,   480,   772,
    +    481,   774,   7708,  774,   7709,  772,   560,   772,   561,   780,   495,
    +    768,   8122,  769,   902,   772,   8121,  774,   8120,  787,   7944,  788,
    +    7945,  837,   8124,  768,   8136,  769,   904,   787,   7960,  788,   7961,
    +    768,   8138,  769,   905,   787,   7976,  788,   7977,  837,   8140,  768,
    +    8154,  769,   906,   772,   8153,  774,   8152,  776,   938,   787,   7992,
    +    788,   7993,  768,   8184,  769,   908,   787,   8008,  788,   8009,  788,
    +    8172,  768,   8170,  769,   910,   772,   8169,  774,   8168,  776,   939,
    +    788,   8025,  768,   8186,  769,   911,   787,   8040,  788,   8041,  837,
    +    8188,  837,   8116,  837,   8132,  768,   8048,  769,   940,   772,   8113,
    +    774,   8112,  787,   7936,  788,   7937,  834,   8118,  837,   8115,  768,
    +    8050,  769,   941,   787,   7952,  788,   7953,  768,   8052,  769,   942,
    +    787,   7968,  788,   7969,  834,   8134,  837,   8131,  768,   8054,  769,
    +    943,   772,   8145,  774,   8144,  776,   970,   787,   7984,  788,   7985,
    +    834,   8150,  768,   8056,  769,   972,   787,   8000,  788,   8001,  787,
    +    8164,  788,   8165,  768,   8058,  769,   973,   772,   8161,  774,   8160,
    +    776,   971,   787,   8016,  788,   8017,  834,   8166,  768,   8060,  769,
    +    974,   787,   8032,  788,   8033,  834,   8182,  837,   8179,  768,   8146,
    +    769,   912,   834,   8151,  768,   8162,  769,   944,   834,   8167,  837,
    +    8180,  769,   979,   776,   980,   776,   1031,  774,   1232,  776,   1234,
    +    769,   1027,  768,   1024,  774,   1238,  776,   1025,  774,   1217,  776,
    +    1244,  776,   1246,  768,   1037,  772,   1250,  774,   1049,  776,   1252,
    +    769,   1036,  776,   1254,  772,   1262,  774,   1038,  776,   1264,  779,
    +    1266,  776,   1268,  776,   1272,  776,   1260,  774,   1233,  776,   1235,
    +    769,   1107,  768,   1104,  774,   1239,  776,   1105,  774,   1218,  776,
    +    1245,  776,   1247,  768,   1117,  772,   1251,  774,   1081,  776,   1253,
    +    769,   1116,  776,   1255,  772,   1263,  774,   1118,  776,   1265,  779,
    +    1267,  776,   1269,  776,   1273,  776,   1261,  776,   1111,  783,   1142,
    +    783,   1143,  776,   1242,  776,   1243,  776,   1258,  776,   1259,  1619,
    +    1570,  1620,  1571,  1621,  1573,  1620,  1572,  1620,  1574,  1620,  1730,
    +    1620,  1747,  1620,  1728,  2364,  2345,  2364,  2353,  2364,  2356,  2494,
    +    2507,  2519,  2508,  2878,  2891,  2902,  2888,  2903,  2892,  3031,  2964,
    +    3006,  3018,  3031,  3020,  3006,  3019,  3158,  3144,  3285,  3264,  3266,
    +    3274,  3285,  3271,  3286,  3272,  3285,  3275,  3390,  3402,  3415,  3404,
    +    3390,  3403,  3530,  3546,  3535,  3548,  3551,  3550,  3530,  3549,  4142,
    +    4134,  6965,  6918,  6965,  6920,  6965,  6922,  6965,  6924,  6965,  6926,
    +    6965,  6930,  6965,  6971,  6965,  6973,  6965,  6976,  6965,  6977,  6965,
    +    6979,  772,   7736,  772,   7737,  772,   7772,  772,   7773,  775,   7784,
    +    775,   7785,  770,   7852,  774,   7862,  770,   7853,  774,   7863,  770,
    +    7878,  770,   7879,  770,   7896,  770,   7897,  768,   7938,  769,   7940,
    +    834,   7942,  837,   8064,  768,   7939,  769,   7941,  834,   7943,  837,
    +    8065,  837,   8066,  837,   8067,  837,   8068,  837,   8069,  837,   8070,
    +    837,   8071,  768,   7946,  769,   7948,  834,   7950,  837,   8072,  768,
    +    7947,  769,   7949,  834,   7951,  837,   8073,  837,   8074,  837,   8075,
    +    837,   8076,  837,   8077,  837,   8078,  837,   8079,  768,   7954,  769,
    +    7956,  768,   7955,  769,   7957,  768,   7962,  769,   7964,  768,   7963,
    +    769,   7965,  768,   7970,  769,   7972,  834,   7974,  837,   8080,  768,
    +    7971,  769,   7973,  834,   7975,  837,   8081,  837,   8082,  837,   8083,
    +    837,   8084,  837,   8085,  837,   8086,  837,   8087,  768,   7978,  769,
    +    7980,  834,   7982,  837,   8088,  768,   7979,  769,   7981,  834,   7983,
    +    837,   8089,  837,   8090,  837,   8091,  837,   8092,  837,   8093,  837,
    +    8094,  837,   8095,  768,   7986,  769,   7988,  834,   7990,  768,   7987,
    +    769,   7989,  834,   7991,  768,   7994,  769,   7996,  834,   7998,  768,
    +    7995,  769,   7997,  834,   7999,  768,   8002,  769,   8004,  768,   8003,
    +    769,   8005,  768,   8010,  769,   8012,  768,   8011,  769,   8013,  768,
    +    8018,  769,   8020,  834,   8022,  768,   8019,  769,   8021,  834,   8023,
    +    768,   8027,  769,   8029,  834,   8031,  768,   8034,  769,   8036,  834,
    +    8038,  837,   8096,  768,   8035,  769,   8037,  834,   8039,  837,   8097,
    +    837,   8098,  837,   8099,  837,   8100,  837,   8101,  837,   8102,  837,
    +    8103,  768,   8042,  769,   8044,  834,   8046,  837,   8104,  768,   8043,
    +    769,   8045,  834,   8047,  837,   8105,  837,   8106,  837,   8107,  837,
    +    8108,  837,   8109,  837,   8110,  837,   8111,  837,   8114,  837,   8130,
    +    837,   8178,  837,   8119,  768,   8141,  769,   8142,  834,   8143,  837,
    +    8135,  837,   8183,  768,   8157,  769,   8158,  834,   8159,  824,   8602,
    +    824,   8603,  824,   8622,  824,   8653,  824,   8655,  824,   8654,  824,
    +    8708,  824,   8713,  824,   8716,  824,   8740,  824,   8742,  824,   8769,
    +    824,   8772,  824,   8775,  824,   8777,  824,   8813,  824,   8802,  824,
    +    8816,  824,   8817,  824,   8820,  824,   8821,  824,   8824,  824,   8825,
    +    824,   8832,  824,   8833,  824,   8928,  824,   8929,  824,   8836,  824,
    +    8837,  824,   8840,  824,   8841,  824,   8930,  824,   8931,  824,   8876,
    +    824,   8877,  824,   8878,  824,   8879,  824,   8938,  824,   8939,  824,
    +    8940,  824,   8941,  12441, 12436, 12441, 12364, 12441, 12366, 12441, 12368,
    +    12441, 12370, 12441, 12372, 12441, 12374, 12441, 12376, 12441, 12378, 12441,
    +    12380, 12441, 12382, 12441, 12384, 12441, 12386, 12441, 12389, 12441, 12391,
    +    12441, 12393, 12441, 12400, 12442, 12401, 12441, 12403, 12442, 12404, 12441,
    +    12406, 12442, 12407, 12441, 12409, 12442, 12410, 12441, 12412, 12442, 12413,
    +    12441, 12446, 12441, 12532, 12441, 12460, 12441, 12462, 12441, 12464, 12441,
    +    12466, 12441, 12468, 12441, 12470, 12441, 12472, 12441, 12474, 12441, 12476,
    +    12441, 12478, 12441, 12480, 12441, 12482, 12441, 12485, 12441, 12487, 12441,
    +    12489, 12441, 12496, 12442, 12497, 12441, 12499, 12442, 12500, 12441, 12502,
    +    12442, 12503, 12441, 12505, 12442, 12506, 12441, 12508, 12442, 12509, 12441,
    +    12535, 12441, 12536, 12441, 12537, 12441, 12538, 12441, 12542, 69818, 69786,
    +    69818, 69788, 69818, 69803, 69927, 69934, 69927, 69935, 70462, 70475, 70487,
    +    70476, 70832, 70844, 70842, 70843, 70845, 70846, 71087, 71098, 71087, 71099,
    +    71984, 71992};
    +
    +const uint8_t uninorms::decomposition_index[uninorms::CHARS >> 8] = {
    +    0,  1,  2,  3,  4,  5,  6,  7,  7,  8,  9,  10, 11, 12, 13, 14, 15, 7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  16, 7,  17, 18, 19, 20, 21, 22, 23, 24, 7,
    +    7,  7,  7,  7,  25, 7,  26, 27, 28, 29, 30, 31, 32, 33, 7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  34, 35, 7,  7,  7,
    +    36, 7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  37, 38, 39, 40, 41, 42, 43, 7,  7,  7,  7,  7,  7,  7,  44, 7,  7,
    +    7,  7,  7,  7,  7,  7,  45, 46, 7,  47, 48, 49, 7,  7,  7,  50, 7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  51, 7,  52, 53, 54, 55, 56, 7,  7,  7,
    +    7,  7,  7,  7,  7,  57, 7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  58,
    +    59, 7,  60, 61, 62, 7,  7,  7,  7,  7,  7,  7,  7,  63, 7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    64, 65, 66, 7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
    +    7};
    +const uint16_t uninorms::decomposition_block[][257] = {
    +    {4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
    +     4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   5,   8,   8,   8,   8,
    +     8,   8,   8,   9,   16,  17,  20,  20,  20,  20,  21,  28,  28,  29,  33,
    +     37,  45,  48,  48,  49,  57,  61,  64,  65,  77,  89,  100, 100, 108, 116,
    +     124, 132, 140, 148, 148, 156, 164, 172, 180, 188, 196, 204, 212, 220, 220,
    +     228, 236, 244, 252, 260, 268, 268, 268, 276, 284, 292, 300, 308, 308, 308,
    +     316, 324, 332, 340, 348, 356, 356, 364, 372, 380, 388, 396, 404, 412, 420,
    +     428, 428, 436, 444, 452, 460, 468, 476, 476, 476, 484, 492, 500, 508, 516,
    +     516, 524},
    +    {524,  532,  540,  548,  556,  564,  572,  580,  588,  596,  604,  612,
    +     620,  628,  636,  644,  652,  652,  652,  660,  668,  676,  684,  692,
    +     700,  708,  716,  724,  732,  740,  748,  756,  764,  772,  780,  788,
    +     796,  804,  812,  812,  812,  820,  828,  836,  844,  852,  860,  868,
    +     876,  884,  885,  893,  900,  908,  916,  924,  932,  932,  940,  948,
    +     956,  964,  972,  981,  989,  996,  996,  996,  1004, 1012, 1020, 1028,
    +     1036, 1045, 1052, 1052, 1052, 1060, 1068, 1076, 1084, 1092, 1100, 1100,
    +     1100, 1108, 1116, 1124, 1132, 1140, 1148, 1156, 1164, 1172, 1180, 1188,
    +     1196, 1204, 1212, 1220, 1228, 1236, 1244, 1244, 1244, 1252, 1260, 1268,
    +     1276, 1284, 1292, 1300, 1308, 1316, 1324, 1332, 1340, 1348, 1356, 1364,
    +     1372, 1380, 1388, 1396, 1404, 1412, 1420, 1429, 1432, 1432, 1432, 1432,
    +     1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
    +     1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432, 1432,
    +     1432, 1432, 1432, 1432, 1432, 1440, 1448, 1448, 1448, 1448, 1448, 1448,
    +     1448, 1448, 1448, 1448, 1448, 1448, 1448, 1448, 1456, 1464, 1464, 1464,
    +     1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464, 1464,
    +     1464, 1464, 1464, 1464, 1465, 1477, 1489, 1501, 1509, 1517, 1525, 1533,
    +     1541, 1548, 1556, 1564, 1572, 1580, 1588, 1596, 1604, 1612, 1624, 1636,
    +     1648, 1660, 1672, 1684, 1696, 1708, 1708, 1720, 1732, 1744, 1756, 1764,
    +     1772, 1772, 1772, 1780, 1788, 1796, 1804, 1812, 1820, 1832, 1844, 1852,
    +     1860, 1869, 1877, 1885, 1892, 1900, 1908, 1908, 1908, 1916, 1924, 1936,
    +     1948, 1956, 1964, 1972, 1980},
    +    {1980, 1988, 1996, 2004, 2012, 2020, 2028, 2036, 2044, 2052, 2060, 2068,
    +     2076, 2084, 2092, 2100, 2108, 2116, 2124, 2132, 2140, 2148, 2156, 2164,
    +     2172, 2180, 2188, 2196, 2204, 2204, 2204, 2212, 2220, 2220, 2220, 2220,
    +     2220, 2220, 2220, 2228, 2236, 2244, 2252, 2264, 2276, 2288, 2300, 2308,
    +     2316, 2328, 2340, 2348, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356,
    +     2356, 2356, 2356, 2356, 2356, 2356, 2356, 2356, 2357, 2361, 2365, 2369,
    +     2373, 2377, 2381, 2385, 2389, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
    +     2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
    +     2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392, 2392,
    +     2393, 2401, 2409, 2417, 2425, 2433, 2440, 2440, 2441, 2445, 2449, 2453,
    +     2457, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
    +     2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
    +     2460, 2460, 2460, 2460, 2460},
    +    {2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
    +     2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
    +     2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
    +     2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
    +     2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460, 2460,
    +     2460, 2460, 2460, 2460, 2460, 2464, 2468, 2468, 2472, 2480, 2480, 2480,
    +     2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480,
    +     2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480,
    +     2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480,
    +     2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2484, 2484, 2484,
    +     2484, 2484, 2485, 2492, 2492, 2492, 2492, 2496, 2496, 2496, 2496, 2496,
    +     2497, 2506, 2512, 2520, 2524, 2532, 2540, 2548, 2548, 2556, 2556, 2564,
    +     2572, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584,
    +     2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584, 2584,
    +     2584, 2584, 2584, 2592, 2600, 2608, 2616, 2624, 2632, 2644, 2644, 2644,
    +     2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644,
    +     2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2644, 2652,
    +     2660, 2668, 2676, 2684, 2685, 2689, 2693, 2698, 2706, 2713, 2717, 2720,
    +     2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720,
    +     2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720,
    +     2721, 2725, 2729, 2732, 2733, 2737, 2740, 2740, 2740, 2741, 2744, 2744,
    +     2744, 2744, 2744, 2744, 2744},
    +    {2744, 2752, 2760, 2760, 2768, 2768, 2768, 2768, 2776, 2776, 2776, 2776,
    +     2776, 2784, 2792, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800, 2800,
    +     2800, 2800, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808,
    +     2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808,
    +     2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2808, 2816, 2816,
    +     2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816,
    +     2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2816, 2824, 2832, 2832,
    +     2840, 2840, 2840, 2840, 2848, 2848, 2848, 2848, 2848, 2856, 2864, 2872,
    +     2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872,
    +     2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2872, 2880,
    +     2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
    +     2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
    +     2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
    +     2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
    +     2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
    +     2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888, 2888,
    +     2888, 2888, 2896, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904, 2904,
    +     2904, 2904, 2904, 2904, 2904, 2912, 2920, 2928, 2936, 2936, 2936, 2944,
    +     2952, 2952, 2952, 2960, 2968, 2976, 2984, 2992, 3000, 3000, 3000, 3008,
    +     3016, 3024, 3032, 3040, 3048, 3048, 3048, 3056, 3064, 3072, 3080, 3088,
    +     3096, 3104, 3112, 3120, 3128, 3136, 3144, 3144, 3144, 3152, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160},
    +    {3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160, 3160,
    +     3160, 3160, 3160, 3161, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168},
    +    {3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168,
    +     3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3168, 3176,
    +     3184, 3192, 3200, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208,
    +     3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208,
    +     3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208,
    +     3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208,
    +     3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208,
    +     3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208,
    +     3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3208, 3209, 3217, 3225,
    +     3233, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240,
    +     3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240,
    +     3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240,
    +     3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240,
    +     3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240,
    +     3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240, 3240,
    +     3240, 3248, 3248, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256,
    +     3256, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3264, 3264, 3264, 3264,
    +     3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264,
    +     3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264,
    +     3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264,
    +     3264, 3264, 3264, 3264, 3264},
    +    {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
    +    {3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264,
    +     3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264,
    +     3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264, 3264,
    +     3264, 3264, 3264, 3264, 3264, 3264, 3272, 3272, 3272, 3272, 3272, 3272,
    +     3272, 3272, 3280, 3280, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288,
    +     3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288,
    +     3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288,
    +     3288, 3288, 3288, 3288, 3288, 3296, 3304, 3312, 3320, 3328, 3336, 3344,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352, 3352,
    +     3360, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368, 3368,
    +     3368, 3368, 3368, 3368, 3368, 3376, 3384, 3384, 3392, 3392, 3392, 3392,
    +     3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
    +     3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
    +     3392, 3392, 3392, 3392, 3392},
    +    {3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
    +     3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
    +     3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
    +     3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392, 3392,
    +     3392, 3392, 3392, 3392, 3400, 3400, 3400, 3408, 3408, 3408, 3408, 3408,
    +     3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408,
    +     3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408, 3408,
    +     3408, 3408, 3408, 3408, 3408, 3408, 3416, 3424, 3432, 3432, 3432, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440},
    +    {3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440, 3440,
    +     3440, 3448, 3448, 3448, 3456, 3464, 3464, 3464, 3464, 3464, 3464, 3464,
    +     3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3464, 3472, 3480, 3480,
    +     3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480,
    +     3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480,
    +     3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480,
    +     3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480, 3480,
    +     3480, 3480, 3480, 3480, 3480, 3488, 3488, 3488, 3488, 3488, 3488, 3488,
    +     3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488,
    +     3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488,
    +     3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488,
    +     3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3488, 3496,
    +     3504, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512},
    +    {3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512, 3512,
    +     3512, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520, 3520,
    +     3520, 3528, 3528, 3528, 3528, 3528, 3528, 3528, 3536, 3544, 3544, 3552,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564},
    +    {3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564, 3564,
    +     3564, 3564, 3564, 3572, 3580, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588, 3588,
    +     3588, 3588, 3588, 3596, 3596, 3604, 3616, 3624, 3624, 3624, 3624, 3624,
    +     3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624,
    +     3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624,
    +     3624, 3624, 3624, 3624, 3624},
    +    {3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624,
    +     3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624,
    +     3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624,
    +     3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624, 3624,
    +     3624, 3624, 3624, 3625, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632,
    +     3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3632, 3633,
    +     3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640,
    +     3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640,
    +     3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640, 3640,
    +     3640, 3640, 3640, 3640, 3641, 3649, 3656, 3656, 3656, 3656, 3656, 3656,
    +     3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656,
    +     3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656,
    +     3656, 3656, 3656, 3656, 3656},
    +    {3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656, 3656,
    +     3657, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660,
    +     3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660,
    +     3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660,
    +     3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660,
    +     3660, 3660, 3660, 3660, 3660, 3660, 3660, 3660, 3668, 3668, 3668, 3668,
    +     3668, 3668, 3668, 3668, 3668, 3668, 3676, 3676, 3676, 3676, 3676, 3684,
    +     3684, 3684, 3684, 3684, 3692, 3692, 3692, 3692, 3692, 3700, 3700, 3700,
    +     3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3700, 3708, 3708,
    +     3708, 3708, 3708, 3708, 3708, 3708, 3708, 3708, 3716, 3716, 3724, 3733,
    +     3744, 3753, 3764, 3764, 3764, 3764, 3764, 3764, 3764, 3764, 3772, 3772,
    +     3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772, 3772,
    +     3772, 3772, 3772, 3772, 3780, 3780, 3780, 3780, 3780, 3780, 3780, 3780,
    +     3780, 3780, 3788, 3788, 3788, 3788, 3788, 3796, 3796, 3796, 3796, 3796,
    +     3804, 3804, 3804, 3804, 3804, 3812, 3812, 3812, 3812, 3812, 3812, 3812,
    +     3812, 3812, 3812, 3812, 3812, 3812, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820},
    +    {3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820, 3820,
    +     3820, 3820, 3820, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828, 3828,
    +     3829, 3832, 3832, 3832, 3832},
    +    {3832, 3832, 3832, 3832, 3832, 3832, 3832, 3840, 3840, 3848, 3848, 3856,
    +     3856, 3864, 3864, 3872, 3872, 3872, 3872, 3880, 3880, 3880, 3880, 3880,
    +     3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880,
    +     3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880,
    +     3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880, 3880,
    +     3888, 3888, 3896, 3896, 3896, 3904, 3912, 3912, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920},
    +    {3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920,
    +     3920, 3920, 3920, 3920, 3920, 3920, 3920, 3920, 3921, 3925, 3929, 3932,
    +     3933, 3937, 3941, 3945, 3949, 3953, 3957, 3961, 3965, 3969, 3973, 3976,
    +     3977, 3981, 3985, 3989, 3993, 3997, 4001, 4005, 4009, 4013, 4017, 4021,
    +     4025, 4029, 4033, 4037, 4041, 4045, 4048, 4049, 4053, 4057, 4061, 4065,
    +     4069, 4073, 4077, 4081, 4085, 4089, 4093, 4097, 4101, 4105, 4109, 4113,
    +     4117, 4121, 4125, 4129, 4133, 4137, 4141, 4145, 4149, 4153, 4157, 4160,
    +     4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160, 4160,
    +     4161, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164,
    +     4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164,
    +     4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4164, 4165,
    +     4169, 4173, 4177, 4181, 4185, 4189, 4193, 4197, 4201, 4205, 4209, 4213,
    +     4217, 4221, 4225, 4229, 4233, 4237, 4241, 4245, 4249, 4253, 4257, 4261,
    +     4265, 4269, 4273, 4277, 4281, 4285, 4289, 4293, 4297, 4301, 4305, 4309,
    +     4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312,
    +     4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312,
    +     4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312,
    +     4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312,
    +     4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312, 4312,
    +     4312, 4312, 4312, 4312, 4312},
    +    {4312, 4320, 4328, 4336, 4344, 4352, 4360, 4368, 4376, 4388, 4400, 4408,
    +     4416, 4424, 4432, 4440, 4448, 4456, 4464, 4472, 4480, 4492, 4504, 4516,
    +     4528, 4536, 4544, 4552, 4560, 4572, 4584, 4592, 4600, 4608, 4616, 4624,
    +     4632, 4640, 4648, 4656, 4664, 4672, 4680, 4688, 4696, 4704, 4712, 4724,
    +     4736, 4744, 4752, 4760, 4768, 4776, 4784, 4792, 4800, 4812, 4824, 4832,
    +     4840, 4848, 4856, 4864, 4872, 4880, 4888, 4896, 4904, 4912, 4920, 4928,
    +     4936, 4944, 4952, 4960, 4968, 4980, 4992, 5004, 5016, 5028, 5040, 5052,
    +     5064, 5072, 5080, 5088, 5096, 5104, 5112, 5120, 5128, 5140, 5152, 5160,
    +     5168, 5176, 5184, 5192, 5200, 5212, 5224, 5236, 5248, 5260, 5272, 5280,
    +     5288, 5296, 5304, 5312, 5320, 5328, 5336, 5344, 5352, 5360, 5368, 5376,
    +     5384, 5396, 5408, 5420, 5432, 5440, 5448, 5456, 5464, 5472, 5480, 5488,
    +     5496, 5504, 5512, 5520, 5528, 5536, 5544, 5552, 5560, 5568, 5576, 5584,
    +     5592, 5600, 5608, 5616, 5624, 5632, 5640, 5648, 5656, 5664, 5673, 5682,
    +     5688, 5688, 5688, 5688, 5688, 5696, 5704, 5712, 5720, 5732, 5744, 5756,
    +     5768, 5780, 5792, 5804, 5816, 5828, 5840, 5852, 5864, 5876, 5888, 5900,
    +     5912, 5924, 5936, 5948, 5960, 5968, 5976, 5984, 5992, 6000, 6008, 6020,
    +     6032, 6044, 6056, 6068, 6080, 6092, 6104, 6116, 6128, 6136, 6144, 6152,
    +     6160, 6168, 6176, 6184, 6192, 6204, 6216, 6228, 6240, 6252, 6264, 6276,
    +     6288, 6300, 6312, 6324, 6336, 6348, 6360, 6372, 6384, 6396, 6408, 6420,
    +     6432, 6440, 6448, 6456, 6464, 6476, 6488, 6500, 6512, 6524, 6536, 6548,
    +     6560, 6572, 6584, 6592, 6600, 6608, 6616, 6624, 6632, 6640, 6648, 6648,
    +     6648, 6648, 6648, 6648, 6648},
    +    {6648, 6656, 6664, 6676, 6688, 6700, 6712, 6724, 6736, 6744, 6752, 6764,
    +     6776, 6788, 6800, 6812, 6824, 6832, 6840, 6852, 6864, 6876, 6888, 6888,
    +     6888, 6896, 6904, 6916, 6928, 6940, 6952, 6952, 6952, 6960, 6968, 6980,
    +     6992, 7004, 7016, 7028, 7040, 7048, 7056, 7068, 7080, 7092, 7104, 7116,
    +     7128, 7136, 7144, 7156, 7168, 7180, 7192, 7204, 7216, 7224, 7232, 7244,
    +     7256, 7268, 7280, 7292, 7304, 7312, 7320, 7332, 7344, 7356, 7368, 7368,
    +     7368, 7376, 7384, 7396, 7408, 7420, 7432, 7432, 7432, 7440, 7448, 7460,
    +     7472, 7484, 7496, 7508, 7520, 7520, 7528, 7528, 7540, 7540, 7552, 7552,
    +     7564, 7572, 7580, 7592, 7604, 7616, 7628, 7640, 7652, 7660, 7668, 7680,
    +     7692, 7704, 7716, 7728, 7740, 7748, 7756, 7764, 7772, 7780, 7788, 7796,
    +     7804, 7812, 7820, 7828, 7836, 7844, 7852, 7852, 7852, 7864, 7876, 7892,
    +     7908, 7924, 7940, 7956, 7972, 7984, 7996, 8012, 8028, 8044, 8060, 8076,
    +     8092, 8104, 8116, 8132, 8148, 8164, 8180, 8196, 8212, 8224, 8236, 8252,
    +     8268, 8284, 8300, 8316, 8332, 8344, 8356, 8372, 8388, 8404, 8420, 8436,
    +     8452, 8464, 8476, 8492, 8508, 8524, 8540, 8556, 8572, 8580, 8588, 8600,
    +     8608, 8620, 8620, 8628, 8640, 8648, 8656, 8664, 8672, 8681, 8688, 8693,
    +     8701, 8710, 8716, 8728, 8736, 8748, 8748, 8756, 8768, 8776, 8784, 8792,
    +     8800, 8810, 8818, 8826, 8832, 8840, 8848, 8860, 8872, 8872, 8872, 8880,
    +     8892, 8900, 8908, 8916, 8924, 8926, 8934, 8942, 8948, 8956, 8964, 8976,
    +     8988, 8996, 9004, 9012, 9024, 9032, 9040, 9048, 9056, 9066, 9074, 9080,
    +     9084, 9084, 9084, 9096, 9104, 9116, 9116, 9124, 9136, 9144, 9152, 9160,
    +     9168, 9178, 9181, 9188, 9190},
    +    {9190, 9194, 9197, 9201, 9205, 9209, 9213, 9217, 9221, 9225, 9229, 9232,
    +     9232, 9232, 9232, 9232, 9232, 9233, 9236, 9236, 9236, 9236, 9236, 9237,
    +     9244, 9244, 9244, 9244, 9244, 9244, 9244, 9244, 9244, 9244, 9244, 9244,
    +     9245, 9249, 9257, 9268, 9268, 9268, 9268, 9268, 9268, 9268, 9268, 9269,
    +     9272, 9272, 9272, 9273, 9281, 9292, 9293, 9301, 9312, 9312, 9312, 9312,
    +     9313, 9320, 9321, 9328, 9328, 9328, 9328, 9328, 9328, 9328, 9328, 9329,
    +     9337, 9345, 9352, 9352, 9352, 9352, 9352, 9352, 9352, 9352, 9352, 9352,
    +     9352, 9352, 9352, 9353, 9368, 9368, 9368, 9368, 9368, 9368, 9368, 9369,
    +     9372, 9372, 9372, 9372, 9372, 9372, 9372, 9372, 9372, 9372, 9372, 9372,
    +     9372, 9372, 9372, 9372, 9373, 9377, 9380, 9380, 9381, 9385, 9389, 9393,
    +     9397, 9401, 9405, 9409, 9413, 9417, 9421, 9425, 9429, 9433, 9437, 9441,
    +     9445, 9449, 9453, 9457, 9461, 9465, 9469, 9473, 9477, 9481, 9485, 9488,
    +     9489, 9493, 9497, 9501, 9505, 9509, 9513, 9517, 9521, 9525, 9529, 9533,
    +     9537, 9540, 9540, 9540, 9540, 9540, 9540, 9540, 9540, 9540, 9540, 9540,
    +     9541, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548,
    +     9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548,
    +     9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548,
    +     9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548,
    +     9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548,
    +     9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548,
    +     9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548, 9548,
    +     9548, 9548, 9548, 9548, 9549},
    +    {9549,  9561,  9573,  9577,  9584,  9585,  9597,  9609,  9612,  9613,
    +     9621,  9625,  9629,  9633,  9637,  9641,  9645,  9649,  9653,  9657,
    +     9660,  9661,  9665,  9672,  9672,  9673,  9677,  9681,  9685,  9689,
    +     9692,  9692,  9693,  9701,  9713,  9720,  9721,  9724,  9724,  9728,
    +     9729,  9732,  9732,  9736,  9745,  9749,  9752,  9753,  9757,  9761,
    +     9764,  9765,  9769,  9773,  9777,  9781,  9785,  9789,  9792,  9793,
    +     9805,  9809,  9813,  9817,  9821,  9824,  9824,  9824,  9824,  9825,
    +     9829,  9833,  9837,  9841,  9844,  9844,  9844,  9844,  9844,  9844,
    +     9845,  9857,  9869,  9885,  9897,  9909,  9921,  9933,  9945,  9957,
    +     9969,  9981,  9993,  10005, 10017, 10029, 10037, 10041, 10049, 10061,
    +     10069, 10073, 10081, 10093, 10109, 10117, 10121, 10129, 10141, 10145,
    +     10149, 10153, 10157, 10161, 10169, 10181, 10189, 10193, 10201, 10213,
    +     10229, 10237, 10241, 10249, 10261, 10265, 10269, 10273, 10276, 10276,
    +     10276, 10276, 10276, 10276, 10276, 10276, 10276, 10277, 10288, 10288,
    +     10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288, 10288,
    +     10288, 10288, 10288, 10288, 10288, 10296, 10304, 10304, 10304, 10304,
    +     10304, 10304, 10304, 10304, 10304, 10304, 10304, 10304, 10304, 10304,
    +     10304, 10304, 10304, 10304, 10304, 10312, 10312, 10312, 10312, 10312,
    +     10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312,
    +     10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312, 10312,
    +     10312, 10312, 10312, 10312, 10312, 10312, 10320, 10328, 10336, 10336,
    +     10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336,
    +     10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336,
    +     10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336,
    +     10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336, 10336,
    +     10336, 10336, 10336, 10336, 10336, 10336, 10336},
    +    {10336, 10336, 10336, 10336, 10336, 10344, 10344, 10344, 10344, 10344,
    +     10352, 10352, 10352, 10360, 10360, 10360, 10360, 10360, 10360, 10360,
    +     10360, 10360, 10360, 10360, 10360, 10360, 10360, 10360, 10360, 10360,
    +     10360, 10360, 10360, 10360, 10360, 10360, 10360, 10368, 10368, 10376,
    +     10376, 10376, 10376, 10376, 10377, 10385, 10396, 10397, 10405, 10416,
    +     10416, 10416, 10416, 10416, 10416, 10416, 10416, 10416, 10416, 10416,
    +     10416, 10416, 10416, 10416, 10416, 10416, 10424, 10424, 10424, 10432,
    +     10432, 10432, 10440, 10440, 10448, 10448, 10448, 10448, 10448, 10448,
    +     10448, 10448, 10448, 10448, 10448, 10448, 10448, 10448, 10448, 10448,
    +     10448, 10448, 10448, 10448, 10448, 10448, 10448, 10456, 10456, 10464,
    +     10464, 10464, 10464, 10464, 10464, 10464, 10464, 10464, 10464, 10464,
    +     10472, 10480, 10488, 10496, 10504, 10504, 10504, 10512, 10520, 10520,
    +     10520, 10528, 10536, 10536, 10536, 10536, 10536, 10536, 10536, 10544,
    +     10552, 10552, 10552, 10560, 10568, 10568, 10568, 10576, 10584, 10584,
    +     10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584,
    +     10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584,
    +     10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584, 10584,
    +     10584, 10584, 10584, 10592, 10600, 10608, 10616, 10616, 10616, 10616,
    +     10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616,
    +     10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616,
    +     10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616,
    +     10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616, 10616,
    +     10616, 10616, 10616, 10616, 10616, 10624, 10632, 10640, 10648, 10648,
    +     10648, 10648, 10648, 10648, 10648, 10656, 10664, 10672, 10680, 10680,
    +     10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680,
    +     10680, 10680, 10680, 10680, 10680, 10680, 10680},
    +    {10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680,
    +     10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680,
    +     10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680,
    +     10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680, 10680,
    +     10680, 10680, 10684, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688},
    +    {10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688, 10688,
    +     10688, 10688, 10688, 10688, 10688, 10688, 10689, 10693, 10697, 10701,
    +     10705, 10709, 10713, 10717, 10721, 10725, 10733, 10741, 10749, 10757,
    +     10765, 10773, 10781, 10789, 10797, 10805, 10813, 10825, 10837, 10849,
    +     10861, 10873, 10885, 10897, 10909, 10921, 10937, 10953, 10969, 10985,
    +     11001, 11017, 11033, 11049, 11065, 11081, 11097, 11105, 11113, 11121,
    +     11129, 11137, 11145, 11153, 11161, 11169, 11181, 11193, 11205, 11217,
    +     11229, 11241, 11253, 11265, 11277, 11289, 11301, 11313, 11325, 11337,
    +     11349, 11361, 11373, 11385, 11397, 11409, 11421, 11433, 11445, 11457,
    +     11469, 11481, 11493, 11505, 11517, 11529, 11541, 11553, 11565, 11577,
    +     11589, 11601, 11613, 11617, 11621, 11625, 11629, 11633, 11637, 11641,
    +     11645, 11649, 11653, 11657, 11661, 11665, 11669, 11673, 11677, 11681,
    +     11685, 11689, 11693, 11697, 11701, 11705, 11709, 11713, 11717, 11721,
    +     11725, 11729, 11733, 11737, 11741, 11745, 11749, 11753, 11757, 11761,
    +     11765, 11769, 11773, 11777, 11781, 11785, 11789, 11793, 11797, 11801,
    +     11805, 11809, 11813, 11817, 11821, 11824, 11824, 11824, 11824, 11824,
    +     11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824,
    +     11824, 11824, 11824, 11824, 11824, 11824, 11824},
    +    {11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824, 11824,
    +     11824, 11824, 11825, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840, 11840,
    +     11840, 11840, 11840, 11840, 11840, 11840, 11841, 11853, 11861, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872, 11872,
    +     11872, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880},
    +    {11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880, 11880,
    +     11880, 11880, 11880, 11880, 11881, 11885, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888},
    +    {11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888, 11888,
    +     11888, 11889, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892},
    +    {11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892,
    +     11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11892, 11893,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896, 11896,
    +     11896, 11896, 11896, 11897, 11900, 11900, 11900, 11900, 11900, 11900,
    +     11900, 11900, 11900, 11900, 11900, 11900, 11901},
    +    {11901, 11905, 11909, 11913, 11917, 11921, 11925, 11929, 11933, 11937,
    +     11941, 11945, 11949, 11953, 11957, 11961, 11965, 11969, 11973, 11977,
    +     11981, 11985, 11989, 11993, 11997, 12001, 12005, 12009, 12013, 12017,
    +     12021, 12025, 12029, 12033, 12037, 12041, 12045, 12049, 12053, 12057,
    +     12061, 12065, 12069, 12073, 12077, 12081, 12085, 12089, 12093, 12097,
    +     12101, 12105, 12109, 12113, 12117, 12121, 12125, 12129, 12133, 12137,
    +     12141, 12145, 12149, 12153, 12157, 12161, 12165, 12169, 12173, 12177,
    +     12181, 12185, 12189, 12193, 12197, 12201, 12205, 12209, 12213, 12217,
    +     12221, 12225, 12229, 12233, 12237, 12241, 12245, 12249, 12253, 12257,
    +     12261, 12265, 12269, 12273, 12277, 12281, 12285, 12289, 12293, 12297,
    +     12301, 12305, 12309, 12313, 12317, 12321, 12325, 12329, 12333, 12337,
    +     12341, 12345, 12349, 12353, 12357, 12361, 12365, 12369, 12373, 12377,
    +     12381, 12385, 12389, 12393, 12397, 12401, 12405, 12409, 12413, 12417,
    +     12421, 12425, 12429, 12433, 12437, 12441, 12445, 12449, 12453, 12457,
    +     12461, 12465, 12469, 12473, 12477, 12481, 12485, 12489, 12493, 12497,
    +     12501, 12505, 12509, 12513, 12517, 12521, 12525, 12529, 12533, 12537,
    +     12541, 12545, 12549, 12553, 12557, 12561, 12565, 12569, 12573, 12577,
    +     12581, 12585, 12589, 12593, 12597, 12601, 12605, 12609, 12613, 12617,
    +     12621, 12625, 12629, 12633, 12637, 12641, 12645, 12649, 12653, 12657,
    +     12661, 12665, 12669, 12673, 12677, 12681, 12685, 12689, 12693, 12697,
    +     12701, 12705, 12709, 12713, 12717, 12721, 12725, 12729, 12733, 12737,
    +     12741, 12745, 12749, 12753, 12756, 12756, 12756, 12756, 12756, 12756,
    +     12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756,
    +     12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756,
    +     12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756, 12756,
    +     12756, 12756, 12756, 12756, 12756, 12756, 12757},
    +    {12757, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760,
    +     12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760,
    +     12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760,
    +     12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760,
    +     12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760, 12760,
    +     12760, 12760, 12760, 12760, 12761, 12764, 12765, 12769, 12773, 12776,
    +     12776, 12776, 12776, 12776, 12776, 12776, 12776, 12776, 12776, 12776,
    +     12776, 12776, 12776, 12776, 12776, 12776, 12776, 12784, 12784, 12792,
    +     12792, 12800, 12800, 12808, 12808, 12816, 12816, 12824, 12824, 12832,
    +     12832, 12840, 12840, 12848, 12848, 12856, 12856, 12864, 12864, 12872,
    +     12872, 12872, 12880, 12880, 12888, 12888, 12896, 12896, 12896, 12896,
    +     12896, 12896, 12896, 12904, 12912, 12912, 12920, 12928, 12928, 12936,
    +     12944, 12944, 12952, 12960, 12960, 12968, 12976, 12976, 12976, 12976,
    +     12976, 12976, 12976, 12976, 12976, 12976, 12976, 12976, 12976, 12976,
    +     12976, 12976, 12976, 12976, 12976, 12976, 12976, 12976, 12976, 12984,
    +     12984, 12984, 12984, 12984, 12984, 12985, 12993, 13000, 13000, 13009,
    +     13016, 13016, 13016, 13016, 13016, 13016, 13016, 13016, 13016, 13016,
    +     13016, 13016, 13016, 13024, 13024, 13032, 13032, 13040, 13040, 13048,
    +     13048, 13056, 13056, 13064, 13064, 13072, 13072, 13080, 13080, 13088,
    +     13088, 13096, 13096, 13104, 13104, 13112, 13112, 13112, 13120, 13120,
    +     13128, 13128, 13136, 13136, 13136, 13136, 13136, 13136, 13136, 13144,
    +     13152, 13152, 13160, 13168, 13168, 13176, 13184, 13184, 13192, 13200,
    +     13200, 13208, 13216, 13216, 13216, 13216, 13216, 13216, 13216, 13216,
    +     13216, 13216, 13216, 13216, 13216, 13216, 13216, 13216, 13216, 13216,
    +     13216, 13216, 13216, 13216, 13216, 13224, 13224, 13224, 13232, 13240,
    +     13248, 13256, 13256, 13256, 13256, 13265, 13272},
    +    {13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272,
    +     13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272,
    +     13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272,
    +     13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272,
    +     13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13272, 13273,
    +     13277, 13281, 13285, 13289, 13293, 13297, 13301, 13305, 13309, 13313,
    +     13317, 13321, 13325, 13329, 13333, 13337, 13341, 13345, 13349, 13353,
    +     13357, 13361, 13365, 13369, 13373, 13377, 13381, 13385, 13389, 13393,
    +     13397, 13401, 13405, 13409, 13413, 13417, 13421, 13425, 13429, 13433,
    +     13437, 13441, 13445, 13449, 13453, 13457, 13461, 13465, 13469, 13473,
    +     13477, 13481, 13485, 13489, 13493, 13497, 13501, 13505, 13509, 13513,
    +     13517, 13521, 13525, 13529, 13533, 13537, 13541, 13545, 13549, 13553,
    +     13557, 13561, 13565, 13569, 13573, 13577, 13581, 13585, 13589, 13593,
    +     13597, 13601, 13605, 13609, 13613, 13617, 13621, 13625, 13629, 13633,
    +     13637, 13641, 13645, 13648, 13648, 13648, 13649, 13653, 13657, 13661,
    +     13665, 13669, 13673, 13677, 13681, 13685, 13689, 13693, 13697, 13701,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704, 13704,
    +     13704, 13704, 13704, 13704, 13704, 13704, 13705},
    +    {13705, 13717, 13729, 13741, 13753, 13765, 13777, 13789, 13801, 13813,
    +     13825, 13837, 13849, 13861, 13873, 13889, 13905, 13921, 13937, 13953,
    +     13969, 13985, 14001, 14017, 14033, 14049, 14065, 14081, 14097, 14113,
    +     14141, 14164, 14165, 14177, 14189, 14201, 14213, 14225, 14237, 14249,
    +     14261, 14273, 14285, 14297, 14309, 14321, 14333, 14345, 14357, 14369,
    +     14381, 14393, 14405, 14417, 14429, 14441, 14453, 14465, 14477, 14489,
    +     14501, 14513, 14525, 14537, 14549, 14561, 14573, 14585, 14597, 14601,
    +     14605, 14609, 14612, 14612, 14612, 14612, 14612, 14612, 14612, 14612,
    +     14613, 14625, 14633, 14641, 14649, 14657, 14665, 14673, 14681, 14689,
    +     14697, 14705, 14713, 14721, 14729, 14737, 14745, 14749, 14753, 14757,
    +     14761, 14765, 14769, 14773, 14777, 14781, 14785, 14789, 14793, 14797,
    +     14801, 14809, 14817, 14825, 14833, 14841, 14849, 14857, 14865, 14873,
    +     14881, 14889, 14897, 14905, 14913, 14933, 14949, 14956, 14957, 14961,
    +     14965, 14969, 14973, 14977, 14981, 14985, 14989, 14993, 14997, 15001,
    +     15005, 15009, 15013, 15017, 15021, 15025, 15029, 15033, 15037, 15041,
    +     15045, 15049, 15053, 15057, 15061, 15065, 15069, 15073, 15077, 15081,
    +     15085, 15089, 15093, 15097, 15101, 15105, 15109, 15113, 15117, 15121,
    +     15125, 15129, 15133, 15137, 15141, 15145, 15149, 15153, 15161, 15169,
    +     15177, 15185, 15193, 15201, 15209, 15217, 15225, 15233, 15241, 15249,
    +     15257, 15265, 15273, 15281, 15289, 15297, 15305, 15313, 15321, 15329,
    +     15337, 15345, 15357, 15369, 15381, 15389, 15401, 15409, 15421, 15425,
    +     15429, 15433, 15437, 15441, 15445, 15449, 15453, 15457, 15461, 15465,
    +     15469, 15473, 15477, 15481, 15485, 15489, 15493, 15497, 15501, 15505,
    +     15509, 15513, 15517, 15521, 15525, 15529, 15533, 15537, 15541, 15545,
    +     15549, 15553, 15557, 15561, 15565, 15569, 15573, 15577, 15581, 15585,
    +     15589, 15593, 15597, 15601, 15605, 15609, 15617},
    +    {15617, 15637, 15653, 15673, 15685, 15705, 15717, 15729, 15753, 15769,
    +     15781, 15793, 15805, 15821, 15837, 15853, 15869, 15885, 15901, 15917,
    +     15941, 15949, 15973, 15997, 16017, 16033, 16057, 16081, 16097, 16109,
    +     16121, 16137, 16153, 16173, 16193, 16205, 16217, 16233, 16245, 16257,
    +     16265, 16273, 16285, 16297, 16321, 16337, 16357, 16381, 16397, 16409,
    +     16421, 16445, 16461, 16485, 16497, 16517, 16529, 16545, 16557, 16573,
    +     16593, 16609, 16629, 16645, 16653, 16673, 16685, 16697, 16713, 16725,
    +     16737, 16749, 16769, 16785, 16793, 16817, 16829, 16849, 16865, 16881,
    +     16893, 16905, 16921, 16929, 16945, 16965, 16973, 16997, 17009, 17017,
    +     17025, 17033, 17041, 17049, 17057, 17065, 17073, 17081, 17089, 17101,
    +     17113, 17125, 17137, 17149, 17161, 17173, 17185, 17197, 17209, 17221,
    +     17233, 17245, 17257, 17269, 17281, 17289, 17297, 17309, 17317, 17325,
    +     17333, 17345, 17357, 17365, 17373, 17381, 17389, 17397, 17413, 17421,
    +     17429, 17437, 17445, 17453, 17461, 17469, 17477, 17489, 17505, 17513,
    +     17521, 17529, 17537, 17545, 17553, 17561, 17573, 17585, 17597, 17609,
    +     17617, 17625, 17633, 17641, 17649, 17657, 17665, 17673, 17681, 17689,
    +     17701, 17713, 17721, 17733, 17745, 17757, 17765, 17777, 17789, 17805,
    +     17813, 17825, 17837, 17849, 17861, 17881, 17905, 17913, 17921, 17929,
    +     17937, 17945, 17953, 17961, 17969, 17977, 17985, 17993, 18001, 18009,
    +     18017, 18025, 18033, 18041, 18049, 18065, 18073, 18081, 18089, 18105,
    +     18117, 18125, 18133, 18141, 18149, 18157, 18165, 18173, 18181, 18189,
    +     18197, 18209, 18217, 18225, 18237, 18249, 18257, 18273, 18285, 18293,
    +     18301, 18309, 18317, 18329, 18341, 18349, 18357, 18365, 18373, 18381,
    +     18389, 18397, 18405, 18413, 18425, 18437, 18449, 18461, 18473, 18485,
    +     18497, 18509, 18521, 18533, 18545, 18557, 18569, 18581, 18593, 18605,
    +     18617, 18629, 18641, 18653, 18665, 18677, 18688},
    +    {18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688, 18688,
    +     18688, 18688, 18688, 18688, 18688, 18688, 18689, 18693, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696},
    +    {18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696, 18696,
    +     18696, 18696, 18697, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700, 18700,
    +     18700, 18700, 18701, 18705, 18709, 18712, 18712, 18712, 18713, 18717,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720},
    +    {18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720, 18720,
    +     18720, 18720, 18721, 18725, 18729, 18733, 18736, 18736, 18736, 18736,
    +     18736, 18736, 18736, 18736, 18736, 18737, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740, 18740,
    +     18740, 18740, 18740, 18740, 18740, 18740, 18740},
    +    {18740, 18744, 18748, 18752, 18756, 18760, 18764, 18768, 18772, 18776,
    +     18780, 18784, 18788, 18792, 18796, 18800, 18804, 18808, 18812, 18816,
    +     18820, 18824, 18828, 18832, 18836, 18840, 18844, 18848, 18852, 18856,
    +     18860, 18864, 18868, 18872, 18876, 18880, 18884, 18888, 18892, 18896,
    +     18900, 18904, 18908, 18912, 18916, 18920, 18924, 18928, 18932, 18936,
    +     18940, 18944, 18948, 18952, 18956, 18960, 18964, 18968, 18972, 18976,
    +     18980, 18984, 18988, 18992, 18996, 19000, 19004, 19008, 19012, 19016,
    +     19020, 19024, 19028, 19032, 19036, 19040, 19044, 19048, 19052, 19056,
    +     19060, 19064, 19068, 19072, 19076, 19080, 19084, 19088, 19092, 19096,
    +     19100, 19104, 19108, 19112, 19116, 19120, 19124, 19128, 19132, 19136,
    +     19140, 19144, 19148, 19152, 19156, 19160, 19164, 19168, 19172, 19176,
    +     19180, 19184, 19188, 19192, 19196, 19200, 19204, 19208, 19212, 19216,
    +     19220, 19224, 19228, 19232, 19236, 19240, 19244, 19248, 19252, 19256,
    +     19260, 19264, 19268, 19272, 19276, 19280, 19284, 19288, 19292, 19296,
    +     19300, 19304, 19308, 19312, 19316, 19320, 19324, 19328, 19332, 19336,
    +     19340, 19344, 19348, 19352, 19356, 19360, 19364, 19368, 19372, 19376,
    +     19380, 19384, 19388, 19392, 19396, 19400, 19404, 19408, 19412, 19416,
    +     19420, 19424, 19428, 19432, 19436, 19440, 19444, 19448, 19452, 19456,
    +     19460, 19464, 19468, 19472, 19476, 19480, 19484, 19488, 19492, 19496,
    +     19500, 19504, 19508, 19512, 19516, 19520, 19524, 19528, 19532, 19536,
    +     19540, 19544, 19548, 19552, 19556, 19560, 19564, 19568, 19572, 19576,
    +     19580, 19584, 19588, 19592, 19596, 19600, 19604, 19608, 19612, 19616,
    +     19620, 19624, 19628, 19632, 19636, 19640, 19644, 19648, 19652, 19656,
    +     19660, 19664, 19668, 19672, 19676, 19680, 19684, 19688, 19692, 19696,
    +     19700, 19704, 19708, 19712, 19716, 19720, 19724, 19728, 19732, 19736,
    +     19740, 19744, 19748, 19752, 19756, 19760, 19764},
    +    {19764, 19768, 19772, 19776, 19780, 19784, 19788, 19792, 19796, 19800,
    +     19804, 19808, 19812, 19816, 19820, 19820, 19820, 19824, 19824, 19828,
    +     19828, 19828, 19832, 19836, 19840, 19844, 19848, 19852, 19856, 19860,
    +     19864, 19868, 19868, 19872, 19872, 19876, 19876, 19876, 19880, 19884,
    +     19884, 19884, 19884, 19888, 19892, 19896, 19900, 19904, 19908, 19912,
    +     19916, 19920, 19924, 19928, 19932, 19936, 19940, 19944, 19948, 19952,
    +     19956, 19960, 19964, 19968, 19972, 19976, 19980, 19984, 19988, 19992,
    +     19996, 20000, 20004, 20008, 20012, 20016, 20020, 20024, 20028, 20032,
    +     20036, 20040, 20044, 20048, 20052, 20056, 20060, 20064, 20068, 20072,
    +     20076, 20080, 20084, 20088, 20092, 20096, 20100, 20104, 20108, 20112,
    +     20116, 20120, 20124, 20128, 20132, 20136, 20140, 20144, 20148, 20152,
    +     20156, 20156, 20156, 20160, 20164, 20168, 20172, 20176, 20180, 20184,
    +     20188, 20192, 20196, 20200, 20204, 20208, 20212, 20216, 20220, 20224,
    +     20228, 20232, 20236, 20240, 20244, 20248, 20252, 20256, 20260, 20264,
    +     20268, 20272, 20276, 20280, 20284, 20288, 20292, 20296, 20300, 20304,
    +     20308, 20312, 20316, 20320, 20324, 20328, 20332, 20336, 20340, 20344,
    +     20348, 20352, 20356, 20360, 20364, 20368, 20372, 20376, 20380, 20384,
    +     20388, 20392, 20396, 20400, 20404, 20408, 20412, 20416, 20420, 20424,
    +     20428, 20432, 20436, 20440, 20444, 20448, 20452, 20456, 20460, 20464,
    +     20468, 20472, 20476, 20480, 20484, 20488, 20492, 20496, 20500, 20504,
    +     20508, 20512, 20516, 20520, 20524, 20528, 20532, 20536, 20540, 20544,
    +     20548, 20552, 20556, 20560, 20564, 20568, 20572, 20576, 20580, 20580,
    +     20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580,
    +     20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580,
    +     20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580, 20580,
    +     20580, 20580, 20580, 20580, 20580, 20580, 20581},
    +    {20581, 20589, 20597, 20605, 20617, 20629, 20637, 20644, 20644, 20644,
    +     20644, 20644, 20644, 20644, 20644, 20644, 20644, 20644, 20644, 20645,
    +     20653, 20661, 20669, 20677, 20684, 20684, 20684, 20684, 20684, 20684,
    +     20692, 20692, 20701, 20705, 20709, 20713, 20717, 20721, 20725, 20729,
    +     20733, 20737, 20740, 20748, 20756, 20768, 20780, 20788, 20796, 20804,
    +     20812, 20820, 20828, 20836, 20844, 20852, 20852, 20860, 20868, 20876,
    +     20884, 20892, 20892, 20900, 20900, 20908, 20916, 20916, 20924, 20932,
    +     20932, 20940, 20948, 20956, 20964, 20972, 20980, 20988, 20996, 21005,
    +     21013, 21017, 21021, 21025, 21029, 21033, 21037, 21041, 21045, 21049,
    +     21053, 21057, 21061, 21065, 21069, 21073, 21077, 21081, 21085, 21089,
    +     21093, 21097, 21101, 21105, 21109, 21113, 21117, 21121, 21125, 21129,
    +     21133, 21137, 21141, 21145, 21149, 21153, 21157, 21161, 21165, 21169,
    +     21173, 21177, 21181, 21185, 21189, 21193, 21197, 21201, 21205, 21209,
    +     21213, 21217, 21221, 21225, 21229, 21233, 21237, 21241, 21245, 21249,
    +     21253, 21257, 21261, 21265, 21269, 21273, 21277, 21281, 21285, 21289,
    +     21293, 21297, 21301, 21305, 21309, 21313, 21317, 21321, 21325, 21329,
    +     21333, 21337, 21341, 21345, 21349, 21357, 21365, 21369, 21373, 21377,
    +     21381, 21385, 21389, 21393, 21397, 21401, 21405, 21413, 21420, 21420,
    +     21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420,
    +     21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420,
    +     21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420, 21420,
    +     21420, 21421, 21425, 21429, 21433, 21437, 21441, 21445, 21449, 21453,
    +     21457, 21461, 21469, 21473, 21477, 21481, 21485, 21489, 21493, 21497,
    +     21501, 21505, 21509, 21513, 21517, 21529, 21541, 21553, 21565, 21577,
    +     21589, 21601, 21613, 21625, 21637, 21649, 21661, 21673, 21685, 21697,
    +     21709, 21721, 21733, 21737, 21741, 21745, 21749},
    +    {21749, 21761, 21773, 21785, 21797, 21809, 21817, 21825, 21833, 21841,
    +     21849, 21857, 21865, 21873, 21881, 21889, 21897, 21905, 21913, 21921,
    +     21929, 21937, 21945, 21953, 21961, 21969, 21977, 21985, 21993, 22001,
    +     22009, 22017, 22025, 22033, 22041, 22049, 22057, 22065, 22073, 22081,
    +     22089, 22097, 22105, 22113, 22121, 22129, 22137, 22145, 22153, 22161,
    +     22169, 22177, 22185, 22193, 22201, 22209, 22217, 22225, 22233, 22241,
    +     22249, 22257, 22265, 22273, 22281, 22289, 22297, 22305, 22313, 22321,
    +     22329, 22337, 22345, 22353, 22361, 22369, 22377, 22385, 22393, 22401,
    +     22409, 22417, 22425, 22433, 22441, 22449, 22457, 22465, 22473, 22481,
    +     22489, 22497, 22505, 22513, 22521, 22533, 22545, 22557, 22569, 22581,
    +     22593, 22605, 22617, 22629, 22641, 22653, 22665, 22673, 22681, 22689,
    +     22697, 22705, 22713, 22721, 22729, 22737, 22745, 22753, 22761, 22769,
    +     22777, 22785, 22793, 22801, 22809, 22817, 22825, 22833, 22841, 22849,
    +     22857, 22865, 22873, 22881, 22889, 22897, 22905, 22913, 22921, 22929,
    +     22937, 22945, 22953, 22961, 22969, 22977, 22985, 22993, 23001, 23009,
    +     23017, 23025, 23037, 23049, 23061, 23073, 23085, 23093, 23101, 23109,
    +     23117, 23125, 23133, 23141, 23149, 23157, 23165, 23173, 23181, 23189,
    +     23197, 23205, 23213, 23221, 23229, 23237, 23245, 23253, 23261, 23269,
    +     23277, 23285, 23293, 23301, 23309, 23317, 23325, 23333, 23341, 23349,
    +     23357, 23365, 23373, 23381, 23389, 23397, 23405, 23413, 23421, 23429,
    +     23437, 23445, 23453, 23461, 23469, 23477, 23485, 23493, 23501, 23509,
    +     23517, 23525, 23533, 23541, 23549, 23557, 23565, 23573, 23581, 23589,
    +     23597, 23605, 23613, 23621, 23633, 23645, 23653, 23661, 23669, 23677,
    +     23685, 23693, 23701, 23709, 23717, 23725, 23733, 23741, 23749, 23757,
    +     23765, 23773, 23781, 23793, 23805, 23817, 23825, 23833, 23841, 23849,
    +     23857, 23865, 23873, 23881, 23889, 23897, 23905},
    +    {23905, 23913, 23921, 23929, 23937, 23945, 23953, 23961, 23969, 23977,
    +     23985, 23993, 24001, 24009, 24017, 24025, 24033, 24041, 24049, 24057,
    +     24065, 24073, 24081, 24089, 24097, 24105, 24113, 24121, 24129, 24137,
    +     24145, 24153, 24161, 24169, 24177, 24185, 24193, 24201, 24209, 24217,
    +     24225, 24233, 24241, 24249, 24257, 24265, 24273, 24281, 24289, 24297,
    +     24305, 24313, 24321, 24329, 24337, 24345, 24353, 24361, 24369, 24377,
    +     24385, 24393, 24400, 24400, 24400, 24400, 24400, 24400, 24400, 24400,
    +     24400, 24400, 24400, 24400, 24400, 24400, 24400, 24400, 24400, 24400,
    +     24401, 24413, 24425, 24437, 24449, 24461, 24473, 24485, 24497, 24509,
    +     24521, 24533, 24545, 24557, 24569, 24581, 24593, 24605, 24617, 24629,
    +     24641, 24653, 24665, 24677, 24689, 24701, 24713, 24725, 24737, 24749,
    +     24761, 24773, 24785, 24797, 24809, 24821, 24833, 24845, 24857, 24869,
    +     24881, 24893, 24905, 24917, 24929, 24941, 24953, 24965, 24977, 24989,
    +     25001, 25013, 25025, 25037, 25049, 25061, 25073, 25085, 25097, 25109,
    +     25121, 25133, 25145, 25157, 25168, 25168, 25169, 25181, 25193, 25205,
    +     25217, 25229, 25241, 25253, 25265, 25277, 25289, 25301, 25313, 25325,
    +     25337, 25349, 25361, 25373, 25385, 25397, 25409, 25421, 25433, 25445,
    +     25457, 25469, 25481, 25493, 25505, 25517, 25529, 25541, 25553, 25565,
    +     25577, 25589, 25601, 25613, 25625, 25637, 25649, 25661, 25673, 25685,
    +     25697, 25709, 25721, 25733, 25745, 25757, 25769, 25781, 25793, 25805,
    +     25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816,
    +     25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816,
    +     25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816,
    +     25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816, 25816,
    +     25817, 25829, 25841, 25857, 25873, 25889, 25905, 25921, 25937, 25953,
    +     25965, 26037, 26069, 26084, 26084, 26084, 26084},
    +    {26084, 26084, 26084, 26084, 26084, 26084, 26084, 26084, 26084, 26084,
    +     26084, 26084, 26084, 26084, 26084, 26084, 26085, 26089, 26093, 26097,
    +     26101, 26105, 26109, 26113, 26117, 26121, 26132, 26132, 26132, 26132,
    +     26132, 26132, 26132, 26132, 26132, 26132, 26132, 26132, 26132, 26132,
    +     26132, 26132, 26132, 26132, 26132, 26132, 26132, 26132, 26133, 26141,
    +     26145, 26149, 26153, 26157, 26161, 26165, 26169, 26173, 26177, 26181,
    +     26185, 26189, 26193, 26197, 26201, 26205, 26209, 26213, 26217, 26220,
    +     26220, 26221, 26225, 26229, 26237, 26245, 26253, 26261, 26265, 26269,
    +     26273, 26277, 26281, 26284, 26285, 26289, 26293, 26297, 26301, 26305,
    +     26309, 26313, 26317, 26321, 26325, 26329, 26333, 26337, 26341, 26345,
    +     26349, 26353, 26357, 26360, 26361, 26365, 26369, 26373, 26376, 26376,
    +     26376, 26376, 26377, 26385, 26393, 26400, 26401, 26408, 26409, 26417,
    +     26425, 26433, 26441, 26449, 26457, 26465, 26473, 26481, 26489, 26493,
    +     26501, 26509, 26517, 26525, 26533, 26541, 26549, 26557, 26565, 26573,
    +     26581, 26589, 26593, 26597, 26601, 26605, 26609, 26613, 26617, 26621,
    +     26625, 26629, 26633, 26637, 26641, 26645, 26649, 26653, 26657, 26661,
    +     26665, 26669, 26673, 26677, 26681, 26685, 26689, 26693, 26697, 26701,
    +     26705, 26709, 26713, 26717, 26721, 26725, 26729, 26733, 26737, 26741,
    +     26745, 26749, 26753, 26757, 26761, 26765, 26769, 26773, 26777, 26781,
    +     26785, 26789, 26793, 26797, 26801, 26805, 26809, 26813, 26817, 26821,
    +     26825, 26829, 26833, 26837, 26841, 26845, 26849, 26853, 26857, 26861,
    +     26865, 26869, 26873, 26877, 26881, 26885, 26889, 26893, 26897, 26901,
    +     26905, 26909, 26913, 26917, 26921, 26925, 26929, 26933, 26937, 26941,
    +     26945, 26949, 26953, 26957, 26961, 26965, 26969, 26973, 26977, 26981,
    +     26985, 26989, 26993, 26997, 27001, 27005, 27017, 27029, 27041, 27053,
    +     27065, 27077, 27085, 27092, 27092, 27092, 27092},
    +    {27092, 27093, 27097, 27101, 27105, 27109, 27113, 27117, 27121, 27125,
    +     27129, 27133, 27137, 27141, 27145, 27149, 27153, 27157, 27161, 27165,
    +     27169, 27173, 27177, 27181, 27185, 27189, 27193, 27197, 27201, 27205,
    +     27209, 27213, 27217, 27221, 27225, 27229, 27233, 27237, 27241, 27245,
    +     27249, 27253, 27257, 27261, 27265, 27269, 27273, 27277, 27281, 27285,
    +     27289, 27293, 27297, 27301, 27305, 27309, 27313, 27317, 27321, 27325,
    +     27329, 27333, 27337, 27341, 27345, 27349, 27353, 27357, 27361, 27365,
    +     27369, 27373, 27377, 27381, 27385, 27389, 27393, 27397, 27401, 27405,
    +     27409, 27413, 27417, 27421, 27425, 27429, 27433, 27437, 27441, 27445,
    +     27449, 27453, 27457, 27461, 27465, 27469, 27473, 27477, 27481, 27485,
    +     27489, 27493, 27497, 27501, 27505, 27509, 27513, 27517, 27521, 27525,
    +     27529, 27533, 27537, 27541, 27545, 27549, 27553, 27557, 27561, 27565,
    +     27569, 27573, 27577, 27581, 27585, 27589, 27593, 27597, 27601, 27605,
    +     27609, 27613, 27617, 27621, 27625, 27629, 27633, 27637, 27641, 27645,
    +     27649, 27653, 27657, 27661, 27665, 27669, 27673, 27677, 27681, 27685,
    +     27689, 27693, 27697, 27701, 27705, 27709, 27713, 27717, 27721, 27725,
    +     27729, 27733, 27737, 27741, 27745, 27749, 27753, 27757, 27761, 27765,
    +     27769, 27773, 27777, 27781, 27785, 27789, 27793, 27797, 27801, 27805,
    +     27809, 27813, 27817, 27821, 27825, 27829, 27833, 27837, 27841, 27845,
    +     27849, 27852, 27852, 27852, 27853, 27857, 27861, 27865, 27869, 27873,
    +     27876, 27876, 27877, 27881, 27885, 27889, 27893, 27897, 27900, 27900,
    +     27901, 27905, 27909, 27913, 27917, 27921, 27924, 27924, 27925, 27929,
    +     27933, 27936, 27936, 27936, 27937, 27941, 27945, 27949, 27957, 27961,
    +     27965, 27968, 27969, 27973, 27977, 27981, 27985, 27989, 27993, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996},
    +    {27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996,
    +     27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27996, 27997,
    +     28001, 28005, 28009, 28013, 28016, 28017, 28021, 28025, 28029, 28033,
    +     28037, 28041, 28045, 28049, 28053, 28057, 28061, 28065, 28069, 28073,
    +     28077, 28081, 28085, 28089, 28093, 28097, 28101, 28105, 28109, 28113,
    +     28117, 28121, 28125, 28129, 28133, 28137, 28141, 28145, 28149, 28153,
    +     28157, 28161, 28165, 28169, 28173, 28177, 28181, 28184, 28185, 28189,
    +     28193, 28197, 28201, 28205, 28209, 28213, 28217, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220},
    +    {28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220, 28220,
    +     28220, 28220, 28220, 28220, 28220, 28228, 28228, 28236, 28236, 28236,
    +     28236, 28236, 28236, 28236, 28236, 28236, 28236, 28236, 28236, 28236,
    +     28236, 28236, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244},
    +    {28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244, 28244,
    +     28244, 28244, 28244, 28244, 28244, 28244, 28244, 28252, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260},
    +    {28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260, 28260,
    +     28260, 28260, 28260, 28260, 28260, 28260, 28268, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276},
    +    {28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276,
    +     28276, 28276, 28276, 28276, 28276, 28276, 28276, 28276, 28284, 28292,
    +     28292, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300},
    +    {28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300, 28300,
    +     28300, 28300, 28300, 28300, 28300, 28300, 28300, 28308, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316},
    +    {28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316, 28316,
    +     28316, 28316, 28316, 28316, 28316, 28316, 28316, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324},
    +    {28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324, 28324,
    +     28324, 28324, 28324, 28324, 28324, 28332, 28340, 28352, 28364, 28376,
    +     28388, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400,
    +     28400, 28400, 28400, 28400, 28400, 28400, 28400, 28400, 28408, 28416,
    +     28428, 28440, 28452, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464},
    +    {28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464, 28464,
    +     28464, 28464, 28464, 28464, 28464, 28464, 28465},
    +    {28465, 28469, 28473, 28477, 28481, 28485, 28489, 28493, 28497, 28501,
    +     28505, 28509, 28513, 28517, 28521, 28525, 28529, 28533, 28537, 28541,
    +     28545, 28549, 28553, 28557, 28561, 28565, 28569, 28573, 28577, 28581,
    +     28585, 28589, 28593, 28597, 28601, 28605, 28609, 28613, 28617, 28621,
    +     28625, 28629, 28633, 28637, 28641, 28645, 28649, 28653, 28657, 28661,
    +     28665, 28669, 28673, 28677, 28681, 28685, 28689, 28693, 28697, 28701,
    +     28705, 28709, 28713, 28717, 28721, 28725, 28729, 28733, 28737, 28741,
    +     28745, 28749, 28753, 28757, 28761, 28765, 28769, 28773, 28777, 28781,
    +     28785, 28789, 28793, 28797, 28801, 28804, 28805, 28809, 28813, 28817,
    +     28821, 28825, 28829, 28833, 28837, 28841, 28845, 28849, 28853, 28857,
    +     28861, 28865, 28869, 28873, 28877, 28881, 28885, 28889, 28893, 28897,
    +     28901, 28905, 28909, 28913, 28917, 28921, 28925, 28929, 28933, 28937,
    +     28941, 28945, 28949, 28953, 28957, 28961, 28965, 28969, 28973, 28977,
    +     28981, 28985, 28989, 28993, 28997, 29001, 29005, 29009, 29013, 29017,
    +     29021, 29025, 29029, 29033, 29037, 29041, 29045, 29049, 29053, 29057,
    +     29061, 29065, 29069, 29073, 29077, 29081, 29085, 29088, 29089, 29093,
    +     29096, 29096, 29097, 29100, 29100, 29101, 29105, 29108, 29108, 29109,
    +     29113, 29117, 29121, 29124, 29125, 29129, 29133, 29137, 29141, 29145,
    +     29149, 29153, 29157, 29161, 29165, 29169, 29172, 29173, 29176, 29177,
    +     29181, 29185, 29189, 29193, 29197, 29201, 29204, 29205, 29209, 29213,
    +     29217, 29221, 29225, 29229, 29233, 29237, 29241, 29245, 29249, 29253,
    +     29257, 29261, 29265, 29269, 29273, 29277, 29281, 29285, 29289, 29293,
    +     29297, 29301, 29305, 29309, 29313, 29317, 29321, 29325, 29329, 29333,
    +     29337, 29341, 29345, 29349, 29353, 29357, 29361, 29365, 29369, 29373,
    +     29377, 29381, 29385, 29389, 29393, 29397, 29401, 29405, 29409, 29413,
    +     29417, 29421, 29425, 29429, 29433, 29437, 29441},
    +    {29441, 29445, 29449, 29453, 29457, 29461, 29464, 29465, 29469, 29473,
    +     29477, 29480, 29480, 29481, 29485, 29489, 29493, 29497, 29501, 29505,
    +     29509, 29512, 29513, 29517, 29521, 29525, 29529, 29533, 29537, 29540,
    +     29541, 29545, 29549, 29553, 29557, 29561, 29565, 29569, 29573, 29577,
    +     29581, 29585, 29589, 29593, 29597, 29601, 29605, 29609, 29613, 29617,
    +     29621, 29625, 29629, 29633, 29637, 29641, 29645, 29649, 29652, 29653,
    +     29657, 29661, 29665, 29668, 29669, 29673, 29677, 29681, 29685, 29688,
    +     29689, 29692, 29692, 29692, 29693, 29697, 29701, 29705, 29709, 29713,
    +     29717, 29720, 29721, 29725, 29729, 29733, 29737, 29741, 29745, 29749,
    +     29753, 29757, 29761, 29765, 29769, 29773, 29777, 29781, 29785, 29789,
    +     29793, 29797, 29801, 29805, 29809, 29813, 29817, 29821, 29825, 29829,
    +     29833, 29837, 29841, 29845, 29849, 29853, 29857, 29861, 29865, 29869,
    +     29873, 29877, 29881, 29885, 29889, 29893, 29897, 29901, 29905, 29909,
    +     29913, 29917, 29921, 29925, 29929, 29933, 29937, 29941, 29945, 29949,
    +     29953, 29957, 29961, 29965, 29969, 29973, 29977, 29981, 29985, 29989,
    +     29993, 29997, 30001, 30005, 30009, 30013, 30017, 30021, 30025, 30029,
    +     30033, 30037, 30041, 30045, 30049, 30053, 30057, 30061, 30065, 30069,
    +     30073, 30077, 30081, 30085, 30089, 30093, 30097, 30101, 30105, 30109,
    +     30113, 30117, 30121, 30125, 30129, 30133, 30137, 30141, 30145, 30149,
    +     30153, 30157, 30161, 30165, 30169, 30173, 30177, 30181, 30185, 30189,
    +     30193, 30197, 30201, 30205, 30209, 30213, 30217, 30221, 30225, 30229,
    +     30233, 30237, 30241, 30245, 30249, 30253, 30257, 30261, 30265, 30269,
    +     30273, 30277, 30281, 30285, 30289, 30293, 30297, 30301, 30305, 30309,
    +     30313, 30317, 30321, 30325, 30329, 30333, 30337, 30341, 30345, 30349,
    +     30353, 30357, 30361, 30365, 30369, 30373, 30377, 30381, 30385, 30389,
    +     30393, 30397, 30401, 30405, 30409, 30413, 30417},
    +    {30417, 30421, 30425, 30429, 30433, 30437, 30441, 30445, 30449, 30453,
    +     30457, 30461, 30465, 30469, 30473, 30477, 30481, 30485, 30489, 30493,
    +     30497, 30501, 30505, 30509, 30513, 30517, 30521, 30525, 30529, 30533,
    +     30537, 30541, 30545, 30549, 30553, 30557, 30561, 30565, 30569, 30573,
    +     30577, 30581, 30585, 30589, 30593, 30597, 30601, 30605, 30609, 30613,
    +     30617, 30621, 30625, 30629, 30633, 30637, 30641, 30645, 30649, 30653,
    +     30657, 30661, 30665, 30669, 30673, 30677, 30681, 30685, 30689, 30693,
    +     30697, 30701, 30705, 30709, 30713, 30717, 30721, 30725, 30729, 30733,
    +     30737, 30741, 30745, 30749, 30753, 30757, 30761, 30765, 30769, 30773,
    +     30777, 30781, 30785, 30789, 30793, 30797, 30801, 30805, 30809, 30813,
    +     30817, 30821, 30825, 30829, 30833, 30837, 30841, 30845, 30849, 30853,
    +     30857, 30861, 30865, 30869, 30873, 30877, 30881, 30885, 30889, 30893,
    +     30897, 30901, 30905, 30909, 30913, 30917, 30921, 30925, 30929, 30933,
    +     30937, 30941, 30945, 30949, 30953, 30957, 30961, 30965, 30969, 30973,
    +     30977, 30981, 30985, 30989, 30993, 30997, 31001, 31005, 31009, 31013,
    +     31017, 31021, 31025, 31029, 31033, 31037, 31041, 31045, 31049, 31053,
    +     31057, 31061, 31065, 31069, 31073, 31077, 31080, 31080, 31081, 31085,
    +     31089, 31093, 31097, 31101, 31105, 31109, 31113, 31117, 31121, 31125,
    +     31129, 31133, 31137, 31141, 31145, 31149, 31153, 31157, 31161, 31165,
    +     31169, 31173, 31177, 31181, 31185, 31189, 31193, 31197, 31201, 31205,
    +     31209, 31213, 31217, 31221, 31225, 31229, 31233, 31237, 31241, 31245,
    +     31249, 31253, 31257, 31261, 31265, 31269, 31273, 31277, 31281, 31285,
    +     31289, 31293, 31297, 31301, 31305, 31309, 31313, 31317, 31321, 31325,
    +     31329, 31333, 31337, 31341, 31345, 31349, 31353, 31357, 31361, 31365,
    +     31369, 31373, 31377, 31381, 31385, 31389, 31393, 31397, 31401, 31405,
    +     31409, 31413, 31417, 31421, 31425, 31429, 31433},
    +    {31433, 31437, 31441, 31445, 31449, 31453, 31457, 31461, 31465, 31469,
    +     31473, 31477, 31481, 31485, 31489, 31493, 31497, 31501, 31505, 31509,
    +     31513, 31517, 31521, 31525, 31529, 31533, 31537, 31541, 31545, 31549,
    +     31553, 31557, 31561, 31565, 31569, 31573, 31577, 31581, 31585, 31589,
    +     31593, 31597, 31601, 31605, 31609, 31613, 31617, 31621, 31625, 31629,
    +     31633, 31637, 31641, 31645, 31649, 31653, 31657, 31661, 31665, 31669,
    +     31673, 31677, 31681, 31685, 31689, 31693, 31697, 31701, 31705, 31709,
    +     31713, 31717, 31721, 31725, 31729, 31733, 31737, 31741, 31745, 31749,
    +     31753, 31757, 31761, 31765, 31769, 31773, 31777, 31781, 31785, 31789,
    +     31793, 31797, 31801, 31805, 31809, 31813, 31817, 31821, 31825, 31829,
    +     31833, 31837, 31841, 31845, 31849, 31853, 31857, 31861, 31865, 31869,
    +     31873, 31877, 31881, 31885, 31889, 31893, 31897, 31901, 31905, 31909,
    +     31913, 31917, 31921, 31925, 31929, 31933, 31937, 31941, 31945, 31949,
    +     31953, 31957, 31961, 31965, 31969, 31973, 31977, 31981, 31985, 31989,
    +     31993, 31997, 32001, 32005, 32009, 32013, 32017, 32021, 32025, 32029,
    +     32033, 32037, 32041, 32045, 32049, 32053, 32057, 32061, 32065, 32069,
    +     32073, 32077, 32081, 32085, 32089, 32093, 32097, 32101, 32105, 32109,
    +     32113, 32117, 32121, 32125, 32129, 32133, 32137, 32141, 32145, 32149,
    +     32153, 32157, 32161, 32165, 32169, 32173, 32177, 32181, 32185, 32189,
    +     32193, 32197, 32201, 32205, 32209, 32213, 32217, 32221, 32225, 32229,
    +     32233, 32237, 32241, 32245, 32248, 32248, 32249, 32253, 32257, 32261,
    +     32265, 32269, 32273, 32277, 32281, 32285, 32289, 32293, 32297, 32301,
    +     32305, 32309, 32313, 32317, 32321, 32325, 32329, 32333, 32337, 32341,
    +     32345, 32349, 32353, 32357, 32361, 32365, 32369, 32373, 32377, 32381,
    +     32385, 32389, 32393, 32397, 32401, 32405, 32409, 32413, 32417, 32421,
    +     32425, 32429, 32433, 32437, 32441, 32445, 32448},
    +    {32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448,
    +     32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448,
    +     32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448,
    +     32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448,
    +     32448, 32448, 32448, 32448, 32448, 32448, 32448, 32448, 32449, 32453,
    +     32457, 32461, 32465, 32469, 32473, 32477, 32481, 32485, 32489, 32493,
    +     32497, 32501, 32505, 32509, 32513, 32517, 32521, 32525, 32529, 32533,
    +     32537, 32541, 32545, 32549, 32553, 32557, 32561, 32565, 32569, 32573,
    +     32577, 32581, 32585, 32589, 32593, 32597, 32601, 32605, 32609, 32613,
    +     32617, 32621, 32625, 32629, 32633, 32637, 32641, 32645, 32649, 32653,
    +     32657, 32661, 32665, 32669, 32673, 32677, 32681, 32685, 32689, 32693,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696},
    +    {32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696, 32696,
    +     32696, 32696, 32696, 32696, 32696, 32696, 32697},
    +    {32697, 32701, 32705, 32709, 32712, 32713, 32717, 32721, 32725, 32729,
    +     32733, 32737, 32741, 32745, 32749, 32753, 32757, 32761, 32765, 32769,
    +     32773, 32777, 32781, 32785, 32789, 32793, 32797, 32801, 32805, 32809,
    +     32813, 32817, 32820, 32821, 32825, 32828, 32829, 32832, 32832, 32833,
    +     32836, 32837, 32841, 32845, 32849, 32853, 32857, 32861, 32865, 32869,
    +     32873, 32876, 32877, 32881, 32885, 32889, 32892, 32893, 32896, 32897,
    +     32900, 32900, 32900, 32900, 32900, 32900, 32901, 32904, 32904, 32904,
    +     32904, 32905, 32908, 32909, 32912, 32913, 32916, 32917, 32921, 32925,
    +     32928, 32929, 32933, 32936, 32937, 32940, 32940, 32941, 32944, 32945,
    +     32948, 32949, 32952, 32953, 32956, 32957, 32960, 32961, 32965, 32968,
    +     32969, 32972, 32972, 32973, 32977, 32981, 32985, 32988, 32989, 32993,
    +     32997, 33001, 33005, 33009, 33013, 33016, 33017, 33021, 33025, 33029,
    +     33032, 33033, 33037, 33041, 33045, 33048, 33049, 33052, 33053, 33057,
    +     33061, 33065, 33069, 33073, 33077, 33081, 33085, 33089, 33092, 33093,
    +     33097, 33101, 33105, 33109, 33113, 33117, 33121, 33125, 33129, 33133,
    +     33137, 33141, 33145, 33149, 33153, 33157, 33160, 33160, 33160, 33160,
    +     33160, 33161, 33165, 33169, 33172, 33173, 33177, 33181, 33185, 33189,
    +     33192, 33193, 33197, 33201, 33205, 33209, 33213, 33217, 33221, 33225,
    +     33229, 33233, 33237, 33241, 33245, 33249, 33253, 33257, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260},
    +    {33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260, 33260,
    +     33260, 33260, 33260, 33260, 33260, 33260, 33261},
    +    {33261, 33269, 33277, 33285, 33293, 33301, 33309, 33317, 33325, 33333,
    +     33341, 33348, 33348, 33348, 33348, 33348, 33349, 33361, 33373, 33385,
    +     33397, 33409, 33421, 33433, 33445, 33457, 33469, 33481, 33493, 33505,
    +     33517, 33529, 33541, 33553, 33565, 33577, 33589, 33601, 33613, 33625,
    +     33637, 33649, 33661, 33673, 33677, 33681, 33689, 33696, 33697, 33701,
    +     33705, 33709, 33713, 33717, 33721, 33725, 33729, 33733, 33737, 33741,
    +     33745, 33749, 33753, 33757, 33761, 33765, 33769, 33773, 33777, 33781,
    +     33785, 33789, 33793, 33797, 33801, 33809, 33817, 33825, 33833, 33845,
    +     33852, 33852, 33852, 33852, 33852, 33852, 33852, 33852, 33852, 33852,
    +     33852, 33852, 33852, 33852, 33852, 33852, 33852, 33852, 33852, 33852,
    +     33852, 33852, 33852, 33852, 33852, 33852, 33853, 33861, 33869, 33876,
    +     33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876,
    +     33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876,
    +     33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876, 33876,
    +     33876, 33876, 33876, 33876, 33877, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884, 33884,
    +     33884, 33884, 33884, 33884, 33884, 33884, 33885},
    +    {33885, 33893, 33901, 33904, 33904, 33904, 33904, 33904, 33904, 33904,
    +     33904, 33904, 33904, 33904, 33904, 33904, 33905, 33909, 33913, 33917,
    +     33925, 33929, 33933, 33937, 33941, 33945, 33949, 33953, 33957, 33961,
    +     33965, 33969, 33973, 33977, 33981, 33985, 33989, 33993, 33997, 34001,
    +     34005, 34009, 34013, 34017, 34021, 34025, 34029, 34033, 34037, 34041,
    +     34045, 34049, 34053, 34057, 34061, 34065, 34069, 34073, 34077, 34081,
    +     34084, 34084, 34084, 34084, 34085, 34097, 34109, 34121, 34133, 34145,
    +     34157, 34169, 34181, 34192, 34192, 34192, 34192, 34192, 34192, 34192,
    +     34193, 34197, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200},
    +    {34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200, 34200,
    +     34201, 34205, 34209, 34213, 34217, 34221, 34225, 34229, 34233, 34237,
    +     34240, 34240, 34240, 34240, 34240, 34240, 34240},
    +    {34240, 34244, 34248, 34252, 34256, 34260, 34264, 34268, 34272, 34276,
    +     34280, 34284, 34288, 34292, 34296, 34300, 34304, 34308, 34312, 34316,
    +     34320, 34324, 34328, 34332, 34336, 34340, 34344, 34348, 34352, 34356,
    +     34360, 34364, 34368, 34372, 34376, 34380, 34384, 34388, 34392, 34396,
    +     34400, 34404, 34408, 34412, 34416, 34420, 34424, 34428, 34432, 34436,
    +     34440, 34444, 34448, 34452, 34456, 34460, 34464, 34468, 34472, 34476,
    +     34480, 34484, 34488, 34492, 34496, 34500, 34504, 34508, 34512, 34516,
    +     34520, 34524, 34528, 34532, 34536, 34540, 34544, 34548, 34552, 34556,
    +     34560, 34564, 34568, 34572, 34576, 34580, 34584, 34588, 34592, 34596,
    +     34600, 34604, 34608, 34612, 34616, 34620, 34624, 34628, 34632, 34636,
    +     34640, 34644, 34648, 34652, 34656, 34660, 34664, 34668, 34672, 34676,
    +     34680, 34684, 34688, 34692, 34696, 34700, 34704, 34708, 34712, 34716,
    +     34720, 34724, 34728, 34732, 34736, 34740, 34744, 34748, 34752, 34756,
    +     34760, 34764, 34768, 34772, 34776, 34780, 34784, 34788, 34792, 34796,
    +     34800, 34804, 34808, 34812, 34816, 34820, 34824, 34828, 34832, 34836,
    +     34840, 34844, 34848, 34852, 34856, 34860, 34864, 34868, 34872, 34876,
    +     34880, 34884, 34888, 34892, 34896, 34900, 34904, 34908, 34912, 34916,
    +     34920, 34924, 34928, 34932, 34936, 34940, 34944, 34948, 34952, 34956,
    +     34960, 34964, 34968, 34972, 34976, 34980, 34984, 34988, 34992, 34996,
    +     35000, 35004, 35008, 35012, 35016, 35020, 35024, 35028, 35032, 35036,
    +     35040, 35044, 35048, 35052, 35056, 35060, 35064, 35068, 35072, 35076,
    +     35080, 35084, 35088, 35092, 35096, 35100, 35104, 35108, 35112, 35116,
    +     35120, 35124, 35128, 35132, 35136, 35140, 35144, 35148, 35152, 35156,
    +     35160, 35164, 35168, 35172, 35176, 35180, 35184, 35188, 35192, 35196,
    +     35200, 35204, 35208, 35212, 35216, 35220, 35224, 35228, 35232, 35236,
    +     35240, 35244, 35248, 35252, 35256, 35260, 35264},
    +    {35264, 35268, 35272, 35276, 35280, 35284, 35288, 35292, 35296, 35300,
    +     35304, 35308, 35312, 35316, 35320, 35324, 35328, 35332, 35336, 35340,
    +     35344, 35348, 35352, 35356, 35360, 35364, 35368, 35372, 35376, 35380,
    +     35384, 35388, 35392, 35396, 35400, 35404, 35408, 35412, 35416, 35420,
    +     35424, 35428, 35432, 35436, 35440, 35444, 35448, 35452, 35456, 35460,
    +     35464, 35468, 35472, 35476, 35480, 35484, 35488, 35492, 35496, 35500,
    +     35504, 35508, 35512, 35516, 35520, 35524, 35528, 35532, 35536, 35540,
    +     35544, 35548, 35552, 35556, 35560, 35564, 35568, 35572, 35576, 35580,
    +     35584, 35588, 35592, 35596, 35600, 35604, 35608, 35612, 35616, 35620,
    +     35624, 35628, 35632, 35636, 35640, 35644, 35648, 35652, 35656, 35660,
    +     35664, 35668, 35672, 35676, 35680, 35684, 35688, 35692, 35696, 35700,
    +     35704, 35708, 35712, 35716, 35720, 35724, 35728, 35732, 35736, 35740,
    +     35744, 35748, 35752, 35756, 35760, 35764, 35768, 35772, 35776, 35780,
    +     35784, 35788, 35792, 35796, 35800, 35804, 35808, 35812, 35816, 35820,
    +     35824, 35828, 35832, 35836, 35840, 35844, 35848, 35852, 35856, 35860,
    +     35864, 35868, 35872, 35876, 35880, 35884, 35888, 35892, 35896, 35900,
    +     35904, 35908, 35912, 35916, 35920, 35924, 35928, 35932, 35936, 35940,
    +     35944, 35948, 35952, 35956, 35960, 35964, 35968, 35972, 35976, 35980,
    +     35984, 35988, 35992, 35996, 36000, 36004, 36008, 36012, 36016, 36020,
    +     36024, 36028, 36032, 36036, 36040, 36044, 36048, 36052, 36056, 36060,
    +     36064, 36068, 36072, 36076, 36080, 36084, 36088, 36092, 36096, 36100,
    +     36104, 36108, 36112, 36116, 36120, 36124, 36128, 36132, 36136, 36140,
    +     36144, 36148, 36152, 36156, 36160, 36164, 36168, 36172, 36176, 36180,
    +     36184, 36188, 36192, 36196, 36200, 36204, 36208, 36212, 36216, 36220,
    +     36224, 36228, 36232, 36236, 36240, 36244, 36248, 36252, 36256, 36260,
    +     36264, 36268, 36272, 36276, 36280, 36284, 36288},
    +    {36288, 36292, 36296, 36300, 36304, 36308, 36312, 36316, 36320, 36324,
    +     36328, 36332, 36336, 36340, 36344, 36348, 36352, 36356, 36360, 36364,
    +     36368, 36372, 36376, 36380, 36384, 36388, 36392, 36396, 36400, 36404,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408, 36408,
    +     36408, 36408, 36408, 36408, 36408, 36408, 36408}};
    +const char32_t uninorms::decomposition_data[] = {
    +    0,      32,     32,     776,    97,     32,     772,    50,     51,
    +    32,     769,    956,    32,     807,    49,     111,    49,     8260,
    +    52,     49,     8260,   50,     51,     8260,   52,     65,     768,
    +    65,     769,    65,     770,    65,     771,    65,     776,    65,
    +    778,    67,     807,    69,     768,    69,     769,    69,     770,
    +    69,     776,    73,     768,    73,     769,    73,     770,    73,
    +    776,    78,     771,    79,     768,    79,     769,    79,     770,
    +    79,     771,    79,     776,    85,     768,    85,     769,    85,
    +    770,    85,     776,    89,     769,    97,     768,    97,     769,
    +    97,     770,    97,     771,    97,     776,    97,     778,    99,
    +    807,    101,    768,    101,    769,    101,    770,    101,    776,
    +    105,    768,    105,    769,    105,    770,    105,    776,    110,
    +    771,    111,    768,    111,    769,    111,    770,    111,    771,
    +    111,    776,    117,    768,    117,    769,    117,    770,    117,
    +    776,    121,    769,    121,    776,    65,     772,    97,     772,
    +    65,     774,    97,     774,    65,     808,    97,     808,    67,
    +    769,    99,     769,    67,     770,    99,     770,    67,     775,
    +    99,     775,    67,     780,    99,     780,    68,     780,    100,
    +    780,    69,     772,    101,    772,    69,     774,    101,    774,
    +    69,     775,    101,    775,    69,     808,    101,    808,    69,
    +    780,    101,    780,    71,     770,    103,    770,    71,     774,
    +    103,    774,    71,     775,    103,    775,    71,     807,    103,
    +    807,    72,     770,    104,    770,    73,     771,    105,    771,
    +    73,     772,    105,    772,    73,     774,    105,    774,    73,
    +    808,    105,    808,    73,     775,    73,     74,     105,    106,
    +    74,     770,    106,    770,    75,     807,    107,    807,    76,
    +    769,    108,    769,    76,     807,    108,    807,    76,     780,
    +    108,    780,    76,     183,    108,    183,    78,     769,    110,
    +    769,    78,     807,    110,    807,    78,     780,    110,    780,
    +    700,    110,    79,     772,    111,    772,    79,     774,    111,
    +    774,    79,     779,    111,    779,    82,     769,    114,    769,
    +    82,     807,    114,    807,    82,     780,    114,    780,    83,
    +    769,    115,    769,    83,     770,    115,    770,    83,     807,
    +    115,    807,    83,     780,    115,    780,    84,     807,    116,
    +    807,    84,     780,    116,    780,    85,     771,    117,    771,
    +    85,     772,    117,    772,    85,     774,    117,    774,    85,
    +    778,    117,    778,    85,     779,    117,    779,    85,     808,
    +    117,    808,    87,     770,    119,    770,    89,     770,    121,
    +    770,    89,     776,    90,     769,    122,    769,    90,     775,
    +    122,    775,    90,     780,    122,    780,    115,    79,     795,
    +    111,    795,    85,     795,    117,    795,    68,     90,     780,
    +    68,     122,    780,    100,    122,    780,    76,     74,     76,
    +    106,    108,    106,    78,     74,     78,     106,    110,    106,
    +    65,     780,    97,     780,    73,     780,    105,    780,    79,
    +    780,    111,    780,    85,     780,    117,    780,    85,     776,
    +    772,    117,    776,    772,    85,     776,    769,    117,    776,
    +    769,    85,     776,    780,    117,    776,    780,    85,     776,
    +    768,    117,    776,    768,    65,     776,    772,    97,     776,
    +    772,    65,     775,    772,    97,     775,    772,    198,    772,
    +    230,    772,    71,     780,    103,    780,    75,     780,    107,
    +    780,    79,     808,    111,    808,    79,     808,    772,    111,
    +    808,    772,    439,    780,    658,    780,    106,    780,    68,
    +    90,     68,     122,    100,    122,    71,     769,    103,    769,
    +    78,     768,    110,    768,    65,     778,    769,    97,     778,
    +    769,    198,    769,    230,    769,    216,    769,    248,    769,
    +    65,     783,    97,     783,    65,     785,    97,     785,    69,
    +    783,    101,    783,    69,     785,    101,    785,    73,     783,
    +    105,    783,    73,     785,    105,    785,    79,     783,    111,
    +    783,    79,     785,    111,    785,    82,     783,    114,    783,
    +    82,     785,    114,    785,    85,     783,    117,    783,    85,
    +    785,    117,    785,    83,     806,    115,    806,    84,     806,
    +    116,    806,    72,     780,    104,    780,    65,     775,    97,
    +    775,    69,     807,    101,    807,    79,     776,    772,    111,
    +    776,    772,    79,     771,    772,    111,    771,    772,    79,
    +    775,    111,    775,    79,     775,    772,    111,    775,    772,
    +    89,     772,    121,    772,    104,    614,    106,    114,    633,
    +    635,    641,    119,    121,    32,     774,    32,     775,    32,
    +    778,    32,     808,    32,     771,    32,     779,    611,    108,
    +    115,    120,    661,    768,    769,    787,    776,    769,    697,
    +    32,     837,    59,     32,     769,    168,    769,    913,    769,
    +    183,    917,    769,    919,    769,    921,    769,    927,    769,
    +    933,    769,    937,    769,    953,    776,    769,    921,    776,
    +    933,    776,    945,    769,    949,    769,    951,    769,    953,
    +    769,    965,    776,    769,    953,    776,    965,    776,    959,
    +    769,    965,    769,    969,    769,    946,    952,    933,    978,
    +    769,    978,    776,    966,    960,    954,    961,    962,    920,
    +    949,    931,    1045,   768,    1045,   776,    1043,   769,    1030,
    +    776,    1050,   769,    1048,   768,    1059,   774,    1048,   774,
    +    1080,   774,    1077,   768,    1077,   776,    1075,   769,    1110,
    +    776,    1082,   769,    1080,   768,    1091,   774,    1140,   783,
    +    1141,   783,    1046,   774,    1078,   774,    1040,   774,    1072,
    +    774,    1040,   776,    1072,   776,    1045,   774,    1077,   774,
    +    1240,   776,    1241,   776,    1046,   776,    1078,   776,    1047,
    +    776,    1079,   776,    1048,   772,    1080,   772,    1048,   776,
    +    1080,   776,    1054,   776,    1086,   776,    1256,   776,    1257,
    +    776,    1069,   776,    1101,   776,    1059,   772,    1091,   772,
    +    1059,   776,    1091,   776,    1059,   779,    1091,   779,    1063,
    +    776,    1095,   776,    1067,   776,    1099,   776,    1381,   1410,
    +    1575,   1619,   1575,   1620,   1608,   1620,   1575,   1621,   1610,
    +    1620,   1575,   1652,   1608,   1652,   1735,   1652,   1610,   1652,
    +    1749,   1620,   1729,   1620,   1746,   1620,   2344,   2364,   2352,
    +    2364,   2355,   2364,   2325,   2364,   2326,   2364,   2327,   2364,
    +    2332,   2364,   2337,   2364,   2338,   2364,   2347,   2364,   2351,
    +    2364,   2503,   2494,   2503,   2519,   2465,   2492,   2466,   2492,
    +    2479,   2492,   2610,   2620,   2616,   2620,   2582,   2620,   2583,
    +    2620,   2588,   2620,   2603,   2620,   2887,   2902,   2887,   2878,
    +    2887,   2903,   2849,   2876,   2850,   2876,   2962,   3031,   3014,
    +    3006,   3015,   3006,   3014,   3031,   3142,   3158,   3263,   3285,
    +    3270,   3285,   3270,   3286,   3270,   3266,   3270,   3266,   3285,
    +    3398,   3390,   3399,   3390,   3398,   3415,   3545,   3530,   3545,
    +    3535,   3545,   3535,   3530,   3545,   3551,   3661,   3634,   3789,
    +    3762,   3755,   3737,   3755,   3745,   3851,   3906,   4023,   3916,
    +    4023,   3921,   4023,   3926,   4023,   3931,   4023,   3904,   4021,
    +    3953,   3954,   3953,   3956,   4018,   3968,   4018,   3953,   3968,
    +    4019,   3968,   4019,   3953,   3968,   3953,   3968,   3986,   4023,
    +    3996,   4023,   4001,   4023,   4006,   4023,   4011,   4023,   3984,
    +    4021,   4133,   4142,   4316,   6917,   6965,   6919,   6965,   6921,
    +    6965,   6923,   6965,   6925,   6965,   6929,   6965,   6970,   6965,
    +    6972,   6965,   6974,   6965,   6975,   6965,   6978,   6965,   65,
    +    198,    66,     68,     69,     398,    71,     72,     73,     74,
    +    75,     76,     77,     78,     79,     546,    80,     82,     84,
    +    85,     87,     97,     592,    593,    7426,   98,     100,    101,
    +    601,    603,    604,    103,    107,    109,    331,    111,    596,
    +    7446,   7447,   112,    116,    117,    7453,   623,    118,    7461,
    +    946,    947,    948,    966,    967,    105,    114,    117,    118,
    +    946,    947,    961,    966,    967,    1085,   594,    99,     597,
    +    240,    604,    102,    607,    609,    613,    616,    617,    618,
    +    7547,   669,    621,    7557,   671,    625,    624,    626,    627,
    +    628,    629,    632,    642,    643,    427,    649,    650,    7452,
    +    651,    652,    122,    656,    657,    658,    952,    65,     805,
    +    97,     805,    66,     775,    98,     775,    66,     803,    98,
    +    803,    66,     817,    98,     817,    67,     807,    769,    99,
    +    807,    769,    68,     775,    100,    775,    68,     803,    100,
    +    803,    68,     817,    100,    817,    68,     807,    100,    807,
    +    68,     813,    100,    813,    69,     772,    768,    101,    772,
    +    768,    69,     772,    769,    101,    772,    769,    69,     813,
    +    101,    813,    69,     816,    101,    816,    69,     807,    774,
    +    101,    807,    774,    70,     775,    102,    775,    71,     772,
    +    103,    772,    72,     775,    104,    775,    72,     803,    104,
    +    803,    72,     776,    104,    776,    72,     807,    104,    807,
    +    72,     814,    104,    814,    73,     816,    105,    816,    73,
    +    776,    769,    105,    776,    769,    75,     769,    107,    769,
    +    75,     803,    107,    803,    75,     817,    107,    817,    76,
    +    803,    108,    803,    76,     803,    772,    108,    803,    772,
    +    76,     817,    108,    817,    76,     813,    108,    813,    77,
    +    769,    109,    769,    77,     775,    109,    775,    77,     803,
    +    109,    803,    78,     775,    110,    775,    78,     803,    110,
    +    803,    78,     817,    110,    817,    78,     813,    110,    813,
    +    79,     771,    769,    111,    771,    769,    79,     771,    776,
    +    111,    771,    776,    79,     772,    768,    111,    772,    768,
    +    79,     772,    769,    111,    772,    769,    80,     769,    112,
    +    769,    80,     775,    112,    775,    82,     775,    114,    775,
    +    82,     803,    114,    803,    82,     803,    772,    114,    803,
    +    772,    82,     817,    114,    817,    83,     775,    115,    775,
    +    83,     803,    115,    803,    83,     769,    775,    115,    769,
    +    775,    83,     780,    775,    115,    780,    775,    83,     803,
    +    775,    115,    803,    775,    84,     775,    116,    775,    84,
    +    803,    116,    803,    84,     817,    116,    817,    84,     813,
    +    116,    813,    85,     804,    117,    804,    85,     816,    117,
    +    816,    85,     813,    117,    813,    85,     771,    769,    117,
    +    771,    769,    85,     772,    776,    117,    772,    776,    86,
    +    771,    118,    771,    86,     803,    118,    803,    87,     768,
    +    119,    768,    87,     769,    119,    769,    87,     776,    119,
    +    776,    87,     775,    119,    775,    87,     803,    119,    803,
    +    88,     775,    120,    775,    88,     776,    120,    776,    89,
    +    775,    121,    775,    90,     770,    122,    770,    90,     803,
    +    122,    803,    90,     817,    122,    817,    104,    817,    116,
    +    776,    119,    778,    121,    778,    97,     702,    383,    775,
    +    65,     803,    97,     803,    65,     777,    97,     777,    65,
    +    770,    769,    97,     770,    769,    65,     770,    768,    97,
    +    770,    768,    65,     770,    777,    97,     770,    777,    65,
    +    770,    771,    97,     770,    771,    65,     803,    770,    97,
    +    803,    770,    65,     774,    769,    97,     774,    769,    65,
    +    774,    768,    97,     774,    768,    65,     774,    777,    97,
    +    774,    777,    65,     774,    771,    97,     774,    771,    65,
    +    803,    774,    97,     803,    774,    69,     803,    101,    803,
    +    69,     777,    101,    777,    69,     771,    101,    771,    69,
    +    770,    769,    101,    770,    769,    69,     770,    768,    101,
    +    770,    768,    69,     770,    777,    101,    770,    777,    69,
    +    770,    771,    101,    770,    771,    69,     803,    770,    101,
    +    803,    770,    73,     777,    105,    777,    73,     803,    105,
    +    803,    79,     803,    111,    803,    79,     777,    111,    777,
    +    79,     770,    769,    111,    770,    769,    79,     770,    768,
    +    111,    770,    768,    79,     770,    777,    111,    770,    777,
    +    79,     770,    771,    111,    770,    771,    79,     803,    770,
    +    111,    803,    770,    79,     795,    769,    111,    795,    769,
    +    79,     795,    768,    111,    795,    768,    79,     795,    777,
    +    111,    795,    777,    79,     795,    771,    111,    795,    771,
    +    79,     795,    803,    111,    795,    803,    85,     803,    117,
    +    803,    85,     777,    117,    777,    85,     795,    769,    117,
    +    795,    769,    85,     795,    768,    117,    795,    768,    85,
    +    795,    777,    117,    795,    777,    85,     795,    771,    117,
    +    795,    771,    85,     795,    803,    117,    795,    803,    89,
    +    768,    121,    768,    89,     803,    121,    803,    89,     777,
    +    121,    777,    89,     771,    121,    771,    945,    787,    945,
    +    788,    945,    787,    768,    945,    788,    768,    945,    787,
    +    769,    945,    788,    769,    945,    787,    834,    945,    788,
    +    834,    913,    787,    913,    788,    913,    787,    768,    913,
    +    788,    768,    913,    787,    769,    913,    788,    769,    913,
    +    787,    834,    913,    788,    834,    949,    787,    949,    788,
    +    949,    787,    768,    949,    788,    768,    949,    787,    769,
    +    949,    788,    769,    917,    787,    917,    788,    917,    787,
    +    768,    917,    788,    768,    917,    787,    769,    917,    788,
    +    769,    951,    787,    951,    788,    951,    787,    768,    951,
    +    788,    768,    951,    787,    769,    951,    788,    769,    951,
    +    787,    834,    951,    788,    834,    919,    787,    919,    788,
    +    919,    787,    768,    919,    788,    768,    919,    787,    769,
    +    919,    788,    769,    919,    787,    834,    919,    788,    834,
    +    953,    787,    953,    788,    953,    787,    768,    953,    788,
    +    768,    953,    787,    769,    953,    788,    769,    953,    787,
    +    834,    953,    788,    834,    921,    787,    921,    788,    921,
    +    787,    768,    921,    788,    768,    921,    787,    769,    921,
    +    788,    769,    921,    787,    834,    921,    788,    834,    959,
    +    787,    959,    788,    959,    787,    768,    959,    788,    768,
    +    959,    787,    769,    959,    788,    769,    927,    787,    927,
    +    788,    927,    787,    768,    927,    788,    768,    927,    787,
    +    769,    927,    788,    769,    965,    787,    965,    788,    965,
    +    787,    768,    965,    788,    768,    965,    787,    769,    965,
    +    788,    769,    965,    787,    834,    965,    788,    834,    933,
    +    788,    933,    788,    768,    933,    788,    769,    933,    788,
    +    834,    969,    787,    969,    788,    969,    787,    768,    969,
    +    788,    768,    969,    787,    769,    969,    788,    769,    969,
    +    787,    834,    969,    788,    834,    937,    787,    937,    788,
    +    937,    787,    768,    937,    788,    768,    937,    787,    769,
    +    937,    788,    769,    937,    787,    834,    937,    788,    834,
    +    945,    768,    945,    769,    949,    768,    949,    769,    951,
    +    768,    951,    769,    953,    768,    953,    769,    959,    768,
    +    959,    769,    965,    768,    965,    769,    969,    768,    969,
    +    769,    945,    787,    837,    945,    788,    837,    945,    787,
    +    768,    837,    945,    788,    768,    837,    945,    787,    769,
    +    837,    945,    788,    769,    837,    945,    787,    834,    837,
    +    945,    788,    834,    837,    913,    787,    837,    913,    788,
    +    837,    913,    787,    768,    837,    913,    788,    768,    837,
    +    913,    787,    769,    837,    913,    788,    769,    837,    913,
    +    787,    834,    837,    913,    788,    834,    837,    951,    787,
    +    837,    951,    788,    837,    951,    787,    768,    837,    951,
    +    788,    768,    837,    951,    787,    769,    837,    951,    788,
    +    769,    837,    951,    787,    834,    837,    951,    788,    834,
    +    837,    919,    787,    837,    919,    788,    837,    919,    787,
    +    768,    837,    919,    788,    768,    837,    919,    787,    769,
    +    837,    919,    788,    769,    837,    919,    787,    834,    837,
    +    919,    788,    834,    837,    969,    787,    837,    969,    788,
    +    837,    969,    787,    768,    837,    969,    788,    768,    837,
    +    969,    787,    769,    837,    969,    788,    769,    837,    969,
    +    787,    834,    837,    969,    788,    834,    837,    937,    787,
    +    837,    937,    788,    837,    937,    787,    768,    837,    937,
    +    788,    768,    837,    937,    787,    769,    837,    937,    788,
    +    769,    837,    937,    787,    834,    837,    937,    788,    834,
    +    837,    945,    774,    945,    772,    945,    768,    837,    945,
    +    837,    945,    769,    837,    945,    834,    945,    834,    837,
    +    913,    774,    913,    772,    913,    768,    913,    769,    913,
    +    837,    32,     787,    953,    32,     787,    32,     834,    168,
    +    834,    951,    768,    837,    951,    837,    951,    769,    837,
    +    951,    834,    951,    834,    837,    917,    768,    917,    769,
    +    919,    768,    919,    769,    919,    837,    8127,   768,    8127,
    +    769,    8127,   834,    953,    774,    953,    772,    953,    776,
    +    768,    953,    776,    769,    953,    834,    953,    776,    834,
    +    921,    774,    921,    772,    921,    768,    921,    769,    8190,
    +    768,    8190,   769,    8190,   834,    965,    774,    965,    772,
    +    965,    776,    768,    965,    776,    769,    961,    787,    961,
    +    788,    965,    834,    965,    776,    834,    933,    774,    933,
    +    772,    933,    768,    933,    769,    929,    788,    168,    768,
    +    168,    769,    96,     969,    768,    837,    969,    837,    969,
    +    769,    837,    969,    834,    969,    834,    837,    927,    768,
    +    927,    769,    937,    768,    937,    769,    937,    837,    180,
    +    32,     788,    8194,   8195,   32,     32,     32,     32,     32,
    +    32,     32,     32,     32,     8208,   32,     819,    46,     46,
    +    46,     46,     46,     46,     32,     8242,   8242,   8242,   8242,
    +    8242,   8245,   8245,   8245,   8245,   8245,   33,     33,     32,
    +    773,    63,     63,     63,     33,     33,     63,     8242,   8242,
    +    8242,   8242,   32,     48,     105,    52,     53,     54,     55,
    +    56,     57,     43,     8722,   61,     40,     41,     110,    48,
    +    49,     50,     51,     52,     53,     54,     55,     56,     57,
    +    43,     8722,   61,     40,     41,     97,     101,    111,    120,
    +    601,    104,    107,    108,    109,    110,    112,    115,    116,
    +    82,     115,    97,     47,     99,     97,     47,     115,    67,
    +    176,    67,     99,     47,     111,    99,     47,     117,    400,
    +    176,    70,     103,    72,     72,     72,     104,    295,    73,
    +    73,     76,     108,    78,     78,     111,    80,     81,     82,
    +    82,     82,     83,     77,     84,     69,     76,     84,     77,
    +    90,     937,    90,     75,     65,     778,    66,     67,     101,
    +    69,     70,     77,     111,    1488,   1489,   1490,   1491,   105,
    +    70,     65,     88,     960,    947,    915,    928,    8721,   68,
    +    100,    101,    105,    106,    49,     8260,   55,     49,     8260,
    +    57,     49,     8260,   49,     48,     49,     8260,   51,     50,
    +    8260,   51,     49,     8260,   53,     50,     8260,   53,     51,
    +    8260,   53,     52,     8260,   53,     49,     8260,   54,     53,
    +    8260,   54,     49,     8260,   56,     51,     8260,   56,     53,
    +    8260,   56,     55,     8260,   56,     49,     8260,   73,     73,
    +    73,     73,     73,     73,     73,     86,     86,     86,     73,
    +    86,     73,     73,     86,     73,     73,     73,     73,     88,
    +    88,     88,     73,     88,     73,     73,     76,     67,     68,
    +    77,     105,    105,    105,    105,    105,    105,    105,    118,
    +    118,    118,    105,    118,    105,    105,    118,    105,    105,
    +    105,    105,    120,    120,    120,    105,    120,    105,    105,
    +    108,    99,     100,    109,    48,     8260,   51,     8592,   824,
    +    8594,   824,    8596,   824,    8656,   824,    8660,   824,    8658,
    +    824,    8707,   824,    8712,   824,    8715,   824,    8739,   824,
    +    8741,   824,    8747,   8747,   8747,   8747,   8747,   8750,   8750,
    +    8750,   8750,   8750,   8764,   824,    8771,   824,    8773,   824,
    +    8776,   824,    61,     824,    8801,   824,    8781,   824,    60,
    +    824,    62,     824,    8804,   824,    8805,   824,    8818,   824,
    +    8819,   824,    8822,   824,    8823,   824,    8826,   824,    8827,
    +    824,    8834,   824,    8835,   824,    8838,   824,    8839,   824,
    +    8866,   824,    8872,   824,    8873,   824,    8875,   824,    8828,
    +    824,    8829,   824,    8849,   824,    8850,   824,    8882,   824,
    +    8883,   824,    8884,   824,    8885,   824,    12296,  12297,  49,
    +    50,     51,     52,     53,     54,     55,     56,     57,     49,
    +    48,     49,     49,     49,     50,     49,     51,     49,     52,
    +    49,     53,     49,     54,     49,     55,     49,     56,     49,
    +    57,     50,     48,     40,     49,     41,     40,     50,     41,
    +    40,     51,     41,     40,     52,     41,     40,     53,     41,
    +    40,     54,     41,     40,     55,     41,     40,     56,     41,
    +    40,     57,     41,     40,     49,     48,     41,     40,     49,
    +    49,     41,     40,     49,     50,     41,     40,     49,     51,
    +    41,     40,     49,     52,     41,     40,     49,     53,     41,
    +    40,     49,     54,     41,     40,     49,     55,     41,     40,
    +    49,     56,     41,     40,     49,     57,     41,     40,     50,
    +    48,     41,     49,     46,     50,     46,     51,     46,     52,
    +    46,     53,     46,     54,     46,     55,     46,     56,     46,
    +    57,     46,     49,     48,     46,     49,     49,     46,     49,
    +    50,     46,     49,     51,     46,     49,     52,     46,     49,
    +    53,     46,     49,     54,     46,     49,     55,     46,     49,
    +    56,     46,     49,     57,     46,     50,     48,     46,     40,
    +    97,     41,     40,     98,     41,     40,     99,     41,     40,
    +    100,    41,     40,     101,    41,     40,     102,    41,     40,
    +    103,    41,     40,     104,    41,     40,     105,    41,     40,
    +    106,    41,     40,     107,    41,     40,     108,    41,     40,
    +    109,    41,     40,     110,    41,     40,     111,    41,     40,
    +    112,    41,     40,     113,    41,     40,     114,    41,     40,
    +    115,    41,     40,     116,    41,     40,     117,    41,     40,
    +    118,    41,     40,     119,    41,     40,     120,    41,     40,
    +    121,    41,     40,     122,    41,     65,     66,     67,     68,
    +    69,     70,     71,     72,     73,     74,     75,     76,     77,
    +    78,     79,     80,     81,     82,     83,     84,     85,     86,
    +    87,     88,     89,     90,     97,     98,     99,     100,    101,
    +    102,    103,    104,    105,    106,    107,    108,    109,    110,
    +    111,    112,    113,    114,    115,    116,    117,    118,    119,
    +    120,    121,    122,    48,     8747,   8747,   8747,   8747,   58,
    +    58,     61,     61,     61,     61,     61,     61,     10973,  824,
    +    106,    86,     11617,  27597,  40863,  19968,  20008,  20022,  20031,
    +    20057,  20101,  20108,  20128,  20154,  20799,  20837,  20843,  20866,
    +    20886,  20907,  20960,  20981,  20992,  21147,  21241,  21269,  21274,
    +    21304,  21313,  21340,  21353,  21378,  21430,  21448,  21475,  22231,
    +    22303,  22763,  22786,  22794,  22805,  22823,  22899,  23376,  23424,
    +    23544,  23567,  23586,  23608,  23662,  23665,  24027,  24037,  24049,
    +    24062,  24178,  24186,  24191,  24308,  24318,  24331,  24339,  24400,
    +    24417,  24435,  24515,  25096,  25142,  25163,  25903,  25908,  25991,
    +    26007,  26020,  26041,  26080,  26085,  26352,  26376,  26408,  27424,
    +    27490,  27513,  27571,  27595,  27604,  27611,  27663,  27668,  27700,
    +    28779,  29226,  29238,  29243,  29247,  29255,  29273,  29275,  29356,
    +    29572,  29577,  29916,  29926,  29976,  29983,  29992,  30000,  30091,
    +    30098,  30326,  30333,  30382,  30399,  30446,  30683,  30690,  30707,
    +    31034,  31160,  31166,  31348,  31435,  31481,  31859,  31992,  32566,
    +    32593,  32650,  32701,  32769,  32780,  32786,  32819,  32895,  32905,
    +    33251,  33258,  33267,  33276,  33292,  33307,  33311,  33390,  33394,
    +    33400,  34381,  34411,  34880,  34892,  34915,  35198,  35211,  35282,
    +    35328,  35895,  35910,  35925,  35960,  35997,  36196,  36208,  36275,
    +    36523,  36554,  36763,  36784,  36789,  37009,  37193,  37318,  37324,
    +    37329,  38263,  38272,  38428,  38582,  38585,  38632,  38737,  38750,
    +    38754,  38761,  38859,  38893,  38899,  38913,  39080,  39131,  39135,
    +    39318,  39321,  39340,  39592,  39640,  39647,  39717,  39727,  39730,
    +    39740,  39770,  40165,  40565,  40575,  40613,  40635,  40643,  40653,
    +    40657,  40697,  40701,  40718,  40723,  40736,  40763,  40778,  40786,
    +    40845,  40860,  40864,  32,     12306,  21313,  21316,  21317,  12363,
    +    12441,  12365,  12441,  12367,  12441,  12369,  12441,  12371,  12441,
    +    12373,  12441,  12375,  12441,  12377,  12441,  12379,  12441,  12381,
    +    12441,  12383,  12441,  12385,  12441,  12388,  12441,  12390,  12441,
    +    12392,  12441,  12399,  12441,  12399,  12442,  12402,  12441,  12402,
    +    12442,  12405,  12441,  12405,  12442,  12408,  12441,  12408,  12442,
    +    12411,  12441,  12411,  12442,  12358,  12441,  32,     12441,  32,
    +    12442,  12445,  12441,  12424,  12426,  12459,  12441,  12461,  12441,
    +    12463,  12441,  12465,  12441,  12467,  12441,  12469,  12441,  12471,
    +    12441,  12473,  12441,  12475,  12441,  12477,  12441,  12479,  12441,
    +    12481,  12441,  12484,  12441,  12486,  12441,  12488,  12441,  12495,
    +    12441,  12495,  12442,  12498,  12441,  12498,  12442,  12501,  12441,
    +    12501,  12442,  12504,  12441,  12504,  12442,  12507,  12441,  12507,
    +    12442,  12454,  12441,  12527,  12441,  12528,  12441,  12529,  12441,
    +    12530,  12441,  12541,  12441,  12467,  12488,  4352,   4353,   4522,
    +    4354,   4524,   4525,   4355,   4356,   4357,   4528,   4529,   4530,
    +    4531,   4532,   4533,   4378,   4358,   4359,   4360,   4385,   4361,
    +    4362,   4363,   4364,   4365,   4366,   4367,   4368,   4369,   4370,
    +    4449,   4450,   4451,   4452,   4453,   4454,   4455,   4456,   4457,
    +    4458,   4459,   4460,   4461,   4462,   4463,   4464,   4465,   4466,
    +    4467,   4468,   4469,   4448,   4372,   4373,   4551,   4552,   4556,
    +    4558,   4563,   4567,   4569,   4380,   4573,   4575,   4381,   4382,
    +    4384,   4386,   4387,   4391,   4393,   4395,   4396,   4397,   4398,
    +    4399,   4402,   4406,   4416,   4423,   4428,   4593,   4594,   4439,
    +    4440,   4441,   4484,   4485,   4488,   4497,   4498,   4500,   4510,
    +    4513,   19968,  20108,  19977,  22235,  19978,  20013,  19979,  30002,
    +    20057,  19993,  19969,  22825,  22320,  20154,  40,     4352,   41,
    +    40,     4354,   41,     40,     4355,   41,     40,     4357,   41,
    +    40,     4358,   41,     40,     4359,   41,     40,     4361,   41,
    +    40,     4363,   41,     40,     4364,   41,     40,     4366,   41,
    +    40,     4367,   41,     40,     4368,   41,     40,     4369,   41,
    +    40,     4370,   41,     40,     4352,   4449,   41,     40,     4354,
    +    4449,   41,     40,     4355,   4449,   41,     40,     4357,   4449,
    +    41,     40,     4358,   4449,   41,     40,     4359,   4449,   41,
    +    40,     4361,   4449,   41,     40,     4363,   4449,   41,     40,
    +    4364,   4449,   41,     40,     4366,   4449,   41,     40,     4367,
    +    4449,   41,     40,     4368,   4449,   41,     40,     4369,   4449,
    +    41,     40,     4370,   4449,   41,     40,     4364,   4462,   41,
    +    40,     4363,   4457,   4364,   4453,   4523,   41,     40,     4363,
    +    4457,   4370,   4462,   41,     40,     19968,  41,     40,     20108,
    +    41,     40,     19977,  41,     40,     22235,  41,     40,     20116,
    +    41,     40,     20845,  41,     40,     19971,  41,     40,     20843,
    +    41,     40,     20061,  41,     40,     21313,  41,     40,     26376,
    +    41,     40,     28779,  41,     40,     27700,  41,     40,     26408,
    +    41,     40,     37329,  41,     40,     22303,  41,     40,     26085,
    +    41,     40,     26666,  41,     40,     26377,  41,     40,     31038,
    +    41,     40,     21517,  41,     40,     29305,  41,     40,     36001,
    +    41,     40,     31069,  41,     40,     21172,  41,     40,     20195,
    +    41,     40,     21628,  41,     40,     23398,  41,     40,     30435,
    +    41,     40,     20225,  41,     40,     36039,  41,     40,     21332,
    +    41,     40,     31085,  41,     40,     20241,  41,     40,     33258,
    +    41,     40,     33267,  41,     21839,  24188,  25991,  31631,  80,
    +    84,     69,     50,     49,     50,     50,     50,     51,     50,
    +    52,     50,     53,     50,     54,     50,     55,     50,     56,
    +    50,     57,     51,     48,     51,     49,     51,     50,     51,
    +    51,     51,     52,     51,     53,     4352,   4354,   4355,   4357,
    +    4358,   4359,   4361,   4363,   4364,   4366,   4367,   4368,   4369,
    +    4370,   4352,   4449,   4354,   4449,   4355,   4449,   4357,   4449,
    +    4358,   4449,   4359,   4449,   4361,   4449,   4363,   4449,   4364,
    +    4449,   4366,   4449,   4367,   4449,   4368,   4449,   4369,   4449,
    +    4370,   4449,   4366,   4449,   4535,   4352,   4457,   4364,   4462,
    +    4363,   4468,   4363,   4462,   19968,  20108,  19977,  22235,  20116,
    +    20845,  19971,  20843,  20061,  21313,  26376,  28779,  27700,  26408,
    +    37329,  22303,  26085,  26666,  26377,  31038,  21517,  29305,  36001,
    +    31069,  21172,  31192,  30007,  22899,  36969,  20778,  21360,  27880,
    +    38917,  20241,  20889,  27491,  19978,  20013,  19979,  24038,  21491,
    +    21307,  23447,  23398,  30435,  20225,  36039,  21332,  22812,  51,
    +    54,     51,     55,     51,     56,     51,     57,     52,     48,
    +    52,     49,     52,     50,     52,     51,     52,     52,     52,
    +    53,     52,     54,     52,     55,     52,     56,     52,     57,
    +    53,     48,     49,     26376,  50,     26376,  51,     26376,  52,
    +    26376,  53,     26376,  54,     26376,  55,     26376,  56,     26376,
    +    57,     26376,  49,     48,     26376,  49,     49,     26376,  49,
    +    50,     26376,  72,     103,    101,    114,    103,    101,    86,
    +    76,     84,     68,     12450,  12452,  12454,  12456,  12458,  12459,
    +    12461,  12463,  12465,  12467,  12469,  12471,  12473,  12475,  12477,
    +    12479,  12481,  12484,  12486,  12488,  12490,  12491,  12492,  12493,
    +    12494,  12495,  12498,  12501,  12504,  12507,  12510,  12511,  12512,
    +    12513,  12514,  12516,  12518,  12520,  12521,  12522,  12523,  12524,
    +    12525,  12527,  12528,  12529,  12530,  20196,  21644,  12450,  12495,
    +    12442,  12540,  12488,  12450,  12523,  12501,  12449,  12450,  12531,
    +    12504,  12442,  12450,  12450,  12540,  12523,  12452,  12491,  12531,
    +    12463,  12441,  12452,  12531,  12481,  12454,  12457,  12531,  12456,
    +    12473,  12463,  12540,  12488,  12441,  12456,  12540,  12459,  12540,
    +    12458,  12531,  12473,  12458,  12540,  12512,  12459,  12452,  12522,
    +    12459,  12521,  12483,  12488,  12459,  12525,  12522,  12540,  12459,
    +    12441,  12525,  12531,  12459,  12441,  12531,  12510,  12461,  12441,
    +    12459,  12441,  12461,  12441,  12491,  12540,  12461,  12517,  12522,
    +    12540,  12461,  12441,  12523,  12479,  12441,  12540,  12461,  12525,
    +    12461,  12525,  12463,  12441,  12521,  12512,  12461,  12525,  12513,
    +    12540,  12488,  12523,  12461,  12525,  12527,  12483,  12488,  12463,
    +    12441,  12521,  12512,  12463,  12441,  12521,  12512,  12488,  12531,
    +    12463,  12523,  12475,  12441,  12452,  12525,  12463,  12525,  12540,
    +    12493,  12465,  12540,  12473,  12467,  12523,  12490,  12467,  12540,
    +    12507,  12442,  12469,  12452,  12463,  12523,  12469,  12531,  12481,
    +    12540,  12512,  12471,  12522,  12531,  12463,  12441,  12475,  12531,
    +    12481,  12475,  12531,  12488,  12479,  12441,  12540,  12473,  12486,
    +    12441,  12471,  12488,  12441,  12523,  12488,  12531,  12490,  12494,
    +    12494,  12483,  12488,  12495,  12452,  12484,  12495,  12442,  12540,
    +    12475,  12531,  12488,  12495,  12442,  12540,  12484,  12495,  12441,
    +    12540,  12524,  12523,  12498,  12442,  12450,  12473,  12488,  12523,
    +    12498,  12442,  12463,  12523,  12498,  12442,  12467,  12498,  12441,
    +    12523,  12501,  12449,  12521,  12483,  12488,  12441,  12501,  12451,
    +    12540,  12488,  12501,  12441,  12483,  12471,  12455,  12523,  12501,
    +    12521,  12531,  12504,  12463,  12479,  12540,  12523,  12504,  12442,
    +    12477,  12504,  12442,  12491,  12498,  12504,  12523,  12484,  12504,
    +    12442,  12531,  12473,  12504,  12442,  12540,  12471,  12441,  12504,
    +    12441,  12540,  12479,  12507,  12442,  12452,  12531,  12488,  12507,
    +    12441,  12523,  12488,  12507,  12531,  12507,  12442,  12531,  12488,
    +    12441,  12507,  12540,  12523,  12507,  12540,  12531,  12510,  12452,
    +    12463,  12525,  12510,  12452,  12523,  12510,  12483,  12495,  12510,
    +    12523,  12463,  12510,  12531,  12471,  12519,  12531,  12511,  12463,
    +    12525,  12531,  12511,  12522,  12511,  12522,  12495,  12441,  12540,
    +    12523,  12513,  12459,  12441,  12513,  12459,  12441,  12488,  12531,
    +    12513,  12540,  12488,  12523,  12516,  12540,  12488,  12441,  12516,
    +    12540,  12523,  12518,  12450,  12531,  12522,  12483,  12488,  12523,
    +    12522,  12521,  12523,  12498,  12442,  12540,  12523,  12540,  12501,
    +    12441,  12523,  12524,  12512,  12524,  12531,  12488,  12465,  12441,
    +    12531,  12527,  12483,  12488,  48,     28857,  49,     28857,  50,
    +    28857,  51,     28857,  52,     28857,  53,     28857,  54,     28857,
    +    55,     28857,  56,     28857,  57,     28857,  49,     48,     28857,
    +    49,     49,     28857,  49,     50,     28857,  49,     51,     28857,
    +    49,     52,     28857,  49,     53,     28857,  49,     54,     28857,
    +    49,     55,     28857,  49,     56,     28857,  49,     57,     28857,
    +    50,     48,     28857,  50,     49,     28857,  50,     50,     28857,
    +    50,     51,     28857,  50,     52,     28857,  104,    80,     97,
    +    100,    97,     65,     85,     98,     97,     114,    111,    86,
    +    112,    99,     100,    109,    100,    109,    50,     100,    109,
    +    51,     73,     85,     24179,  25104,  26157,  21644,  22823,  27491,
    +    26126,  27835,  26666,  24335,  20250,  31038,  112,    65,     110,
    +    65,     956,    65,     109,    65,     107,    65,     75,     66,
    +    77,     66,     71,     66,     99,     97,     108,    107,    99,
    +    97,     108,    112,    70,     110,    70,     956,    70,     956,
    +    103,    109,    103,    107,    103,    72,     122,    107,    72,
    +    122,    77,     72,     122,    71,     72,     122,    84,     72,
    +    122,    956,    108,    109,    108,    100,    108,    107,    108,
    +    102,    109,    110,    109,    956,    109,    109,    109,    99,
    +    109,    107,    109,    109,    109,    50,     99,     109,    50,
    +    109,    50,     107,    109,    50,     109,    109,    51,     99,
    +    109,    51,     109,    51,     107,    109,    51,     109,    8725,
    +    115,    109,    8725,   115,    50,     80,     97,     107,    80,
    +    97,     77,     80,     97,     71,     80,     97,     114,    97,
    +    100,    114,    97,     100,    8725,   115,    114,    97,     100,
    +    8725,   115,    50,     112,    115,    110,    115,    956,    115,
    +    109,    115,    112,    86,     110,    86,     956,    86,     109,
    +    86,     107,    86,     77,     86,     112,    87,     110,    87,
    +    956,    87,     109,    87,     107,    87,     77,     87,     107,
    +    937,    77,     937,    97,     46,     109,    46,     66,     113,
    +    99,     99,     99,     100,    67,     8725,   107,    103,    67,
    +    111,    46,     100,    66,     71,     121,    104,    97,     72,
    +    80,     105,    110,    75,     75,     75,     77,     107,    116,
    +    108,    109,    108,    110,    108,    111,    103,    108,    120,
    +    109,    98,     109,    105,    108,    109,    111,    108,    80,
    +    72,     112,    46,     109,    46,     80,     80,     77,     80,
    +    82,     115,    114,    83,     118,    87,     98,     86,     8725,
    +    109,    65,     8725,   109,    49,     26085,  50,     26085,  51,
    +    26085,  52,     26085,  53,     26085,  54,     26085,  55,     26085,
    +    56,     26085,  57,     26085,  49,     48,     26085,  49,     49,
    +    26085,  49,     50,     26085,  49,     51,     26085,  49,     52,
    +    26085,  49,     53,     26085,  49,     54,     26085,  49,     55,
    +    26085,  49,     56,     26085,  49,     57,     26085,  50,     48,
    +    26085,  50,     49,     26085,  50,     50,     26085,  50,     51,
    +    26085,  50,     52,     26085,  50,     53,     26085,  50,     54,
    +    26085,  50,     55,     26085,  50,     56,     26085,  50,     57,
    +    26085,  51,     48,     26085,  51,     49,     26085,  103,    97,
    +    108,    1098,   1100,   42863,  67,     70,     81,     294,    339,
    +    42791,  43831,  619,    43858,  653,    35912,  26356,  36554,  36040,
    +    28369,  20018,  21477,  40860,  40860,  22865,  37329,  21895,  22856,
    +    25078,  30313,  32645,  34367,  34746,  35064,  37007,  27138,  27931,
    +    28889,  29662,  33853,  37226,  39409,  20098,  21365,  27396,  29211,
    +    34349,  40478,  23888,  28651,  34253,  35172,  25289,  33240,  34847,
    +    24266,  26391,  28010,  29436,  37070,  20358,  20919,  21214,  25796,
    +    27347,  29200,  30439,  32769,  34310,  34396,  36335,  38706,  39791,
    +    40442,  30860,  31103,  32160,  33737,  37636,  40575,  35542,  22751,
    +    24324,  31840,  32894,  29282,  30922,  36034,  38647,  22744,  23650,
    +    27155,  28122,  28431,  32047,  32311,  38475,  21202,  32907,  20956,
    +    20940,  31260,  32190,  33777,  38517,  35712,  25295,  27138,  35582,
    +    20025,  23527,  24594,  29575,  30064,  21271,  30971,  20415,  24489,
    +    19981,  27852,  25976,  32034,  21443,  22622,  30465,  33865,  35498,
    +    27578,  36784,  27784,  25342,  33509,  25504,  30053,  20142,  20841,
    +    20937,  26753,  31975,  33391,  35538,  37327,  21237,  21570,  22899,
    +    24300,  26053,  28670,  31018,  38317,  39530,  40599,  40654,  21147,
    +    26310,  27511,  36706,  24180,  24976,  25088,  25754,  28451,  29001,
    +    29833,  31178,  32244,  32879,  36646,  34030,  36899,  37706,  21015,
    +    21155,  21693,  28872,  35010,  35498,  24265,  24565,  25467,  27566,
    +    31806,  29557,  20196,  22265,  23527,  23994,  24604,  29618,  29801,
    +    32666,  32838,  37428,  38646,  38728,  38936,  20363,  31150,  37300,
    +    38584,  24801,  20102,  20698,  23534,  23615,  26009,  27138,  29134,
    +    30274,  34044,  36988,  40845,  26248,  38446,  21129,  26491,  26611,
    +    27969,  28316,  29705,  30041,  30827,  32016,  39006,  20845,  25134,
    +    38520,  20523,  23833,  28138,  36650,  24459,  24900,  26647,  29575,
    +    38534,  21033,  21519,  23653,  26131,  26446,  26792,  27877,  29702,
    +    30178,  32633,  35023,  35041,  37324,  38626,  21311,  28346,  21533,
    +    29136,  29848,  34298,  38563,  40023,  40607,  26519,  28107,  33256,
    +    31435,  31520,  31890,  29376,  28825,  35672,  20160,  33590,  21050,
    +    20999,  24230,  25299,  31958,  23429,  27934,  26292,  36667,  34892,
    +    38477,  35211,  24275,  20800,  21952,  22618,  26228,  20958,  29482,
    +    30410,  31036,  31070,  31077,  31119,  38742,  31934,  32701,  34322,
    +    35576,  36920,  37117,  39151,  39164,  39208,  40372,  37086,  38583,
    +    20398,  20711,  20813,  21193,  21220,  21329,  21917,  22022,  22120,
    +    22592,  22696,  23652,  23662,  24724,  24936,  24974,  25074,  25935,
    +    26082,  26257,  26757,  28023,  28186,  28450,  29038,  29227,  29730,
    +    30865,  31038,  31049,  31048,  31056,  31062,  31069,  31117,  31118,
    +    31296,  31361,  31680,  32244,  32265,  32321,  32626,  32773,  33261,
    +    33401,  33401,  33879,  35088,  35222,  35585,  35641,  36051,  36104,
    +    36790,  36920,  38627,  38911,  38971,  24693,  148206, 33304,  20006,
    +    20917,  20840,  20352,  20805,  20864,  21191,  21242,  21917,  21845,
    +    21913,  21986,  22618,  22707,  22852,  22868,  23138,  23336,  24274,
    +    24281,  24425,  24493,  24792,  24910,  24840,  24974,  24928,  25074,
    +    25140,  25540,  25628,  25682,  25942,  26228,  26391,  26395,  26454,
    +    27513,  27578,  27969,  28379,  28363,  28450,  28702,  29038,  30631,
    +    29237,  29359,  29482,  29809,  29958,  30011,  30237,  30239,  30410,
    +    30427,  30452,  30538,  30528,  30924,  31409,  31680,  31867,  32091,
    +    32244,  32574,  32773,  33618,  33775,  34681,  35137,  35206,  35222,
    +    35519,  35576,  35531,  35585,  35582,  35565,  35641,  35722,  36104,
    +    36664,  36978,  37273,  37494,  38524,  38627,  38742,  38875,  38911,
    +    38923,  38971,  39698,  40860,  141386, 141380, 144341, 15261,  16408,
    +    16441,  152137, 154832, 163539, 40771,  40846,  102,    102,    102,
    +    105,    102,    108,    102,    102,    105,    102,    102,    108,
    +    115,    116,    115,    116,    1396,   1398,   1396,   1381,   1396,
    +    1387,   1406,   1398,   1396,   1389,   1497,   1460,   1522,   1463,
    +    1506,   1488,   1491,   1492,   1499,   1500,   1501,   1512,   1514,
    +    43,     1513,   1473,   1513,   1474,   1513,   1468,   1473,   1513,
    +    1468,   1474,   1488,   1463,   1488,   1464,   1488,   1468,   1489,
    +    1468,   1490,   1468,   1491,   1468,   1492,   1468,   1493,   1468,
    +    1494,   1468,   1496,   1468,   1497,   1468,   1498,   1468,   1499,
    +    1468,   1500,   1468,   1502,   1468,   1504,   1468,   1505,   1468,
    +    1507,   1468,   1508,   1468,   1510,   1468,   1511,   1468,   1512,
    +    1468,   1513,   1468,   1514,   1468,   1493,   1465,   1489,   1471,
    +    1499,   1471,   1508,   1471,   1488,   1500,   1649,   1649,   1659,
    +    1659,   1659,   1659,   1662,   1662,   1662,   1662,   1664,   1664,
    +    1664,   1664,   1658,   1658,   1658,   1658,   1663,   1663,   1663,
    +    1663,   1657,   1657,   1657,   1657,   1700,   1700,   1700,   1700,
    +    1702,   1702,   1702,   1702,   1668,   1668,   1668,   1668,   1667,
    +    1667,   1667,   1667,   1670,   1670,   1670,   1670,   1671,   1671,
    +    1671,   1671,   1677,   1677,   1676,   1676,   1678,   1678,   1672,
    +    1672,   1688,   1688,   1681,   1681,   1705,   1705,   1705,   1705,
    +    1711,   1711,   1711,   1711,   1715,   1715,   1715,   1715,   1713,
    +    1713,   1713,   1713,   1722,   1722,   1723,   1723,   1723,   1723,
    +    1749,   1620,   1749,   1620,   1729,   1729,   1729,   1729,   1726,
    +    1726,   1726,   1726,   1746,   1746,   1746,   1620,   1746,   1620,
    +    1709,   1709,   1709,   1709,   1735,   1735,   1734,   1734,   1736,
    +    1736,   1735,   1652,   1739,   1739,   1733,   1733,   1737,   1737,
    +    1744,   1744,   1744,   1744,   1609,   1609,   1610,   1620,   1575,
    +    1610,   1620,   1575,   1610,   1620,   1749,   1610,   1620,   1749,
    +    1610,   1620,   1608,   1610,   1620,   1608,   1610,   1620,   1735,
    +    1610,   1620,   1735,   1610,   1620,   1734,   1610,   1620,   1734,
    +    1610,   1620,   1736,   1610,   1620,   1736,   1610,   1620,   1744,
    +    1610,   1620,   1744,   1610,   1620,   1744,   1610,   1620,   1609,
    +    1610,   1620,   1609,   1610,   1620,   1609,   1740,   1740,   1740,
    +    1740,   1610,   1620,   1580,   1610,   1620,   1581,   1610,   1620,
    +    1605,   1610,   1620,   1609,   1610,   1620,   1610,   1576,   1580,
    +    1576,   1581,   1576,   1582,   1576,   1605,   1576,   1609,   1576,
    +    1610,   1578,   1580,   1578,   1581,   1578,   1582,   1578,   1605,
    +    1578,   1609,   1578,   1610,   1579,   1580,   1579,   1605,   1579,
    +    1609,   1579,   1610,   1580,   1581,   1580,   1605,   1581,   1580,
    +    1581,   1605,   1582,   1580,   1582,   1581,   1582,   1605,   1587,
    +    1580,   1587,   1581,   1587,   1582,   1587,   1605,   1589,   1581,
    +    1589,   1605,   1590,   1580,   1590,   1581,   1590,   1582,   1590,
    +    1605,   1591,   1581,   1591,   1605,   1592,   1605,   1593,   1580,
    +    1593,   1605,   1594,   1580,   1594,   1605,   1601,   1580,   1601,
    +    1581,   1601,   1582,   1601,   1605,   1601,   1609,   1601,   1610,
    +    1602,   1581,   1602,   1605,   1602,   1609,   1602,   1610,   1603,
    +    1575,   1603,   1580,   1603,   1581,   1603,   1582,   1603,   1604,
    +    1603,   1605,   1603,   1609,   1603,   1610,   1604,   1580,   1604,
    +    1581,   1604,   1582,   1604,   1605,   1604,   1609,   1604,   1610,
    +    1605,   1580,   1605,   1581,   1605,   1582,   1605,   1605,   1605,
    +    1609,   1605,   1610,   1606,   1580,   1606,   1581,   1606,   1582,
    +    1606,   1605,   1606,   1609,   1606,   1610,   1607,   1580,   1607,
    +    1605,   1607,   1609,   1607,   1610,   1610,   1580,   1610,   1581,
    +    1610,   1582,   1610,   1605,   1610,   1609,   1610,   1610,   1584,
    +    1648,   1585,   1648,   1609,   1648,   32,     1612,   1617,   32,
    +    1613,   1617,   32,     1614,   1617,   32,     1615,   1617,   32,
    +    1616,   1617,   32,     1617,   1648,   1610,   1620,   1585,   1610,
    +    1620,   1586,   1610,   1620,   1605,   1610,   1620,   1606,   1610,
    +    1620,   1609,   1610,   1620,   1610,   1576,   1585,   1576,   1586,
    +    1576,   1605,   1576,   1606,   1576,   1609,   1576,   1610,   1578,
    +    1585,   1578,   1586,   1578,   1605,   1578,   1606,   1578,   1609,
    +    1578,   1610,   1579,   1585,   1579,   1586,   1579,   1605,   1579,
    +    1606,   1579,   1609,   1579,   1610,   1601,   1609,   1601,   1610,
    +    1602,   1609,   1602,   1610,   1603,   1575,   1603,   1604,   1603,
    +    1605,   1603,   1609,   1603,   1610,   1604,   1605,   1604,   1609,
    +    1604,   1610,   1605,   1575,   1605,   1605,   1606,   1585,   1606,
    +    1586,   1606,   1605,   1606,   1606,   1606,   1609,   1606,   1610,
    +    1609,   1648,   1610,   1585,   1610,   1586,   1610,   1605,   1610,
    +    1606,   1610,   1609,   1610,   1610,   1610,   1620,   1580,   1610,
    +    1620,   1581,   1610,   1620,   1582,   1610,   1620,   1605,   1610,
    +    1620,   1607,   1576,   1580,   1576,   1581,   1576,   1582,   1576,
    +    1605,   1576,   1607,   1578,   1580,   1578,   1581,   1578,   1582,
    +    1578,   1605,   1578,   1607,   1579,   1605,   1580,   1581,   1580,
    +    1605,   1581,   1580,   1581,   1605,   1582,   1580,   1582,   1605,
    +    1587,   1580,   1587,   1581,   1587,   1582,   1587,   1605,   1589,
    +    1581,   1589,   1582,   1589,   1605,   1590,   1580,   1590,   1581,
    +    1590,   1582,   1590,   1605,   1591,   1581,   1592,   1605,   1593,
    +    1580,   1593,   1605,   1594,   1580,   1594,   1605,   1601,   1580,
    +    1601,   1581,   1601,   1582,   1601,   1605,   1602,   1581,   1602,
    +    1605,   1603,   1580,   1603,   1581,   1603,   1582,   1603,   1604,
    +    1603,   1605,   1604,   1580,   1604,   1581,   1604,   1582,   1604,
    +    1605,   1604,   1607,   1605,   1580,   1605,   1581,   1605,   1582,
    +    1605,   1605,   1606,   1580,   1606,   1581,   1606,   1582,   1606,
    +    1605,   1606,   1607,   1607,   1580,   1607,   1605,   1607,   1648,
    +    1610,   1580,   1610,   1581,   1610,   1582,   1610,   1605,   1610,
    +    1607,   1610,   1620,   1605,   1610,   1620,   1607,   1576,   1605,
    +    1576,   1607,   1578,   1605,   1578,   1607,   1579,   1605,   1579,
    +    1607,   1587,   1605,   1587,   1607,   1588,   1605,   1588,   1607,
    +    1603,   1604,   1603,   1605,   1604,   1605,   1606,   1605,   1606,
    +    1607,   1610,   1605,   1610,   1607,   1600,   1614,   1617,   1600,
    +    1615,   1617,   1600,   1616,   1617,   1591,   1609,   1591,   1610,
    +    1593,   1609,   1593,   1610,   1594,   1609,   1594,   1610,   1587,
    +    1609,   1587,   1610,   1588,   1609,   1588,   1610,   1581,   1609,
    +    1581,   1610,   1580,   1609,   1580,   1610,   1582,   1609,   1582,
    +    1610,   1589,   1609,   1589,   1610,   1590,   1609,   1590,   1610,
    +    1588,   1580,   1588,   1581,   1588,   1582,   1588,   1605,   1588,
    +    1585,   1587,   1585,   1589,   1585,   1590,   1585,   1591,   1609,
    +    1591,   1610,   1593,   1609,   1593,   1610,   1594,   1609,   1594,
    +    1610,   1587,   1609,   1587,   1610,   1588,   1609,   1588,   1610,
    +    1581,   1609,   1581,   1610,   1580,   1609,   1580,   1610,   1582,
    +    1609,   1582,   1610,   1589,   1609,   1589,   1610,   1590,   1609,
    +    1590,   1610,   1588,   1580,   1588,   1581,   1588,   1582,   1588,
    +    1605,   1588,   1585,   1587,   1585,   1589,   1585,   1590,   1585,
    +    1588,   1580,   1588,   1581,   1588,   1582,   1588,   1605,   1587,
    +    1607,   1588,   1607,   1591,   1605,   1587,   1580,   1587,   1581,
    +    1587,   1582,   1588,   1580,   1588,   1581,   1588,   1582,   1591,
    +    1605,   1592,   1605,   1575,   1611,   1575,   1611,   1578,   1580,
    +    1605,   1578,   1581,   1580,   1578,   1581,   1580,   1578,   1581,
    +    1605,   1578,   1582,   1605,   1578,   1605,   1580,   1578,   1605,
    +    1581,   1578,   1605,   1582,   1580,   1605,   1581,   1580,   1605,
    +    1581,   1581,   1605,   1610,   1581,   1605,   1609,   1587,   1581,
    +    1580,   1587,   1580,   1581,   1587,   1580,   1609,   1587,   1605,
    +    1581,   1587,   1605,   1581,   1587,   1605,   1580,   1587,   1605,
    +    1605,   1587,   1605,   1605,   1589,   1581,   1581,   1589,   1581,
    +    1581,   1589,   1605,   1605,   1588,   1581,   1605,   1588,   1581,
    +    1605,   1588,   1580,   1610,   1588,   1605,   1582,   1588,   1605,
    +    1582,   1588,   1605,   1605,   1588,   1605,   1605,   1590,   1581,
    +    1609,   1590,   1582,   1605,   1590,   1582,   1605,   1591,   1605,
    +    1581,   1591,   1605,   1581,   1591,   1605,   1605,   1591,   1605,
    +    1610,   1593,   1580,   1605,   1593,   1605,   1605,   1593,   1605,
    +    1605,   1593,   1605,   1609,   1594,   1605,   1605,   1594,   1605,
    +    1610,   1594,   1605,   1609,   1601,   1582,   1605,   1601,   1582,
    +    1605,   1602,   1605,   1581,   1602,   1605,   1605,   1604,   1581,
    +    1605,   1604,   1581,   1610,   1604,   1581,   1609,   1604,   1580,
    +    1580,   1604,   1580,   1580,   1604,   1582,   1605,   1604,   1582,
    +    1605,   1604,   1605,   1581,   1604,   1605,   1581,   1605,   1581,
    +    1580,   1605,   1581,   1605,   1605,   1581,   1610,   1605,   1580,
    +    1581,   1605,   1580,   1605,   1605,   1582,   1580,   1605,   1582,
    +    1605,   1605,   1580,   1582,   1607,   1605,   1580,   1607,   1605,
    +    1605,   1606,   1581,   1605,   1606,   1581,   1609,   1606,   1580,
    +    1605,   1606,   1580,   1605,   1606,   1580,   1609,   1606,   1605,
    +    1610,   1606,   1605,   1609,   1610,   1605,   1605,   1610,   1605,
    +    1605,   1576,   1582,   1610,   1578,   1580,   1610,   1578,   1580,
    +    1609,   1578,   1582,   1610,   1578,   1582,   1609,   1578,   1605,
    +    1610,   1578,   1605,   1609,   1580,   1605,   1610,   1580,   1581,
    +    1609,   1580,   1605,   1609,   1587,   1582,   1609,   1589,   1581,
    +    1610,   1588,   1581,   1610,   1590,   1581,   1610,   1604,   1580,
    +    1610,   1604,   1605,   1610,   1610,   1581,   1610,   1610,   1580,
    +    1610,   1610,   1605,   1610,   1605,   1605,   1610,   1602,   1605,
    +    1610,   1606,   1581,   1610,   1602,   1605,   1581,   1604,   1581,
    +    1605,   1593,   1605,   1610,   1603,   1605,   1610,   1606,   1580,
    +    1581,   1605,   1582,   1610,   1604,   1580,   1605,   1603,   1605,
    +    1605,   1604,   1580,   1605,   1606,   1580,   1581,   1580,   1581,
    +    1610,   1581,   1580,   1610,   1605,   1580,   1610,   1601,   1605,
    +    1610,   1576,   1581,   1610,   1603,   1605,   1605,   1593,   1580,
    +    1605,   1589,   1605,   1605,   1587,   1582,   1610,   1606,   1580,
    +    1610,   1589,   1604,   1746,   1602,   1604,   1746,   1575,   1604,
    +    1604,   1607,   1575,   1603,   1576,   1585,   1605,   1581,   1605,
    +    1583,   1589,   1604,   1593,   1605,   1585,   1587,   1608,   1604,
    +    1593,   1604,   1610,   1607,   1608,   1587,   1604,   1605,   1589,
    +    1604,   1609,   1589,   1604,   1609,   32,     1575,   1604,   1604,
    +    1607,   32,     1593,   1604,   1610,   1607,   32,     1608,   1587,
    +    1604,   1605,   1580,   1604,   32,     1580,   1604,   1575,   1604,
    +    1607,   1585,   1740,   1575,   1604,   44,     12289,  12290,  58,
    +    59,     33,     63,     12310,  12311,  46,     46,     46,     46,
    +    46,     8212,   8211,   95,     95,     40,     41,     123,    125,
    +    12308,  12309,  12304,  12305,  12298,  12299,  12296,  12297,  12300,
    +    12301,  12302,  12303,  91,     93,     32,     773,    32,     773,
    +    32,     773,    32,     773,    95,     95,     95,     44,     12289,
    +    46,     59,     58,     63,     33,     8212,   40,     41,     123,
    +    125,    12308,  12309,  35,     38,     42,     43,     45,     60,
    +    62,     61,     92,     36,     37,     64,     32,     1611,   1600,
    +    1611,   32,     1612,   32,     1613,   32,     1614,   1600,   1614,
    +    32,     1615,   1600,   1615,   32,     1616,   1600,   1616,   32,
    +    1617,   1600,   1617,   32,     1618,   1600,   1618,   1569,   1575,
    +    1619,   1575,   1619,   1575,   1620,   1575,   1620,   1608,   1620,
    +    1608,   1620,   1575,   1621,   1575,   1621,   1610,   1620,   1610,
    +    1620,   1610,   1620,   1610,   1620,   1575,   1575,   1576,   1576,
    +    1576,   1576,   1577,   1577,   1578,   1578,   1578,   1578,   1579,
    +    1579,   1579,   1579,   1580,   1580,   1580,   1580,   1581,   1581,
    +    1581,   1581,   1582,   1582,   1582,   1582,   1583,   1583,   1584,
    +    1584,   1585,   1585,   1586,   1586,   1587,   1587,   1587,   1587,
    +    1588,   1588,   1588,   1588,   1589,   1589,   1589,   1589,   1590,
    +    1590,   1590,   1590,   1591,   1591,   1591,   1591,   1592,   1592,
    +    1592,   1592,   1593,   1593,   1593,   1593,   1594,   1594,   1594,
    +    1594,   1601,   1601,   1601,   1601,   1602,   1602,   1602,   1602,
    +    1603,   1603,   1603,   1603,   1604,   1604,   1604,   1604,   1605,
    +    1605,   1605,   1605,   1606,   1606,   1606,   1606,   1607,   1607,
    +    1607,   1607,   1608,   1608,   1609,   1609,   1610,   1610,   1610,
    +    1610,   1604,   1575,   1619,   1604,   1575,   1619,   1604,   1575,
    +    1620,   1604,   1575,   1620,   1604,   1575,   1621,   1604,   1575,
    +    1621,   1604,   1575,   1604,   1575,   33,     34,     35,     36,
    +    37,     38,     39,     40,     41,     42,     43,     44,     45,
    +    46,     47,     48,     49,     50,     51,     52,     53,     54,
    +    55,     56,     57,     58,     59,     60,     61,     62,     63,
    +    64,     65,     66,     67,     68,     69,     70,     71,     72,
    +    73,     74,     75,     76,     77,     78,     79,     80,     81,
    +    82,     83,     84,     85,     86,     87,     88,     89,     90,
    +    91,     92,     93,     94,     95,     96,     97,     98,     99,
    +    100,    101,    102,    103,    104,    105,    106,    107,    108,
    +    109,    110,    111,    112,    113,    114,    115,    116,    117,
    +    118,    119,    120,    121,    122,    123,    124,    125,    126,
    +    10629,  10630,  12290,  12300,  12301,  12289,  12539,  12530,  12449,
    +    12451,  12453,  12455,  12457,  12515,  12517,  12519,  12483,  12540,
    +    12450,  12452,  12454,  12456,  12458,  12459,  12461,  12463,  12465,
    +    12467,  12469,  12471,  12473,  12475,  12477,  12479,  12481,  12484,
    +    12486,  12488,  12490,  12491,  12492,  12493,  12494,  12495,  12498,
    +    12501,  12504,  12507,  12510,  12511,  12512,  12513,  12514,  12516,
    +    12518,  12520,  12521,  12522,  12523,  12524,  12525,  12527,  12531,
    +    12441,  12442,  4448,   4352,   4353,   4522,   4354,   4524,   4525,
    +    4355,   4356,   4357,   4528,   4529,   4530,   4531,   4532,   4533,
    +    4378,   4358,   4359,   4360,   4385,   4361,   4362,   4363,   4364,
    +    4365,   4366,   4367,   4368,   4369,   4370,   4449,   4450,   4451,
    +    4452,   4453,   4454,   4455,   4456,   4457,   4458,   4459,   4460,
    +    4461,   4462,   4463,   4464,   4465,   4466,   4467,   4468,   4469,
    +    162,    163,    172,    32,     772,    166,    165,    8361,   9474,
    +    8592,   8593,   8594,   8595,   9632,   9675,   720,    721,    230,
    +    665,    595,    675,    43878,  677,    676,    598,    599,    7569,
    +    600,    606,    681,    612,    610,    608,    667,    295,    668,
    +    615,    644,    682,    683,    620,    122628, 42894,  622,    122629,
    +    654,    122630, 248,    630,    631,    113,    634,    122632, 637,
    +    638,    640,    680,    678,    43879,  679,    648,    11377,  655,
    +    673,    674,    664,    448,    449,    450,    122634, 122654, 69785,
    +    69818,  69787,  69818,  69797,  69818,  69937,  69927,  69938,  69927,
    +    70471,  70462,  70471,  70487,  70841,  70842,  70841,  70832,  70841,
    +    70845,  71096,  71087,  71097,  71087,  71989,  71984,  119127, 119141,
    +    119128, 119141, 119128, 119141, 119150, 119128, 119141, 119151, 119128,
    +    119141, 119152, 119128, 119141, 119153, 119128, 119141, 119154, 119225,
    +    119141, 119226, 119141, 119225, 119141, 119150, 119226, 119141, 119150,
    +    119225, 119141, 119151, 119226, 119141, 119151, 65,     66,     67,
    +    68,     69,     70,     71,     72,     73,     74,     75,     76,
    +    77,     78,     79,     80,     81,     82,     83,     84,     85,
    +    86,     87,     88,     89,     90,     97,     98,     99,     100,
    +    101,    102,    103,    104,    105,    106,    107,    108,    109,
    +    110,    111,    112,    113,    114,    115,    116,    117,    118,
    +    119,    120,    121,    122,    65,     66,     67,     68,     69,
    +    70,     71,     72,     73,     74,     75,     76,     77,     78,
    +    79,     80,     81,     82,     83,     84,     85,     86,     87,
    +    88,     89,     90,     97,     98,     99,     100,    101,    102,
    +    103,    105,    106,    107,    108,    109,    110,    111,    112,
    +    113,    114,    115,    116,    117,    118,    119,    120,    121,
    +    122,    65,     66,     67,     68,     69,     70,     71,     72,
    +    73,     74,     75,     76,     77,     78,     79,     80,     81,
    +    82,     83,     84,     85,     86,     87,     88,     89,     90,
    +    97,     98,     99,     100,    101,    102,    103,    104,    105,
    +    106,    107,    108,    109,    110,    111,    112,    113,    114,
    +    115,    116,    117,    118,    119,    120,    121,    122,    65,
    +    67,     68,     71,     74,     75,     78,     79,     80,     81,
    +    83,     84,     85,     86,     87,     88,     89,     90,     97,
    +    98,     99,     100,    102,    104,    105,    106,    107,    108,
    +    109,    110,    112,    113,    114,    115,    116,    117,    118,
    +    119,    120,    121,    122,    65,     66,     67,     68,     69,
    +    70,     71,     72,     73,     74,     75,     76,     77,     78,
    +    79,     80,     81,     82,     83,     84,     85,     86,     87,
    +    88,     89,     90,     97,     98,     99,     100,    101,    102,
    +    103,    104,    105,    106,    107,    108,    109,    110,    111,
    +    112,    113,    114,    115,    116,    117,    118,    119,    120,
    +    121,    122,    65,     66,     68,     69,     70,     71,     74,
    +    75,     76,     77,     78,     79,     80,     81,     83,     84,
    +    85,     86,     87,     88,     89,     97,     98,     99,     100,
    +    101,    102,    103,    104,    105,    106,    107,    108,    109,
    +    110,    111,    112,    113,    114,    115,    116,    117,    118,
    +    119,    120,    121,    122,    65,     66,     68,     69,     70,
    +    71,     73,     74,     75,     76,     77,     79,     83,     84,
    +    85,     86,     87,     88,     89,     97,     98,     99,     100,
    +    101,    102,    103,    104,    105,    106,    107,    108,    109,
    +    110,    111,    112,    113,    114,    115,    116,    117,    118,
    +    119,    120,    121,    122,    65,     66,     67,     68,     69,
    +    70,     71,     72,     73,     74,     75,     76,     77,     78,
    +    79,     80,     81,     82,     83,     84,     85,     86,     87,
    +    88,     89,     90,     97,     98,     99,     100,    101,    102,
    +    103,    104,    105,    106,    107,    108,    109,    110,    111,
    +    112,    113,    114,    115,    116,    117,    118,    119,    120,
    +    121,    122,    65,     66,     67,     68,     69,     70,     71,
    +    72,     73,     74,     75,     76,     77,     78,     79,     80,
    +    81,     82,     83,     84,     85,     86,     87,     88,     89,
    +    90,     97,     98,     99,     100,    101,    102,    103,    104,
    +    105,    106,    107,    108,    109,    110,    111,    112,    113,
    +    114,    115,    116,    117,    118,    119,    120,    121,    122,
    +    65,     66,     67,     68,     69,     70,     71,     72,     73,
    +    74,     75,     76,     77,     78,     79,     80,     81,     82,
    +    83,     84,     85,     86,     87,     88,     89,     90,     97,
    +    98,     99,     100,    101,    102,    103,    104,    105,    106,
    +    107,    108,    109,    110,    111,    112,    113,    114,    115,
    +    116,    117,    118,    119,    120,    121,    122,    65,     66,
    +    67,     68,     69,     70,     71,     72,     73,     74,     75,
    +    76,     77,     78,     79,     80,     81,     82,     83,     84,
    +    85,     86,     87,     88,     89,     90,     97,     98,     99,
    +    100,    101,    102,    103,    104,    105,    106,    107,    108,
    +    109,    110,    111,    112,    113,    114,    115,    116,    117,
    +    118,    119,    120,    121,    122,    65,     66,     67,     68,
    +    69,     70,     71,     72,     73,     74,     75,     76,     77,
    +    78,     79,     80,     81,     82,     83,     84,     85,     86,
    +    87,     88,     89,     90,     97,     98,     99,     100,    101,
    +    102,    103,    104,    105,    106,    107,    108,    109,    110,
    +    111,    112,    113,    114,    115,    116,    117,    118,    119,
    +    120,    121,    122,    65,     66,     67,     68,     69,     70,
    +    71,     72,     73,     74,     75,     76,     77,     78,     79,
    +    80,     81,     82,     83,     84,     85,     86,     87,     88,
    +    89,     90,     97,     98,     99,     100,    101,    102,    103,
    +    104,    105,    106,    107,    108,    109,    110,    111,    112,
    +    113,    114,    115,    116,    117,    118,    119,    120,    121,
    +    122,    305,    567,    913,    914,    915,    916,    917,    918,
    +    919,    920,    921,    922,    923,    924,    925,    926,    927,
    +    928,    929,    920,    931,    932,    933,    934,    935,    936,
    +    937,    8711,   945,    946,    947,    948,    949,    950,    951,
    +    952,    953,    954,    955,    956,    957,    958,    959,    960,
    +    961,    962,    963,    964,    965,    966,    967,    968,    969,
    +    8706,   949,    952,    954,    966,    961,    960,    913,    914,
    +    915,    916,    917,    918,    919,    920,    921,    922,    923,
    +    924,    925,    926,    927,    928,    929,    920,    931,    932,
    +    933,    934,    935,    936,    937,    8711,   945,    946,    947,
    +    948,    949,    950,    951,    952,    953,    954,    955,    956,
    +    957,    958,    959,    960,    961,    962,    963,    964,    965,
    +    966,    967,    968,    969,    8706,   949,    952,    954,    966,
    +    961,    960,    913,    914,    915,    916,    917,    918,    919,
    +    920,    921,    922,    923,    924,    925,    926,    927,    928,
    +    929,    920,    931,    932,    933,    934,    935,    936,    937,
    +    8711,   945,    946,    947,    948,    949,    950,    951,    952,
    +    953,    954,    955,    956,    957,    958,    959,    960,    961,
    +    962,    963,    964,    965,    966,    967,    968,    969,    8706,
    +    949,    952,    954,    966,    961,    960,    913,    914,    915,
    +    916,    917,    918,    919,    920,    921,    922,    923,    924,
    +    925,    926,    927,    928,    929,    920,    931,    932,    933,
    +    934,    935,    936,    937,    8711,   945,    946,    947,    948,
    +    949,    950,    951,    952,    953,    954,    955,    956,    957,
    +    958,    959,    960,    961,    962,    963,    964,    965,    966,
    +    967,    968,    969,    8706,   949,    952,    954,    966,    961,
    +    960,    913,    914,    915,    916,    917,    918,    919,    920,
    +    921,    922,    923,    924,    925,    926,    927,    928,    929,
    +    920,    931,    932,    933,    934,    935,    936,    937,    8711,
    +    945,    946,    947,    948,    949,    950,    951,    952,    953,
    +    954,    955,    956,    957,    958,    959,    960,    961,    962,
    +    963,    964,    965,    966,    967,    968,    969,    8706,   949,
    +    952,    954,    966,    961,    960,    988,    989,    48,     49,
    +    50,     51,     52,     53,     54,     55,     56,     57,     48,
    +    49,     50,     51,     52,     53,     54,     55,     56,     57,
    +    48,     49,     50,     51,     52,     53,     54,     55,     56,
    +    57,     48,     49,     50,     51,     52,     53,     54,     55,
    +    56,     57,     48,     49,     50,     51,     52,     53,     54,
    +    55,     56,     57,     1072,   1073,   1074,   1075,   1076,   1077,
    +    1078,   1079,   1080,   1082,   1083,   1084,   1086,   1087,   1088,
    +    1089,   1090,   1091,   1092,   1093,   1094,   1095,   1096,   1099,
    +    1101,   1102,   42633,  1241,   1110,   1112,   1257,   1199,   1231,
    +    1072,   1073,   1074,   1075,   1076,   1077,   1078,   1079,   1080,
    +    1082,   1083,   1086,   1087,   1089,   1091,   1092,   1093,   1094,
    +    1095,   1096,   1098,   1099,   1169,   1110,   1109,   1119,   1195,
    +    42577,  1201,   1575,   1576,   1580,   1583,   1608,   1586,   1581,
    +    1591,   1610,   1603,   1604,   1605,   1606,   1587,   1593,   1601,
    +    1589,   1602,   1585,   1588,   1578,   1579,   1582,   1584,   1590,
    +    1592,   1594,   1646,   1722,   1697,   1647,   1576,   1580,   1607,
    +    1581,   1610,   1603,   1604,   1605,   1606,   1587,   1593,   1601,
    +    1589,   1602,   1588,   1578,   1579,   1582,   1590,   1594,   1580,
    +    1581,   1610,   1604,   1606,   1587,   1593,   1589,   1602,   1588,
    +    1582,   1590,   1594,   1722,   1647,   1576,   1580,   1607,   1581,
    +    1591,   1610,   1603,   1605,   1606,   1587,   1593,   1601,   1589,
    +    1602,   1588,   1578,   1579,   1582,   1590,   1592,   1594,   1646,
    +    1697,   1575,   1576,   1580,   1583,   1607,   1608,   1586,   1581,
    +    1591,   1610,   1604,   1605,   1606,   1587,   1593,   1601,   1589,
    +    1602,   1585,   1588,   1578,   1579,   1582,   1584,   1590,   1592,
    +    1594,   1576,   1580,   1583,   1608,   1586,   1581,   1591,   1610,
    +    1604,   1605,   1606,   1587,   1593,   1601,   1589,   1602,   1585,
    +    1588,   1578,   1579,   1582,   1584,   1590,   1592,   1594,   48,
    +    46,     48,     44,     49,     44,     50,     44,     51,     44,
    +    52,     44,     53,     44,     54,     44,     55,     44,     56,
    +    44,     57,     44,     40,     65,     41,     40,     66,     41,
    +    40,     67,     41,     40,     68,     41,     40,     69,     41,
    +    40,     70,     41,     40,     71,     41,     40,     72,     41,
    +    40,     73,     41,     40,     74,     41,     40,     75,     41,
    +    40,     76,     41,     40,     77,     41,     40,     78,     41,
    +    40,     79,     41,     40,     80,     41,     40,     81,     41,
    +    40,     82,     41,     40,     83,     41,     40,     84,     41,
    +    40,     85,     41,     40,     86,     41,     40,     87,     41,
    +    40,     88,     41,     40,     89,     41,     40,     90,     41,
    +    12308,  83,     12309,  67,     82,     67,     68,     87,     90,
    +    65,     66,     67,     68,     69,     70,     71,     72,     73,
    +    74,     75,     76,     77,     78,     79,     80,     81,     82,
    +    83,     84,     85,     86,     87,     88,     89,     90,     72,
    +    86,     77,     86,     83,     68,     83,     83,     80,     80,
    +    86,     87,     67,     77,     67,     77,     68,     77,     82,
    +    68,     74,     12411,  12363,  12467,  12467,  12469,  25163,  23383,
    +    21452,  12486,  12441,  20108,  22810,  35299,  22825,  20132,  26144,
    +    28961,  26009,  21069,  24460,  20877,  26032,  21021,  32066,  29983,
    +    36009,  22768,  21561,  28436,  25237,  25429,  19968,  19977,  36938,
    +    24038,  20013,  21491,  25351,  36208,  25171,  31105,  31354,  21512,
    +    28288,  26377,  26376,  30003,  21106,  21942,  37197,  12308,  26412,
    +    12309,  12308,  19977,  12309,  12308,  20108,  12309,  12308,  23433,
    +    12309,  12308,  28857,  12309,  12308,  25171,  12309,  12308,  30423,
    +    12309,  12308,  21213,  12309,  12308,  25943,  12309,  24471,  21487,
    +    48,     49,     50,     51,     52,     53,     54,     55,     56,
    +    57,     20029,  20024,  20033,  131362, 20320,  20398,  20411,  20482,
    +    20602,  20633,  20711,  20687,  13470,  132666, 20813,  20820,  20836,
    +    20855,  132380, 13497,  20839,  20877,  132427, 20887,  20900,  20172,
    +    20908,  20917,  168415, 20981,  20995,  13535,  21051,  21062,  21106,
    +    21111,  13589,  21191,  21193,  21220,  21242,  21253,  21254,  21271,
    +    21321,  21329,  21338,  21363,  21373,  21375,  21375,  21375,  133676,
    +    28784,  21450,  21471,  133987, 21483,  21489,  21510,  21662,  21560,
    +    21576,  21608,  21666,  21750,  21776,  21843,  21859,  21892,  21892,
    +    21913,  21931,  21939,  21954,  22294,  22022,  22295,  22097,  22132,
    +    20999,  22766,  22478,  22516,  22541,  22411,  22578,  22577,  22700,
    +    136420, 22770,  22775,  22790,  22810,  22818,  22882,  136872, 136938,
    +    23020,  23067,  23079,  23000,  23142,  14062,  14076,  23304,  23358,
    +    23358,  137672, 23491,  23512,  23527,  23539,  138008, 23551,  23558,
    +    24403,  23586,  14209,  23648,  23662,  23744,  23693,  138724, 23875,
    +    138726, 23918,  23915,  23932,  24033,  24034,  14383,  24061,  24104,
    +    24125,  24169,  14434,  139651, 14460,  24240,  24243,  24246,  24266,
    +    172946, 24318,  140081, 140081, 33281,  24354,  24354,  14535,  144056,
    +    156122, 24418,  24427,  14563,  24474,  24525,  24535,  24569,  24705,
    +    14650,  14620,  24724,  141012, 24775,  24904,  24908,  24910,  24908,
    +    24954,  24974,  25010,  24996,  25007,  25054,  25074,  25078,  25104,
    +    25115,  25181,  25265,  25300,  25424,  142092, 25405,  25340,  25448,
    +    25475,  25572,  142321, 25634,  25541,  25513,  14894,  25705,  25726,
    +    25757,  25719,  14956,  25935,  25964,  143370, 26083,  26360,  26185,
    +    15129,  26257,  15112,  15076,  20882,  20885,  26368,  26268,  32941,
    +    17369,  26391,  26395,  26401,  26462,  26451,  144323, 15177,  26618,
    +    26501,  26706,  26757,  144493, 26766,  26655,  26900,  15261,  26946,
    +    27043,  27114,  27304,  145059, 27355,  15384,  27425,  145575, 27476,
    +    15438,  27506,  27551,  27578,  27579,  146061, 138507, 146170, 27726,
    +    146620, 27839,  27853,  27751,  27926,  27966,  28023,  27969,  28009,
    +    28024,  28037,  146718, 27956,  28207,  28270,  15667,  28363,  28359,
    +    147153, 28153,  28526,  147294, 147342, 28614,  28729,  28702,  28699,
    +    15766,  28746,  28797,  28791,  28845,  132389, 28997,  148067, 29084,
    +    148395, 29224,  29237,  29264,  149000, 29312,  29333,  149301, 149524,
    +    29562,  29579,  16044,  29605,  16056,  16056,  29767,  29788,  29809,
    +    29829,  29898,  16155,  29988,  150582, 30014,  150674, 30064,  139679,
    +    30224,  151457, 151480, 151620, 16380,  16392,  30452,  151795, 151794,
    +    151833, 151859, 30494,  30495,  30495,  30538,  16441,  30603,  16454,
    +    16534,  152605, 30798,  30860,  30924,  16611,  153126, 31062,  153242,
    +    153285, 31119,  31211,  16687,  31296,  31306,  31311,  153980, 154279,
    +    154279, 31470,  16898,  154539, 31686,  31689,  16935,  154752, 31954,
    +    17056,  31976,  31971,  32000,  155526, 32099,  17153,  32199,  32258,
    +    32325,  17204,  156200, 156231, 17241,  156377, 32634,  156478, 32661,
    +    32762,  32773,  156890, 156963, 32864,  157096, 32880,  144223, 17365,
    +    32946,  33027,  17419,  33086,  23221,  157607, 157621, 144275, 144284,
    +    33281,  33284,  36766,  17515,  33425,  33419,  33437,  21171,  33457,
    +    33459,  33469,  33510,  158524, 33509,  33565,  33635,  33709,  33571,
    +    33725,  33767,  33879,  33619,  33738,  33740,  33756,  158774, 159083,
    +    158933, 17707,  34033,  34035,  34070,  160714, 34148,  159532, 17757,
    +    17761,  159665, 159954, 17771,  34384,  34396,  34407,  34409,  34473,
    +    34440,  34574,  34530,  34681,  34600,  34667,  34694,  17879,  34785,
    +    34817,  17913,  34912,  34915,  161383, 35031,  35038,  17973,  35066,
    +    13499,  161966, 162150, 18110,  18119,  35488,  35565,  35722,  35925,
    +    162984, 36011,  36033,  36123,  36215,  163631, 133124, 36299,  36284,
    +    36336,  133342, 36564,  36664,  165330, 165357, 37012,  37105,  37137,
    +    165678, 37147,  37432,  37591,  37592,  37500,  37881,  37909,  166906,
    +    38283,  18837,  38327,  167287, 18918,  38595,  23986,  38691,  168261,
    +    168474, 19054,  19062,  38880,  168970, 19122,  169110, 38923,  38923,
    +    38953,  169398, 39138,  19251,  39209,  39335,  39362,  39422,  19406,
    +    170800, 39698,  40000,  40189,  19662,  19693,  40295,  172238, 19704,
    +    172293, 172558, 172689, 40635,  19798,  40697,  40702,  40709,  40719,
    +    40726,  40763,  173568};
    +
    +}  // namespace unilib
    +}  // namespace ufal
    +/* end file src/unilib/uninorms.cpp */
    +
    +namespace ada::idna {
    +
    +void normalize(std::u32string& input) {
    +  //    [Normalize](https://www.unicode.org/reports/tr46/#ProcessingStepNormalize).
    +  //    Normalize
    +  //     the domain_name string to Unicode Normalization Form C.
    +  ufal::unilib::uninorms::nfc(input);
    +}
     
    -  ada_really_inline bool parse_prepared_path(std::string_view input, ada::scheme::type type, std::string& path) {
    -    ada_log("parse_path ", input);
    -    uint8_t accumulator = checkers::path_signature(input);
    -    // Let us first detect a trivial case.
    -    // If it is special, we check that we have no dot, no %,  no \ and no
    -    // character needing percent encoding. Otherwise, we check that we have no %,
    -    // no dot, and no character needing percent encoding.
    -    bool special = type != ada::scheme::NOT_SPECIAL;
    -    bool trivial_path =
    -        (special ? (accumulator == 0) : ((accumulator & 0b11111101) == 0)) &&
    -        (type != ada::scheme::type::FILE);
    -    if (trivial_path) {
    -      ada_log("parse_path trivial");
    -      path += '/';
    -      path += input;
    -      return true;
    -    }
    -    // We are going to need to look a bit at the path, but let us see if we can
    -    // ignore percent encoding *and* backslashes *and* percent characters.
    -    // Except for the trivial case, this is likely to capture 99% of paths out
    -    // there.
    -    bool fast_path = (special && (accumulator & 0b11111011) == 0) &&
    -                    (type != ada::scheme::type::FILE);
    -    if (fast_path) {
    -      ada_log("parse_path fast");
    -      // Here we don't need to worry about \ or percent encoding.
    -      // We also do not have a file protocol. We might have dots, however,
    -      // but dots must as appear as '.', and they cannot be encoded because
    -      // the symbol '%' is not present.
    -      size_t previous_location = 0; // We start at 0.
    -      do {
    -        size_t new_location = input.find('/', previous_location);
    -        //std::string_view path_view = input;
    -        // We process the last segment separately:
    -        if (new_location == std::string_view::npos) {
    -          std::string_view path_view = input.substr(previous_location);
    -          if (path_view == "..") { // The path ends with ..
    -            // e.g., if you receive ".." with an empty path, you go to "/".
    -            if(path.empty()) { path = '/'; return true; }
    -            // Fast case where we have nothing to do:
    -            if(path.back() == '/') { return true; }
    -            // If you have the path "/joe/myfriend",
    -            // then you delete 'myfriend'.
    -            path.resize(path.rfind('/') + 1);
    -            return true;
    -          }
    -          path += '/';
    -          if (path_view != ".") {
    -            path.append(path_view);
    -          }
    -          return true;
    -        } else {
    -          // This is a non-final segment.
    -          std::string_view path_view = input.substr(previous_location, new_location - previous_location);
    -          previous_location = new_location + 1;
    -          if (path_view == "..") {
    -            if(!path.empty()) { path.erase(path.rfind('/')); }
    -          } else if (path_view != ".") {
    -            path += '/';
    -            path.append(path_view);
    -          }
    -        }
    -      } while (true);
    -    } else {
    -      ada_log("parse_path slow");
    -      // we have reached the general case
    -      bool needs_percent_encoding = (accumulator & 1);
    -      std::string path_buffer_tmp;
    -      do {
    -        size_t location = (special && (accumulator & 2))
    -                              ? input.find_first_of("/\\")
    -                              : input.find('/');
    -        std::string_view path_view = input;
    -        if (location != std::string_view::npos) {
    -          path_view.remove_suffix(path_view.size() - location);
    -          input.remove_prefix(location + 1);
    -        }
    -        // path_buffer is either path_view or it might point at a percent encoded temporary file.
    -        std::string_view path_buffer =
    -         (needs_percent_encoding
    -           && ada::unicode::percent_encode(path_view, character_sets::PATH_PERCENT_ENCODE, path_buffer_tmp)) ?
    -          path_buffer_tmp :
    -          path_view;
    -        if (unicode::is_double_dot_path_segment(path_buffer)) {
    -          helpers::shorten_path(path, type);
    -          if (location == std::string_view::npos) {
    -            path += '/';
    -          }
    -        } else if (unicode::is_single_dot_path_segment(path_buffer) &&
    -                  (location == std::string_view::npos)) {
    -          path += '/';
    -        }
    -        // Otherwise, if path_buffer is not a single-dot path segment, then:
    -        else if (!unicode::is_single_dot_path_segment(path_buffer)) {
    -          // If url’s scheme is "file", url’s path is empty, and path_buffer is a
    -          // Windows drive letter, then replace the second code point in
    -          // path_buffer with U+003A (:).
    -          if (type == ada::scheme::type::FILE && path.empty() &&
    -              checkers::is_windows_drive_letter(path_buffer)) {
    -            path += '/';
    -            path += path_buffer[0];
    -            path += ':';
    -            path_buffer.remove_prefix(2);
    -            path.append(path_buffer);
    -          } else {
    -            // Append path_buffer to url’s path.
    -            path += '/';
    -            path.append(path_buffer);
    -          }
    -        }
    -        if (location == std::string_view::npos) {
    -          return true;
    -        }
    -      } while (true);
    -    }
    -  }
    -
    -  ada_really_inline void strip_trailing_spaces_from_opaque_path(ada::url& url) noexcept {
    -    if (!url.has_opaque_path) return;
    -    if (url.fragment.has_value()) return;
    -    if (url.query.has_value()) return;
    -    while (!url.path.empty() && url.path.back() == ' ') { url.path.resize(url.path.size()-1); }
    -  }
    -
    -  ada_really_inline size_t find_authority_delimiter_special(std::string_view view) noexcept {
    -    auto has_zero_byte = [](uint64_t v) {
    -      return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    -    };
    -    auto index_of_first_set_byte = [](uint64_t v) {
    -      return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    -    };
    -    auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    -    size_t i = 0;
    -    uint64_t mask1 = broadcast('@');
    -    uint64_t mask2 = broadcast('/');
    -    uint64_t mask3 = broadcast('?');
    -    uint64_t mask4 = broadcast('\\');
    -
    -    for (; i + 7 < view.size(); i += 8) {
    -      uint64_t word{};
    -      memcpy(&word, view.data() + i, sizeof(word));
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      uint64_t xor4 = word ^ mask4;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3) | has_zero_byte(xor4);
    -      if (is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -
    -    if (i < view.size()) {
    -      uint64_t word{};
    -      memcpy(&word, view.data() + i, view.size() - i);
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      uint64_t xor4 = word ^ mask4;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3) | has_zero_byte(xor4);
    -      if (is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -
    -    return view.size();
    -  }
    -
    -  ada_really_inline size_t find_authority_delimiter(std::string_view view) noexcept {
    -    auto has_zero_byte = [](uint64_t v) {
    -      return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    -    };
    -    auto index_of_first_set_byte = [](uint64_t v) {
    -      return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    -    };
    -    auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    -    size_t i = 0;
    -    uint64_t mask1 = broadcast('@');
    -    uint64_t mask2 = broadcast('/');
    -    uint64_t mask3 = broadcast('?');
    -
    -    for (; i + 7 < view.size(); i += 8) {
    -      uint64_t word{};
    -      memcpy(&word, view.data() + i, sizeof(word));
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
    -      if (is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -
    -    if (i < view.size()) {
    -      uint64_t word{};
    -      memcpy(&word, view.data() + i, view.size() - i);
    -      word = swap_bytes_if_big_endian(word);
    -      uint64_t xor1 = word ^ mask1;
    -      uint64_t xor2 = word ^ mask2;
    -      uint64_t xor3 = word ^ mask3;
    -      uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
    -      if (is_match) {
    -        return i + index_of_first_set_byte(is_match);
    -      }
    -    }
    -
    -    return view.size();
    -  }
    -} // namespace ada::helpers
    +}  // namespace ada::idna
    +/* end file src/normalization.cpp */
    +/* begin file src/punycode.cpp */
     
    -namespace ada {
    -  ada_warn_unused std::string to_string(ada::state state) {
    -    return ada::helpers::get_state(state);
    -  }
    +#include 
    +
    +namespace ada::idna {
    +
    +constexpr int32_t base = 36;
    +constexpr int32_t tmin = 1;
    +constexpr int32_t tmax = 26;
    +constexpr int32_t skew = 38;
    +constexpr int32_t damp = 700;
    +constexpr int32_t initial_bias = 72;
    +constexpr uint32_t initial_n = 128;
    +
    +static constexpr int32_t char_to_digit_value(char value) {
    +  if (value >= 'a' && value <= 'z') return value - 'a';
    +  if (value >= '0' && value <= '9') return value - '0' + 26;
    +  return -1;
     }
    -/* end file src/helpers.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=url.cpp
    -/* begin file src/url.cpp */
     
    -#include 
    -#include 
    -#include 
    +static constexpr char digit_to_char(int32_t digit) {
    +  return digit < 26 ? char(digit + 97) : char(digit + 22);
    +}
     
    -namespace ada {
    -  ada_really_inline bool url::parse_path(std::string_view input) {
    -    ada_log("parse_path ", input);
    -    std::string tmp_buffer;
    -    std::string_view internal_input;
    -    if(unicode::has_tabs_or_newline(input)) {
    -      tmp_buffer = input;
    -      // Optimization opportunity: Instead of copying and then pruning, we could just directly
    -      // build the string from user_input.
    -      helpers::remove_ascii_tab_or_newline(tmp_buffer);
    -      internal_input = tmp_buffer;
    -    } else {
    -      internal_input = input;
    -    }
    +static constexpr int32_t adapt(int32_t d, int32_t n, bool firsttime) {
    +  if (firsttime) {
    +    d = d / damp;
    +  } else {
    +    d = d / 2;
    +  }
    +  d += d / n;
    +  int32_t k = 0;
    +  while (d > ((base - tmin) * tmax) / 2) {
    +    d /= base - tmin;
    +    k += base;
    +  }
    +  return k + (((base - tmin + 1) * d) / (d + skew));
    +}
     
    -    // If url is special, then:
    -    if (is_special()) {
    -      if(internal_input.empty()) {
    -        path = "/";
    -      } else if((internal_input[0] == '/') ||(internal_input[0] == '\\')){
    -        return helpers::parse_prepared_path(internal_input.substr(1), get_scheme_type(), path);
    -      } else {
    -        return helpers::parse_prepared_path(internal_input, get_scheme_type(), path);
    +bool punycode_to_utf32(std::string_view input, std::u32string &out) {
    +  int32_t written_out{0};
    +  out.reserve(out.size() + input.size());
    +  uint32_t n = initial_n;
    +  int32_t i = 0;
    +  int32_t bias = initial_bias;
    +  // grab ascii content
    +  size_t end_of_ascii = input.find_last_of('-');
    +  if (end_of_ascii != std::string_view::npos) {
    +    for (uint8_t c : input.substr(0, end_of_ascii)) {
    +      if (c >= 0x80) {
    +        return false;
           }
    -    } else if (!internal_input.empty()) {
    -      if(internal_input[0] == '/') {
    -        return helpers::parse_prepared_path(internal_input.substr(1), get_scheme_type(), path);
    -      } else {
    -        return helpers::parse_prepared_path(internal_input, get_scheme_type(), path);
    +      out.push_back(c);
    +      written_out++;
    +    }
    +    input.remove_prefix(end_of_ascii + 1);
    +  }
    +  while (!input.empty()) {
    +    int32_t oldi = i;
    +    int32_t w = 1;
    +    for (int32_t k = base;; k += base) {
    +      if (input.empty()) {
    +        return false;
           }
    -    } else {
    -      if(!host.has_value()) {
    -        path = "/";
    +      uint8_t code_point = input.front();
    +      input.remove_prefix(1);
    +      int32_t digit = char_to_digit_value(code_point);
    +      if (digit < 0) {
    +        return false;
    +      }
    +      if (digit > (0x7fffffff - i) / w) {
    +        return false;
    +      }
    +      i = i + digit * w;
    +      int32_t t = k <= bias ? tmin : k >= bias + tmax ? tmax : k - bias;
    +      if (digit < t) {
    +        break;
    +      }
    +      if (w > 0x7fffffff / (base - t)) {
    +        return false;
           }
    +      w = w * (base - t);
         }
    -    return true;
    +    bias = adapt(i - oldi, written_out + 1, oldi == 0);
    +    if (i / (written_out + 1) > int32_t(0x7fffffff - n)) {
    +      return false;
    +    }
    +    n = n + i / (written_out + 1);
    +    i = i % (written_out + 1);
    +    if (n < 0x80) {
    +      return false;
    +    }
    +    out.insert(out.begin() + i, n);
    +    written_out++;
    +    ++i;
       }
     
    -  bool url::parse_opaque_host(std::string_view input) {
    -    ada_log("parse_opaque_host ", input, "[", input.size(), " bytes]");
    -    if (std::any_of(input.begin(), input.end(), ada::unicode::is_forbidden_host_code_point)) {
    -      return is_valid = false;
    -    }
    +  return true;
    +}
     
    -    // Return the result of running UTF-8 percent-encode on input using the C0 control percent-encode set.
    -    host = ada::unicode::percent_encode(input, ada::character_sets::C0_CONTROL_PERCENT_ENCODE);
    -    return true;
    -  }
    -
    -  bool url::parse_ipv4(std::string_view input) {
    -    ada_log("parse_ipv4 ", input, "[", input.size(), " bytes]");
    -    if(input.back()=='.') {
    -      input.remove_suffix(1);
    -    }
    -    size_t digit_count{0};
    -    int pure_decimal_count = 0; // entries that are decimal
    -    std::string_view original_input = input; // we might use this if pure_decimal_count == 4.
    -    uint64_t ipv4{0};
    -    // we could unroll for better performance?
    -    for(;(digit_count < 4) && !(input.empty()); digit_count++) {
    -      uint32_t segment_result{}; // If any number exceeds 32 bits, we have an error.
    -      bool is_hex = checkers::has_hex_prefix(input);
    -      if(is_hex && ((input.length() == 2)|| ((input.length() > 2) && (input[2]=='.')))) {
    -        // special case
    -        segment_result = 0;
    -        input.remove_prefix(2);
    -      } else {
    -        std::from_chars_result r;
    -        if(is_hex) {
    -          r = std::from_chars(input.data() + 2, input.data() + input.size(), segment_result, 16);
    -        } else if ((input.length() >= 2) && input[0] == '0' && checkers::is_digit(input[1])) {
    -          r = std::from_chars(input.data() + 1, input.data() + input.size(), segment_result, 8);
    -        } else {
    -          pure_decimal_count++;
    -          r = std::from_chars(input.data(), input.data() + input.size(), segment_result, 10);
    -        }
    -        if (r.ec != std::errc()) { return is_valid = false; }
    -        input.remove_prefix(r.ptr-input.data());
    -      }
    -      if(input.empty()) {
    -        // We have the last value.
    -        // At this stage, ipv4 contains digit_count*8 bits.
    -        // So we have 32-digit_count*8 bits left.
    -        if(segment_result > (uint64_t(1)<<(32-digit_count*8))) { return is_valid = false; }
    -        ipv4 <<=(32-digit_count*8);
    -        ipv4 |= segment_result;
    -        goto final;
    -      } else {
    -        // There is more, so that the value must no be larger than 255
    -        // and we must have a '.'.
    -        if ((segment_result>255) || (input[0]!='.')) { return is_valid = false; }
    -        ipv4 <<=8;
    -        ipv4 |= segment_result;
    -        input.remove_prefix(1); // remove '.'
    -      }
    -    }
    -    if((digit_count != 4) || (!input.empty())) {return is_valid = false; }
    -    final:
    -    // We could also check r.ptr to see where the parsing ended.
    -    if(pure_decimal_count == 4) {
    -      host = original_input; // The original input was already all decimal and we validated it.
    -    } else {
    -      host = ada::serializers::ipv4(ipv4); // We have to reserialize the address.
    +bool verify_punycode(std::string_view input) {
    +  size_t written_out{0};
    +  uint32_t n = initial_n;
    +  int32_t i = 0;
    +  int32_t bias = initial_bias;
    +  // grab ascii content
    +  size_t end_of_ascii = input.find_last_of('-');
    +  if (end_of_ascii != std::string_view::npos) {
    +    for (uint8_t c : input.substr(0, end_of_ascii)) {
    +      if (c >= 0x80) {
    +        return false;
    +      }
    +      written_out++;
         }
    -    return true;
    +    input.remove_prefix(end_of_ascii + 1);
       }
    -
    -  bool url::parse_ipv6(std::string_view input) {
    -    ada_log("parse_ipv6 ", input, "[", input.size(), " bytes]");
    -
    -    if(input.empty()) { return is_valid = false; }
    -    // Let address be a new IPv6 address whose IPv6 pieces are all 0.
    -    std::array address{};
    -
    -    // Let pieceIndex be 0.
    -    int piece_index = 0;
    -
    -    // Let compress be null.
    -    std::optional compress{};
    -
    -    // Let pointer be a pointer for input.
    -    std::string_view::iterator pointer = input.begin();
    -
    -    // If c is U+003A (:), then:
    -    if (input[0] == ':') {
    -      // If remaining does not start with U+003A (:), validation error, return failure.
    -      if(input.size() == 1 || input[1] != ':') {
    -        ada_log("parse_ipv6 starts with : but the rest does not start with :");
    -        return is_valid = false;
    +  while (!input.empty()) {
    +    int32_t oldi = i;
    +    int32_t w = 1;
    +    for (int32_t k = base;; k += base) {
    +      if (input.empty()) {
    +        return false;
    +      }
    +      uint8_t code_point = input.front();
    +      input.remove_prefix(1);
    +      int32_t digit = char_to_digit_value(code_point);
    +      if (digit < 0) {
    +        return false;
    +      }
    +      if (digit > (0x7fffffff - i) / w) {
    +        return false;
           }
    +      i = i + digit * w;
    +      int32_t t = k <= bias ? tmin : k >= bias + tmax ? tmax : k - bias;
    +      if (digit < t) {
    +        break;
    +      }
    +      if (w > 0x7fffffff / (base - t)) {
    +        return false;
    +      }
    +      w = w * (base - t);
    +    }
    +    bias = adapt(i - oldi, int32_t(written_out + 1), oldi == 0);
    +    if (i / (written_out + 1) > 0x7fffffff - n) {
    +      return false;
    +    }
    +    n = n + i / int32_t(written_out + 1);
    +    i = i % int32_t(written_out + 1);
    +    if (n < 0x80) {
    +      return false;
    +    }
    +    written_out++;
    +    ++i;
    +  }
     
    -      // Increase pointer by 2.
    -      pointer += 2;
    +  return true;
    +}
     
    -      // Increase pieceIndex by 1 and then set compress to pieceIndex.
    -      compress = ++piece_index;
    +bool utf32_to_punycode(std::u32string_view input, std::string &out) {
    +  out.reserve(input.size() + out.size());
    +  uint32_t n = initial_n;
    +  int32_t d = 0;
    +  int32_t bias = initial_bias;
    +  size_t h = 0;
    +  // first push the ascii content
    +  for (uint32_t c : input) {
    +    if (c < 0x80) {
    +      ++h;
    +      out.push_back(char(c));
    +    }
    +    if (c > 0x10ffff || (c >= 0xd880 && c < 0xe000)) {
    +      return false;
    +    }
    +  }
    +  size_t b = h;
    +  if (b > 0) {
    +    out.push_back('-');
    +  }
    +  while (h < input.size()) {
    +    uint32_t m = 0x10FFFF;
    +    for (auto code_point : input) {
    +      if (code_point >= n && code_point < m) m = code_point;
         }
     
    -    // While c is not the EOF code point:
    -    while (pointer != input.end()) {
    -      // If pieceIndex is 8, validation error, return failure.
    -      if (piece_index == 8) {
    -        ada_log("parse_ipv6 piece_index == 8");
    -        return is_valid = false;
    +    if ((m - n) > (0x7fffffff - d) / (h + 1)) {
    +      return false;
    +    }
    +    d = d + int32_t((m - n) * (h + 1));
    +    n = m;
    +    for (auto c : input) {
    +      if (c < n) {
    +        if (d == 0x7fffffff) {
    +          return false;
    +        }
    +        ++d;
           }
    +      if (c == n) {
    +        int32_t q = d;
    +        for (int32_t k = base;; k += base) {
    +          int32_t t = k <= bias ? tmin : k >= bias + tmax ? tmax : k - bias;
     
    -      // If c is U+003A (:), then:
    -      if (*pointer == ':') {
    -        // If compress is non-null, validation error, return failure.
    -        if (compress.has_value()) {
    -          ada_log("parse_ipv6 compress is non-null");
    -          return is_valid = false;
    +          if (q < t) {
    +            break;
    +          }
    +          out.push_back(digit_to_char(t + ((q - t) % (base - t))));
    +          q = (q - t) / (base - t);
             }
    -
    -        // Increase pointer and pieceIndex by 1, set compress to pieceIndex, and then continue.
    -        pointer++;
    -        compress = ++piece_index;
    -        continue;
    +        out.push_back(digit_to_char(q));
    +        bias = adapt(d, int32_t(h + 1), h == b);
    +        d = 0;
    +        ++h;
           }
    +    }
    +    ++d;
    +    ++n;
    +  }
    +  return true;
    +}
     
    -      // Let value and length be 0.
    -      uint16_t value = 0, length = 0;
    +}  // namespace ada::idna
    +/* end file src/punycode.cpp */
    +/* begin file src/validity.cpp */
     
    -      // While length is less than 4 and c is an ASCII hex digit,
    -      // set value to value × 0x10 + c interpreted as hexadecimal number, and increase pointer and length by 1.
    -      while (length < 4 && pointer != input.end() && unicode::is_ascii_hex_digit(*pointer)) {
    -        // https://stackoverflow.com/questions/39060852/why-does-the-addition-of-two-shorts-return-an-int
    -        value = uint16_t(value * 0x10 + unicode::convert_hex_to_binary(*pointer));
    -        pointer++;
    -        length++;
    -      }
    +#include 
    +#include 
     
    -      // If c is U+002E (.), then:
    -      if (pointer != input.end() && *pointer == '.') {
    -        // If length is 0, validation error, return failure.
    -        if (length == 0) {
    -          ada_log("parse_ipv6 length is 0");
    -          return is_valid = false;
    -        }
    +namespace ada::idna {
    +
    +enum direction : uint8_t {
    +  NONE,
    +  BN,
    +  CS,
    +  ES,
    +  ON,
    +  EN,
    +  L,
    +  R,
    +  NSM,
    +  AL,
    +  AN,
    +  ET,
    +  WS,
    +  RLO,
    +  LRO,
    +  PDF,
    +  RLE,
    +  RLI,
    +  FSI,
    +  PDI,
    +  LRI,
    +  B,
    +  S,
    +  LRE
    +};
    +
    +struct directions {
    +  uint32_t start_code;
    +  uint32_t final_code;
    +  direction direct;
    +};
    +
    +static directions dir_table[] = {
    +    {0x0, 0x8, direction::BN},          {0x9, 0x9, direction::S},
    +    {0xa, 0xa, direction::B},           {0xb, 0xb, direction::S},
    +    {0xc, 0xc, direction::WS},          {0xd, 0xd, direction::B},
    +    {0xe, 0x1b, direction::BN},         {0x1c, 0x1e, direction::B},
    +    {0x1f, 0x1f, direction::S},         {0x20, 0x20, direction::WS},
    +    {0x21, 0x22, direction::ON},        {0x23, 0x25, direction::ET},
    +    {0x26, 0x2a, direction::ON},        {0x2b, 0x2b, direction::ES},
    +    {0x2c, 0x2c, direction::CS},        {0x2d, 0x2d, direction::ES},
    +    {0x2e, 0x2f, direction::CS},        {0x30, 0x39, direction::EN},
    +    {0x3a, 0x3a, direction::CS},        {0x3b, 0x40, direction::ON},
    +    {0x41, 0x5a, direction::L},         {0x5b, 0x60, direction::ON},
    +    {0x61, 0x7a, direction::L},         {0x7b, 0x7e, direction::ON},
    +    {0x7f, 0x84, direction::BN},        {0x85, 0x85, direction::B},
    +    {0x86, 0x9f, direction::BN},        {0xa0, 0xa0, direction::CS},
    +    {0xa1, 0xa1, direction::ON},        {0xa2, 0xa5, direction::ET},
    +    {0xa6, 0xa9, direction::ON},        {0xaa, 0xaa, direction::L},
    +    {0xab, 0xac, direction::ON},        {0xad, 0xad, direction::BN},
    +    {0xae, 0xaf, direction::ON},        {0xb0, 0xb1, direction::ET},
    +    {0xb2, 0xb3, direction::EN},        {0xb4, 0xb4, direction::ON},
    +    {0xb5, 0xb5, direction::L},         {0xb6, 0xb8, direction::ON},
    +    {0xb9, 0xb9, direction::EN},        {0xba, 0xba, direction::L},
    +    {0xbb, 0xbf, direction::ON},        {0xc0, 0xd6, direction::L},
    +    {0xd7, 0xd7, direction::ON},        {0xd8, 0xf6, direction::L},
    +    {0xf7, 0xf7, direction::ON},        {0xf8, 0x2b8, direction::L},
    +    {0x2b9, 0x2ba, direction::ON},      {0x2bb, 0x2c1, direction::L},
    +    {0x2c2, 0x2cf, direction::ON},      {0x2d0, 0x2d1, direction::L},
    +    {0x2d2, 0x2df, direction::ON},      {0x2e0, 0x2e4, direction::L},
    +    {0x2e5, 0x2ed, direction::ON},      {0x2ee, 0x2ee, direction::L},
    +    {0x2ef, 0x2ff, direction::ON},      {0x300, 0x36f, direction::NSM},
    +    {0x370, 0x373, direction::L},       {0x374, 0x375, direction::ON},
    +    {0x376, 0x377, direction::L},       {0x37a, 0x37d, direction::L},
    +    {0x37e, 0x37e, direction::ON},      {0x37f, 0x37f, direction::L},
    +    {0x384, 0x385, direction::ON},      {0x386, 0x386, direction::L},
    +    {0x387, 0x387, direction::ON},      {0x388, 0x38a, direction::L},
    +    {0x38c, 0x38c, direction::L},       {0x38e, 0x3a1, direction::L},
    +    {0x3a3, 0x3f5, direction::L},       {0x3f6, 0x3f6, direction::ON},
    +    {0x3f7, 0x482, direction::L},       {0x483, 0x489, direction::NSM},
    +    {0x48a, 0x52f, direction::L},       {0x531, 0x556, direction::L},
    +    {0x559, 0x589, direction::L},       {0x58a, 0x58a, direction::ON},
    +    {0x58d, 0x58e, direction::ON},      {0x58f, 0x58f, direction::ET},
    +    {0x591, 0x5bd, direction::NSM},     {0x5be, 0x5be, direction::R},
    +    {0x5bf, 0x5bf, direction::NSM},     {0x5c0, 0x5c0, direction::R},
    +    {0x5c1, 0x5c2, direction::NSM},     {0x5c3, 0x5c3, direction::R},
    +    {0x5c4, 0x5c5, direction::NSM},     {0x5c6, 0x5c6, direction::R},
    +    {0x5c7, 0x5c7, direction::NSM},     {0x5d0, 0x5ea, direction::R},
    +    {0x5ef, 0x5f4, direction::R},       {0x600, 0x605, direction::AN},
    +    {0x606, 0x607, direction::ON},      {0x608, 0x608, direction::AL},
    +    {0x609, 0x60a, direction::ET},      {0x60b, 0x60b, direction::AL},
    +    {0x60c, 0x60c, direction::CS},      {0x60d, 0x60d, direction::AL},
    +    {0x60e, 0x60f, direction::ON},      {0x610, 0x61a, direction::NSM},
    +    {0x61b, 0x61c, direction::AL},      {0x61e, 0x64a, direction::AL},
    +    {0x64b, 0x65f, direction::NSM},     {0x660, 0x669, direction::AN},
    +    {0x66a, 0x66a, direction::ET},      {0x66b, 0x66c, direction::AN},
    +    {0x66d, 0x66f, direction::AL},      {0x670, 0x670, direction::NSM},
    +    {0x671, 0x6d5, direction::AL},      {0x6d6, 0x6dc, direction::NSM},
    +    {0x6dd, 0x6dd, direction::AN},      {0x6de, 0x6de, direction::ON},
    +    {0x6df, 0x6e4, direction::NSM},     {0x6e5, 0x6e6, direction::AL},
    +    {0x6e7, 0x6e8, direction::NSM},     {0x6e9, 0x6e9, direction::ON},
    +    {0x6ea, 0x6ed, direction::NSM},     {0x6ee, 0x6ef, direction::AL},
    +    {0x6f0, 0x6f9, direction::EN},      {0x6fa, 0x70d, direction::AL},
    +    {0x70f, 0x710, direction::AL},      {0x711, 0x711, direction::NSM},
    +    {0x712, 0x72f, direction::AL},      {0x730, 0x74a, direction::NSM},
    +    {0x74d, 0x7a5, direction::AL},      {0x7a6, 0x7b0, direction::NSM},
    +    {0x7b1, 0x7b1, direction::AL},      {0x7c0, 0x7ea, direction::R},
    +    {0x7eb, 0x7f3, direction::NSM},     {0x7f4, 0x7f5, direction::R},
    +    {0x7f6, 0x7f9, direction::ON},      {0x7fa, 0x7fa, direction::R},
    +    {0x7fd, 0x7fd, direction::NSM},     {0x7fe, 0x815, direction::R},
    +    {0x816, 0x819, direction::NSM},     {0x81a, 0x81a, direction::R},
    +    {0x81b, 0x823, direction::NSM},     {0x824, 0x824, direction::R},
    +    {0x825, 0x827, direction::NSM},     {0x828, 0x828, direction::R},
    +    {0x829, 0x82d, direction::NSM},     {0x830, 0x83e, direction::R},
    +    {0x840, 0x858, direction::R},       {0x859, 0x85b, direction::NSM},
    +    {0x85e, 0x85e, direction::R},       {0x860, 0x86a, direction::AL},
    +    {0x8a0, 0x8b4, direction::AL},      {0x8b6, 0x8c7, direction::AL},
    +    {0x8d3, 0x8e1, direction::NSM},     {0x8e2, 0x8e2, direction::AN},
    +    {0x8e3, 0x902, direction::NSM},     {0x903, 0x939, direction::L},
    +    {0x93a, 0x93a, direction::NSM},     {0x93b, 0x93b, direction::L},
    +    {0x93c, 0x93c, direction::NSM},     {0x93d, 0x940, direction::L},
    +    {0x941, 0x948, direction::NSM},     {0x949, 0x94c, direction::L},
    +    {0x94d, 0x94d, direction::NSM},     {0x94e, 0x950, direction::L},
    +    {0x951, 0x957, direction::NSM},     {0x958, 0x961, direction::L},
    +    {0x962, 0x963, direction::NSM},     {0x964, 0x980, direction::L},
    +    {0x981, 0x981, direction::NSM},     {0x982, 0x983, direction::L},
    +    {0x985, 0x98c, direction::L},       {0x98f, 0x990, direction::L},
    +    {0x993, 0x9a8, direction::L},       {0x9aa, 0x9b0, direction::L},
    +    {0x9b2, 0x9b2, direction::L},       {0x9b6, 0x9b9, direction::L},
    +    {0x9bc, 0x9bc, direction::NSM},     {0x9bd, 0x9c0, direction::L},
    +    {0x9c1, 0x9c4, direction::NSM},     {0x9c7, 0x9c8, direction::L},
    +    {0x9cb, 0x9cc, direction::L},       {0x9cd, 0x9cd, direction::NSM},
    +    {0x9ce, 0x9ce, direction::L},       {0x9d7, 0x9d7, direction::L},
    +    {0x9dc, 0x9dd, direction::L},       {0x9df, 0x9e1, direction::L},
    +    {0x9e2, 0x9e3, direction::NSM},     {0x9e6, 0x9f1, direction::L},
    +    {0x9f2, 0x9f3, direction::ET},      {0x9f4, 0x9fa, direction::L},
    +    {0x9fb, 0x9fb, direction::ET},      {0x9fc, 0x9fd, direction::L},
    +    {0x9fe, 0x9fe, direction::NSM},     {0xa01, 0xa02, direction::NSM},
    +    {0xa03, 0xa03, direction::L},       {0xa05, 0xa0a, direction::L},
    +    {0xa0f, 0xa10, direction::L},       {0xa13, 0xa28, direction::L},
    +    {0xa2a, 0xa30, direction::L},       {0xa32, 0xa33, direction::L},
    +    {0xa35, 0xa36, direction::L},       {0xa38, 0xa39, direction::L},
    +    {0xa3c, 0xa3c, direction::NSM},     {0xa3e, 0xa40, direction::L},
    +    {0xa41, 0xa42, direction::NSM},     {0xa47, 0xa48, direction::NSM},
    +    {0xa4b, 0xa4d, direction::NSM},     {0xa51, 0xa51, direction::NSM},
    +    {0xa59, 0xa5c, direction::L},       {0xa5e, 0xa5e, direction::L},
    +    {0xa66, 0xa6f, direction::L},       {0xa70, 0xa71, direction::NSM},
    +    {0xa72, 0xa74, direction::L},       {0xa75, 0xa75, direction::NSM},
    +    {0xa76, 0xa76, direction::L},       {0xa81, 0xa82, direction::NSM},
    +    {0xa83, 0xa83, direction::L},       {0xa85, 0xa8d, direction::L},
    +    {0xa8f, 0xa91, direction::L},       {0xa93, 0xaa8, direction::L},
    +    {0xaaa, 0xab0, direction::L},       {0xab2, 0xab3, direction::L},
    +    {0xab5, 0xab9, direction::L},       {0xabc, 0xabc, direction::NSM},
    +    {0xabd, 0xac0, direction::L},       {0xac1, 0xac5, direction::NSM},
    +    {0xac7, 0xac8, direction::NSM},     {0xac9, 0xac9, direction::L},
    +    {0xacb, 0xacc, direction::L},       {0xacd, 0xacd, direction::NSM},
    +    {0xad0, 0xad0, direction::L},       {0xae0, 0xae1, direction::L},
    +    {0xae2, 0xae3, direction::NSM},     {0xae6, 0xaf0, direction::L},
    +    {0xaf1, 0xaf1, direction::ET},      {0xaf9, 0xaf9, direction::L},
    +    {0xafa, 0xaff, direction::NSM},     {0xb01, 0xb01, direction::NSM},
    +    {0xb02, 0xb03, direction::L},       {0xb05, 0xb0c, direction::L},
    +    {0xb0f, 0xb10, direction::L},       {0xb13, 0xb28, direction::L},
    +    {0xb2a, 0xb30, direction::L},       {0xb32, 0xb33, direction::L},
    +    {0xb35, 0xb39, direction::L},       {0xb3c, 0xb3c, direction::NSM},
    +    {0xb3d, 0xb3e, direction::L},       {0xb3f, 0xb3f, direction::NSM},
    +    {0xb40, 0xb40, direction::L},       {0xb41, 0xb44, direction::NSM},
    +    {0xb47, 0xb48, direction::L},       {0xb4b, 0xb4c, direction::L},
    +    {0xb4d, 0xb4d, direction::NSM},     {0xb55, 0xb56, direction::NSM},
    +    {0xb57, 0xb57, direction::L},       {0xb5c, 0xb5d, direction::L},
    +    {0xb5f, 0xb61, direction::L},       {0xb62, 0xb63, direction::NSM},
    +    {0xb66, 0xb77, direction::L},       {0xb82, 0xb82, direction::NSM},
    +    {0xb83, 0xb83, direction::L},       {0xb85, 0xb8a, direction::L},
    +    {0xb8e, 0xb90, direction::L},       {0xb92, 0xb95, direction::L},
    +    {0xb99, 0xb9a, direction::L},       {0xb9c, 0xb9c, direction::L},
    +    {0xb9e, 0xb9f, direction::L},       {0xba3, 0xba4, direction::L},
    +    {0xba8, 0xbaa, direction::L},       {0xbae, 0xbb9, direction::L},
    +    {0xbbe, 0xbbf, direction::L},       {0xbc0, 0xbc0, direction::NSM},
    +    {0xbc1, 0xbc2, direction::L},       {0xbc6, 0xbc8, direction::L},
    +    {0xbca, 0xbcc, direction::L},       {0xbcd, 0xbcd, direction::NSM},
    +    {0xbd0, 0xbd0, direction::L},       {0xbd7, 0xbd7, direction::L},
    +    {0xbe6, 0xbf2, direction::L},       {0xbf3, 0xbf8, direction::ON},
    +    {0xbf9, 0xbf9, direction::ET},      {0xbfa, 0xbfa, direction::ON},
    +    {0xc00, 0xc00, direction::NSM},     {0xc01, 0xc03, direction::L},
    +    {0xc04, 0xc04, direction::NSM},     {0xc05, 0xc0c, direction::L},
    +    {0xc0e, 0xc10, direction::L},       {0xc12, 0xc28, direction::L},
    +    {0xc2a, 0xc39, direction::L},       {0xc3d, 0xc3d, direction::L},
    +    {0xc3e, 0xc40, direction::NSM},     {0xc41, 0xc44, direction::L},
    +    {0xc46, 0xc48, direction::NSM},     {0xc4a, 0xc4d, direction::NSM},
    +    {0xc55, 0xc56, direction::NSM},     {0xc58, 0xc5a, direction::L},
    +    {0xc60, 0xc61, direction::L},       {0xc62, 0xc63, direction::NSM},
    +    {0xc66, 0xc6f, direction::L},       {0xc77, 0xc77, direction::L},
    +    {0xc78, 0xc7e, direction::ON},      {0xc7f, 0xc80, direction::L},
    +    {0xc81, 0xc81, direction::NSM},     {0xc82, 0xc8c, direction::L},
    +    {0xc8e, 0xc90, direction::L},       {0xc92, 0xca8, direction::L},
    +    {0xcaa, 0xcb3, direction::L},       {0xcb5, 0xcb9, direction::L},
    +    {0xcbc, 0xcbc, direction::NSM},     {0xcbd, 0xcc4, direction::L},
    +    {0xcc6, 0xcc8, direction::L},       {0xcca, 0xccb, direction::L},
    +    {0xccc, 0xccd, direction::NSM},     {0xcd5, 0xcd6, direction::L},
    +    {0xcde, 0xcde, direction::L},       {0xce0, 0xce1, direction::L},
    +    {0xce2, 0xce3, direction::NSM},     {0xce6, 0xcef, direction::L},
    +    {0xcf1, 0xcf2, direction::L},       {0xd00, 0xd01, direction::NSM},
    +    {0xd02, 0xd0c, direction::L},       {0xd0e, 0xd10, direction::L},
    +    {0xd12, 0xd3a, direction::L},       {0xd3b, 0xd3c, direction::NSM},
    +    {0xd3d, 0xd40, direction::L},       {0xd41, 0xd44, direction::NSM},
    +    {0xd46, 0xd48, direction::L},       {0xd4a, 0xd4c, direction::L},
    +    {0xd4d, 0xd4d, direction::NSM},     {0xd4e, 0xd4f, direction::L},
    +    {0xd54, 0xd61, direction::L},       {0xd62, 0xd63, direction::NSM},
    +    {0xd66, 0xd7f, direction::L},       {0xd81, 0xd81, direction::NSM},
    +    {0xd82, 0xd83, direction::L},       {0xd85, 0xd96, direction::L},
    +    {0xd9a, 0xdb1, direction::L},       {0xdb3, 0xdbb, direction::L},
    +    {0xdbd, 0xdbd, direction::L},       {0xdc0, 0xdc6, direction::L},
    +    {0xdca, 0xdca, direction::NSM},     {0xdcf, 0xdd1, direction::L},
    +    {0xdd2, 0xdd4, direction::NSM},     {0xdd6, 0xdd6, direction::NSM},
    +    {0xdd8, 0xddf, direction::L},       {0xde6, 0xdef, direction::L},
    +    {0xdf2, 0xdf4, direction::L},       {0xe01, 0xe30, direction::L},
    +    {0xe31, 0xe31, direction::NSM},     {0xe32, 0xe33, direction::L},
    +    {0xe34, 0xe3a, direction::NSM},     {0xe3f, 0xe3f, direction::ET},
    +    {0xe40, 0xe46, direction::L},       {0xe47, 0xe4e, direction::NSM},
    +    {0xe4f, 0xe5b, direction::L},       {0xe81, 0xe82, direction::L},
    +    {0xe84, 0xe84, direction::L},       {0xe86, 0xe8a, direction::L},
    +    {0xe8c, 0xea3, direction::L},       {0xea5, 0xea5, direction::L},
    +    {0xea7, 0xeb0, direction::L},       {0xeb1, 0xeb1, direction::NSM},
    +    {0xeb2, 0xeb3, direction::L},       {0xeb4, 0xebc, direction::NSM},
    +    {0xebd, 0xebd, direction::L},       {0xec0, 0xec4, direction::L},
    +    {0xec6, 0xec6, direction::L},       {0xec8, 0xecd, direction::NSM},
    +    {0xed0, 0xed9, direction::L},       {0xedc, 0xedf, direction::L},
    +    {0xf00, 0xf17, direction::L},       {0xf18, 0xf19, direction::NSM},
    +    {0xf1a, 0xf34, direction::L},       {0xf35, 0xf35, direction::NSM},
    +    {0xf36, 0xf36, direction::L},       {0xf37, 0xf37, direction::NSM},
    +    {0xf38, 0xf38, direction::L},       {0xf39, 0xf39, direction::NSM},
    +    {0xf3a, 0xf3d, direction::ON},      {0xf3e, 0xf47, direction::L},
    +    {0xf49, 0xf6c, direction::L},       {0xf71, 0xf7e, direction::NSM},
    +    {0xf7f, 0xf7f, direction::L},       {0xf80, 0xf84, direction::NSM},
    +    {0xf85, 0xf85, direction::L},       {0xf86, 0xf87, direction::NSM},
    +    {0xf88, 0xf8c, direction::L},       {0xf8d, 0xf97, direction::NSM},
    +    {0xf99, 0xfbc, direction::NSM},     {0xfbe, 0xfc5, direction::L},
    +    {0xfc6, 0xfc6, direction::NSM},     {0xfc7, 0xfcc, direction::L},
    +    {0xfce, 0xfda, direction::L},       {0x1000, 0x102c, direction::L},
    +    {0x102d, 0x1030, direction::NSM},   {0x1031, 0x1031, direction::L},
    +    {0x1032, 0x1037, direction::NSM},   {0x1038, 0x1038, direction::L},
    +    {0x1039, 0x103a, direction::NSM},   {0x103b, 0x103c, direction::L},
    +    {0x103d, 0x103e, direction::NSM},   {0x103f, 0x1057, direction::L},
    +    {0x1058, 0x1059, direction::NSM},   {0x105a, 0x105d, direction::L},
    +    {0x105e, 0x1060, direction::NSM},   {0x1061, 0x1070, direction::L},
    +    {0x1071, 0x1074, direction::NSM},   {0x1075, 0x1081, direction::L},
    +    {0x1082, 0x1082, direction::NSM},   {0x1083, 0x1084, direction::L},
    +    {0x1085, 0x1086, direction::NSM},   {0x1087, 0x108c, direction::L},
    +    {0x108d, 0x108d, direction::NSM},   {0x108e, 0x109c, direction::L},
    +    {0x109d, 0x109d, direction::NSM},   {0x109e, 0x10c5, direction::L},
    +    {0x10c7, 0x10c7, direction::L},     {0x10cd, 0x10cd, direction::L},
    +    {0x10d0, 0x1248, direction::L},     {0x124a, 0x124d, direction::L},
    +    {0x1250, 0x1256, direction::L},     {0x1258, 0x1258, direction::L},
    +    {0x125a, 0x125d, direction::L},     {0x1260, 0x1288, direction::L},
    +    {0x128a, 0x128d, direction::L},     {0x1290, 0x12b0, direction::L},
    +    {0x12b2, 0x12b5, direction::L},     {0x12b8, 0x12be, direction::L},
    +    {0x12c0, 0x12c0, direction::L},     {0x12c2, 0x12c5, direction::L},
    +    {0x12c8, 0x12d6, direction::L},     {0x12d8, 0x1310, direction::L},
    +    {0x1312, 0x1315, direction::L},     {0x1318, 0x135a, direction::L},
    +    {0x135d, 0x135f, direction::NSM},   {0x1360, 0x137c, direction::L},
    +    {0x1380, 0x138f, direction::L},     {0x1390, 0x1399, direction::ON},
    +    {0x13a0, 0x13f5, direction::L},     {0x13f8, 0x13fd, direction::L},
    +    {0x1400, 0x1400, direction::ON},    {0x1401, 0x167f, direction::L},
    +    {0x1680, 0x1680, direction::WS},    {0x1681, 0x169a, direction::L},
    +    {0x169b, 0x169c, direction::ON},    {0x16a0, 0x16f8, direction::L},
    +    {0x1700, 0x170c, direction::L},     {0x170e, 0x1711, direction::L},
    +    {0x1712, 0x1714, direction::NSM},   {0x1720, 0x1731, direction::L},
    +    {0x1732, 0x1734, direction::NSM},   {0x1735, 0x1736, direction::L},
    +    {0x1740, 0x1751, direction::L},     {0x1752, 0x1753, direction::NSM},
    +    {0x1760, 0x176c, direction::L},     {0x176e, 0x1770, direction::L},
    +    {0x1772, 0x1773, direction::NSM},   {0x1780, 0x17b3, direction::L},
    +    {0x17b4, 0x17b5, direction::NSM},   {0x17b6, 0x17b6, direction::L},
    +    {0x17b7, 0x17bd, direction::NSM},   {0x17be, 0x17c5, direction::L},
    +    {0x17c6, 0x17c6, direction::NSM},   {0x17c7, 0x17c8, direction::L},
    +    {0x17c9, 0x17d3, direction::NSM},   {0x17d4, 0x17da, direction::L},
    +    {0x17db, 0x17db, direction::ET},    {0x17dc, 0x17dc, direction::L},
    +    {0x17dd, 0x17dd, direction::NSM},   {0x17e0, 0x17e9, direction::L},
    +    {0x17f0, 0x17f9, direction::ON},    {0x1800, 0x180a, direction::ON},
    +    {0x180b, 0x180d, direction::NSM},   {0x180e, 0x180e, direction::BN},
    +    {0x1810, 0x1819, direction::L},     {0x1820, 0x1878, direction::L},
    +    {0x1880, 0x1884, direction::L},     {0x1885, 0x1886, direction::NSM},
    +    {0x1887, 0x18a8, direction::L},     {0x18a9, 0x18a9, direction::NSM},
    +    {0x18aa, 0x18aa, direction::L},     {0x18b0, 0x18f5, direction::L},
    +    {0x1900, 0x191e, direction::L},     {0x1920, 0x1922, direction::NSM},
    +    {0x1923, 0x1926, direction::L},     {0x1927, 0x1928, direction::NSM},
    +    {0x1929, 0x192b, direction::L},     {0x1930, 0x1931, direction::L},
    +    {0x1932, 0x1932, direction::NSM},   {0x1933, 0x1938, direction::L},
    +    {0x1939, 0x193b, direction::NSM},   {0x1940, 0x1940, direction::ON},
    +    {0x1944, 0x1945, direction::ON},    {0x1946, 0x196d, direction::L},
    +    {0x1970, 0x1974, direction::L},     {0x1980, 0x19ab, direction::L},
    +    {0x19b0, 0x19c9, direction::L},     {0x19d0, 0x19da, direction::L},
    +    {0x19de, 0x19ff, direction::ON},    {0x1a00, 0x1a16, direction::L},
    +    {0x1a17, 0x1a18, direction::NSM},   {0x1a19, 0x1a1a, direction::L},
    +    {0x1a1b, 0x1a1b, direction::NSM},   {0x1a1e, 0x1a55, direction::L},
    +    {0x1a56, 0x1a56, direction::NSM},   {0x1a57, 0x1a57, direction::L},
    +    {0x1a58, 0x1a5e, direction::NSM},   {0x1a60, 0x1a60, direction::NSM},
    +    {0x1a61, 0x1a61, direction::L},     {0x1a62, 0x1a62, direction::NSM},
    +    {0x1a63, 0x1a64, direction::L},     {0x1a65, 0x1a6c, direction::NSM},
    +    {0x1a6d, 0x1a72, direction::L},     {0x1a73, 0x1a7c, direction::NSM},
    +    {0x1a7f, 0x1a7f, direction::NSM},   {0x1a80, 0x1a89, direction::L},
    +    {0x1a90, 0x1a99, direction::L},     {0x1aa0, 0x1aad, direction::L},
    +    {0x1ab0, 0x1ac0, direction::NSM},   {0x1b00, 0x1b03, direction::NSM},
    +    {0x1b04, 0x1b33, direction::L},     {0x1b34, 0x1b34, direction::NSM},
    +    {0x1b35, 0x1b35, direction::L},     {0x1b36, 0x1b3a, direction::NSM},
    +    {0x1b3b, 0x1b3b, direction::L},     {0x1b3c, 0x1b3c, direction::NSM},
    +    {0x1b3d, 0x1b41, direction::L},     {0x1b42, 0x1b42, direction::NSM},
    +    {0x1b43, 0x1b4b, direction::L},     {0x1b50, 0x1b6a, direction::L},
    +    {0x1b6b, 0x1b73, direction::NSM},   {0x1b74, 0x1b7c, direction::L},
    +    {0x1b80, 0x1b81, direction::NSM},   {0x1b82, 0x1ba1, direction::L},
    +    {0x1ba2, 0x1ba5, direction::NSM},   {0x1ba6, 0x1ba7, direction::L},
    +    {0x1ba8, 0x1ba9, direction::NSM},   {0x1baa, 0x1baa, direction::L},
    +    {0x1bab, 0x1bad, direction::NSM},   {0x1bae, 0x1be5, direction::L},
    +    {0x1be6, 0x1be6, direction::NSM},   {0x1be7, 0x1be7, direction::L},
    +    {0x1be8, 0x1be9, direction::NSM},   {0x1bea, 0x1bec, direction::L},
    +    {0x1bed, 0x1bed, direction::NSM},   {0x1bee, 0x1bee, direction::L},
    +    {0x1bef, 0x1bf1, direction::NSM},   {0x1bf2, 0x1bf3, direction::L},
    +    {0x1bfc, 0x1c2b, direction::L},     {0x1c2c, 0x1c33, direction::NSM},
    +    {0x1c34, 0x1c35, direction::L},     {0x1c36, 0x1c37, direction::NSM},
    +    {0x1c3b, 0x1c49, direction::L},     {0x1c4d, 0x1c88, direction::L},
    +    {0x1c90, 0x1cba, direction::L},     {0x1cbd, 0x1cc7, direction::L},
    +    {0x1cd0, 0x1cd2, direction::NSM},   {0x1cd3, 0x1cd3, direction::L},
    +    {0x1cd4, 0x1ce0, direction::NSM},   {0x1ce1, 0x1ce1, direction::L},
    +    {0x1ce2, 0x1ce8, direction::NSM},   {0x1ce9, 0x1cec, direction::L},
    +    {0x1ced, 0x1ced, direction::NSM},   {0x1cee, 0x1cf3, direction::L},
    +    {0x1cf4, 0x1cf4, direction::NSM},   {0x1cf5, 0x1cf7, direction::L},
    +    {0x1cf8, 0x1cf9, direction::NSM},   {0x1cfa, 0x1cfa, direction::L},
    +    {0x1d00, 0x1dbf, direction::L},     {0x1dc0, 0x1df9, direction::NSM},
    +    {0x1dfb, 0x1dff, direction::NSM},   {0x1e00, 0x1f15, direction::L},
    +    {0x1f18, 0x1f1d, direction::L},     {0x1f20, 0x1f45, direction::L},
    +    {0x1f48, 0x1f4d, direction::L},     {0x1f50, 0x1f57, direction::L},
    +    {0x1f59, 0x1f59, direction::L},     {0x1f5b, 0x1f5b, direction::L},
    +    {0x1f5d, 0x1f5d, direction::L},     {0x1f5f, 0x1f7d, direction::L},
    +    {0x1f80, 0x1fb4, direction::L},     {0x1fb6, 0x1fbc, direction::L},
    +    {0x1fbd, 0x1fbd, direction::ON},    {0x1fbe, 0x1fbe, direction::L},
    +    {0x1fbf, 0x1fc1, direction::ON},    {0x1fc2, 0x1fc4, direction::L},
    +    {0x1fc6, 0x1fcc, direction::L},     {0x1fcd, 0x1fcf, direction::ON},
    +    {0x1fd0, 0x1fd3, direction::L},     {0x1fd6, 0x1fdb, direction::L},
    +    {0x1fdd, 0x1fdf, direction::ON},    {0x1fe0, 0x1fec, direction::L},
    +    {0x1fed, 0x1fef, direction::ON},    {0x1ff2, 0x1ff4, direction::L},
    +    {0x1ff6, 0x1ffc, direction::L},     {0x1ffd, 0x1ffe, direction::ON},
    +    {0x2000, 0x200a, direction::WS},    {0x200b, 0x200d, direction::BN},
    +    {0x200e, 0x200e, direction::L},     {0x200f, 0x200f, direction::R},
    +    {0x2010, 0x2027, direction::ON},    {0x2028, 0x2028, direction::WS},
    +    {0x2029, 0x2029, direction::B},     {0x202a, 0x202a, direction::LRE},
    +    {0x202b, 0x202b, direction::RLE},   {0x202c, 0x202c, direction::PDF},
    +    {0x202d, 0x202d, direction::LRO},   {0x202e, 0x202e, direction::RLO},
    +    {0x202f, 0x202f, direction::CS},    {0x2030, 0x2034, direction::ET},
    +    {0x2035, 0x2043, direction::ON},    {0x2044, 0x2044, direction::CS},
    +    {0x2045, 0x205e, direction::ON},    {0x205f, 0x205f, direction::WS},
    +    {0x2060, 0x2064, direction::BN},    {0x2066, 0x2066, direction::LRI},
    +    {0x2067, 0x2067, direction::RLI},   {0x2068, 0x2068, direction::FSI},
    +    {0x2069, 0x2069, direction::PDI},   {0x206a, 0x206f, direction::BN},
    +    {0x2070, 0x2070, direction::EN},    {0x2071, 0x2071, direction::L},
    +    {0x2074, 0x2079, direction::EN},    {0x207a, 0x207b, direction::ES},
    +    {0x207c, 0x207e, direction::ON},    {0x207f, 0x207f, direction::L},
    +    {0x2080, 0x2089, direction::EN},    {0x208a, 0x208b, direction::ES},
    +    {0x208c, 0x208e, direction::ON},    {0x2090, 0x209c, direction::L},
    +    {0x20a0, 0x20bf, direction::ET},    {0x20d0, 0x20f0, direction::NSM},
    +    {0x2100, 0x2101, direction::ON},    {0x2102, 0x2102, direction::L},
    +    {0x2103, 0x2106, direction::ON},    {0x2107, 0x2107, direction::L},
    +    {0x2108, 0x2109, direction::ON},    {0x210a, 0x2113, direction::L},
    +    {0x2114, 0x2114, direction::ON},    {0x2115, 0x2115, direction::L},
    +    {0x2116, 0x2118, direction::ON},    {0x2119, 0x211d, direction::L},
    +    {0x211e, 0x2123, direction::ON},    {0x2124, 0x2124, direction::L},
    +    {0x2125, 0x2125, direction::ON},    {0x2126, 0x2126, direction::L},
    +    {0x2127, 0x2127, direction::ON},    {0x2128, 0x2128, direction::L},
    +    {0x2129, 0x2129, direction::ON},    {0x212a, 0x212d, direction::L},
    +    {0x212e, 0x212e, direction::ET},    {0x212f, 0x2139, direction::L},
    +    {0x213a, 0x213b, direction::ON},    {0x213c, 0x213f, direction::L},
    +    {0x2140, 0x2144, direction::ON},    {0x2145, 0x2149, direction::L},
    +    {0x214a, 0x214d, direction::ON},    {0x214e, 0x214f, direction::L},
    +    {0x2150, 0x215f, direction::ON},    {0x2160, 0x2188, direction::L},
    +    {0x2189, 0x218b, direction::ON},    {0x2190, 0x2211, direction::ON},
    +    {0x2212, 0x2212, direction::ES},    {0x2213, 0x2213, direction::ET},
    +    {0x2214, 0x2335, direction::ON},    {0x2336, 0x237a, direction::L},
    +    {0x237b, 0x2394, direction::ON},    {0x2395, 0x2395, direction::L},
    +    {0x2396, 0x2426, direction::ON},    {0x2440, 0x244a, direction::ON},
    +    {0x2460, 0x2487, direction::ON},    {0x2488, 0x249b, direction::EN},
    +    {0x249c, 0x24e9, direction::L},     {0x24ea, 0x26ab, direction::ON},
    +    {0x26ac, 0x26ac, direction::L},     {0x26ad, 0x27ff, direction::ON},
    +    {0x2800, 0x28ff, direction::L},     {0x2900, 0x2b73, direction::ON},
    +    {0x2b76, 0x2b95, direction::ON},    {0x2b97, 0x2bff, direction::ON},
    +    {0x2c00, 0x2c2e, direction::L},     {0x2c30, 0x2c5e, direction::L},
    +    {0x2c60, 0x2ce4, direction::L},     {0x2ce5, 0x2cea, direction::ON},
    +    {0x2ceb, 0x2cee, direction::L},     {0x2cef, 0x2cf1, direction::NSM},
    +    {0x2cf2, 0x2cf3, direction::L},     {0x2cf9, 0x2cff, direction::ON},
    +    {0x2d00, 0x2d25, direction::L},     {0x2d27, 0x2d27, direction::L},
    +    {0x2d2d, 0x2d2d, direction::L},     {0x2d30, 0x2d67, direction::L},
    +    {0x2d6f, 0x2d70, direction::L},     {0x2d7f, 0x2d7f, direction::NSM},
    +    {0x2d80, 0x2d96, direction::L},     {0x2da0, 0x2da6, direction::L},
    +    {0x2da8, 0x2dae, direction::L},     {0x2db0, 0x2db6, direction::L},
    +    {0x2db8, 0x2dbe, direction::L},     {0x2dc0, 0x2dc6, direction::L},
    +    {0x2dc8, 0x2dce, direction::L},     {0x2dd0, 0x2dd6, direction::L},
    +    {0x2dd8, 0x2dde, direction::L},     {0x2de0, 0x2dff, direction::NSM},
    +    {0x2e00, 0x2e52, direction::ON},    {0x2e80, 0x2e99, direction::ON},
    +    {0x2e9b, 0x2ef3, direction::ON},    {0x2f00, 0x2fd5, direction::ON},
    +    {0x2ff0, 0x2ffb, direction::ON},    {0x3000, 0x3000, direction::WS},
    +    {0x3001, 0x3004, direction::ON},    {0x3005, 0x3007, direction::L},
    +    {0x3008, 0x3020, direction::ON},    {0x3021, 0x3029, direction::L},
    +    {0x302a, 0x302d, direction::NSM},   {0x302e, 0x302f, direction::L},
    +    {0x3030, 0x3030, direction::ON},    {0x3031, 0x3035, direction::L},
    +    {0x3036, 0x3037, direction::ON},    {0x3038, 0x303c, direction::L},
    +    {0x303d, 0x303f, direction::ON},    {0x3041, 0x3096, direction::L},
    +    {0x3099, 0x309a, direction::NSM},   {0x309b, 0x309c, direction::ON},
    +    {0x309d, 0x309f, direction::L},     {0x30a0, 0x30a0, direction::ON},
    +    {0x30a1, 0x30fa, direction::L},     {0x30fb, 0x30fb, direction::ON},
    +    {0x30fc, 0x30ff, direction::L},     {0x3105, 0x312f, direction::L},
    +    {0x3131, 0x318e, direction::L},     {0x3190, 0x31bf, direction::L},
    +    {0x31c0, 0x31e3, direction::ON},    {0x31f0, 0x321c, direction::L},
    +    {0x321d, 0x321e, direction::ON},    {0x3220, 0x324f, direction::L},
    +    {0x3250, 0x325f, direction::ON},    {0x3260, 0x327b, direction::L},
    +    {0x327c, 0x327e, direction::ON},    {0x327f, 0x32b0, direction::L},
    +    {0x32b1, 0x32bf, direction::ON},    {0x32c0, 0x32cb, direction::L},
    +    {0x32cc, 0x32cf, direction::ON},    {0x32d0, 0x3376, direction::L},
    +    {0x3377, 0x337a, direction::ON},    {0x337b, 0x33dd, direction::L},
    +    {0x33de, 0x33df, direction::ON},    {0x33e0, 0x33fe, direction::L},
    +    {0x33ff, 0x33ff, direction::ON},    {0x3400, 0x4dbf, direction::L},
    +    {0x4dc0, 0x4dff, direction::ON},    {0x4e00, 0x9ffc, direction::L},
    +    {0xa000, 0xa48c, direction::L},     {0xa490, 0xa4c6, direction::ON},
    +    {0xa4d0, 0xa60c, direction::L},     {0xa60d, 0xa60f, direction::ON},
    +    {0xa610, 0xa62b, direction::L},     {0xa640, 0xa66e, direction::L},
    +    {0xa66f, 0xa672, direction::NSM},   {0xa673, 0xa673, direction::ON},
    +    {0xa674, 0xa67d, direction::NSM},   {0xa67e, 0xa67f, direction::ON},
    +    {0xa680, 0xa69d, direction::L},     {0xa69e, 0xa69f, direction::NSM},
    +    {0xa6a0, 0xa6ef, direction::L},     {0xa6f0, 0xa6f1, direction::NSM},
    +    {0xa6f2, 0xa6f7, direction::L},     {0xa700, 0xa721, direction::ON},
    +    {0xa722, 0xa787, direction::L},     {0xa788, 0xa788, direction::ON},
    +    {0xa789, 0xa7bf, direction::L},     {0xa7c2, 0xa7ca, direction::L},
    +    {0xa7f5, 0xa801, direction::L},     {0xa802, 0xa802, direction::NSM},
    +    {0xa803, 0xa805, direction::L},     {0xa806, 0xa806, direction::NSM},
    +    {0xa807, 0xa80a, direction::L},     {0xa80b, 0xa80b, direction::NSM},
    +    {0xa80c, 0xa824, direction::L},     {0xa825, 0xa826, direction::NSM},
    +    {0xa827, 0xa827, direction::L},     {0xa828, 0xa82b, direction::ON},
    +    {0xa82c, 0xa82c, direction::NSM},   {0xa830, 0xa837, direction::L},
    +    {0xa838, 0xa839, direction::ET},    {0xa840, 0xa873, direction::L},
    +    {0xa874, 0xa877, direction::ON},    {0xa880, 0xa8c3, direction::L},
    +    {0xa8c4, 0xa8c5, direction::NSM},   {0xa8ce, 0xa8d9, direction::L},
    +    {0xa8e0, 0xa8f1, direction::NSM},   {0xa8f2, 0xa8fe, direction::L},
    +    {0xa8ff, 0xa8ff, direction::NSM},   {0xa900, 0xa925, direction::L},
    +    {0xa926, 0xa92d, direction::NSM},   {0xa92e, 0xa946, direction::L},
    +    {0xa947, 0xa951, direction::NSM},   {0xa952, 0xa953, direction::L},
    +    {0xa95f, 0xa97c, direction::L},     {0xa980, 0xa982, direction::NSM},
    +    {0xa983, 0xa9b2, direction::L},     {0xa9b3, 0xa9b3, direction::NSM},
    +    {0xa9b4, 0xa9b5, direction::L},     {0xa9b6, 0xa9b9, direction::NSM},
    +    {0xa9ba, 0xa9bb, direction::L},     {0xa9bc, 0xa9bd, direction::NSM},
    +    {0xa9be, 0xa9cd, direction::L},     {0xa9cf, 0xa9d9, direction::L},
    +    {0xa9de, 0xa9e4, direction::L},     {0xa9e5, 0xa9e5, direction::NSM},
    +    {0xa9e6, 0xa9fe, direction::L},     {0xaa00, 0xaa28, direction::L},
    +    {0xaa29, 0xaa2e, direction::NSM},   {0xaa2f, 0xaa30, direction::L},
    +    {0xaa31, 0xaa32, direction::NSM},   {0xaa33, 0xaa34, direction::L},
    +    {0xaa35, 0xaa36, direction::NSM},   {0xaa40, 0xaa42, direction::L},
    +    {0xaa43, 0xaa43, direction::NSM},   {0xaa44, 0xaa4b, direction::L},
    +    {0xaa4c, 0xaa4c, direction::NSM},   {0xaa4d, 0xaa4d, direction::L},
    +    {0xaa50, 0xaa59, direction::L},     {0xaa5c, 0xaa7b, direction::L},
    +    {0xaa7c, 0xaa7c, direction::NSM},   {0xaa7d, 0xaaaf, direction::L},
    +    {0xaab0, 0xaab0, direction::NSM},   {0xaab1, 0xaab1, direction::L},
    +    {0xaab2, 0xaab4, direction::NSM},   {0xaab5, 0xaab6, direction::L},
    +    {0xaab7, 0xaab8, direction::NSM},   {0xaab9, 0xaabd, direction::L},
    +    {0xaabe, 0xaabf, direction::NSM},   {0xaac0, 0xaac0, direction::L},
    +    {0xaac1, 0xaac1, direction::NSM},   {0xaac2, 0xaac2, direction::L},
    +    {0xaadb, 0xaaeb, direction::L},     {0xaaec, 0xaaed, direction::NSM},
    +    {0xaaee, 0xaaf5, direction::L},     {0xaaf6, 0xaaf6, direction::NSM},
    +    {0xab01, 0xab06, direction::L},     {0xab09, 0xab0e, direction::L},
    +    {0xab11, 0xab16, direction::L},     {0xab20, 0xab26, direction::L},
    +    {0xab28, 0xab2e, direction::L},     {0xab30, 0xab69, direction::L},
    +    {0xab6a, 0xab6b, direction::ON},    {0xab70, 0xabe4, direction::L},
    +    {0xabe5, 0xabe5, direction::NSM},   {0xabe6, 0xabe7, direction::L},
    +    {0xabe8, 0xabe8, direction::NSM},   {0xabe9, 0xabec, direction::L},
    +    {0xabed, 0xabed, direction::NSM},   {0xabf0, 0xabf9, direction::L},
    +    {0xac00, 0xd7a3, direction::L},     {0xd7b0, 0xd7c6, direction::L},
    +    {0xd7cb, 0xd7fb, direction::L},     {0xd800, 0xfa6d, direction::L},
    +    {0xfa70, 0xfad9, direction::L},     {0xfb00, 0xfb06, direction::L},
    +    {0xfb13, 0xfb17, direction::L},     {0xfb1d, 0xfb1d, direction::R},
    +    {0xfb1e, 0xfb1e, direction::NSM},   {0xfb1f, 0xfb28, direction::R},
    +    {0xfb29, 0xfb29, direction::ES},    {0xfb2a, 0xfb36, direction::R},
    +    {0xfb38, 0xfb3c, direction::R},     {0xfb3e, 0xfb3e, direction::R},
    +    {0xfb40, 0xfb41, direction::R},     {0xfb43, 0xfb44, direction::R},
    +    {0xfb46, 0xfb4f, direction::R},     {0xfb50, 0xfbc1, direction::AL},
    +    {0xfbd3, 0xfd3d, direction::AL},    {0xfd3e, 0xfd3f, direction::ON},
    +    {0xfd50, 0xfd8f, direction::AL},    {0xfd92, 0xfdc7, direction::AL},
    +    {0xfdf0, 0xfdfc, direction::AL},    {0xfdfd, 0xfdfd, direction::ON},
    +    {0xfe00, 0xfe0f, direction::NSM},   {0xfe10, 0xfe19, direction::ON},
    +    {0xfe20, 0xfe2f, direction::NSM},   {0xfe30, 0xfe4f, direction::ON},
    +    {0xfe50, 0xfe50, direction::CS},    {0xfe51, 0xfe51, direction::ON},
    +    {0xfe52, 0xfe52, direction::CS},    {0xfe54, 0xfe54, direction::ON},
    +    {0xfe55, 0xfe55, direction::CS},    {0xfe56, 0xfe5e, direction::ON},
    +    {0xfe5f, 0xfe5f, direction::ET},    {0xfe60, 0xfe61, direction::ON},
    +    {0xfe62, 0xfe63, direction::ES},    {0xfe64, 0xfe66, direction::ON},
    +    {0xfe68, 0xfe68, direction::ON},    {0xfe69, 0xfe6a, direction::ET},
    +    {0xfe6b, 0xfe6b, direction::ON},    {0xfe70, 0xfe74, direction::AL},
    +    {0xfe76, 0xfefc, direction::AL},    {0xfeff, 0xfeff, direction::BN},
    +    {0xff01, 0xff02, direction::ON},    {0xff03, 0xff05, direction::ET},
    +    {0xff06, 0xff0a, direction::ON},    {0xff0b, 0xff0b, direction::ES},
    +    {0xff0c, 0xff0c, direction::CS},    {0xff0d, 0xff0d, direction::ES},
    +    {0xff0e, 0xff0f, direction::CS},    {0xff10, 0xff19, direction::EN},
    +    {0xff1a, 0xff1a, direction::CS},    {0xff1b, 0xff20, direction::ON},
    +    {0xff21, 0xff3a, direction::L},     {0xff3b, 0xff40, direction::ON},
    +    {0xff41, 0xff5a, direction::L},     {0xff5b, 0xff65, direction::ON},
    +    {0xff66, 0xffbe, direction::L},     {0xffc2, 0xffc7, direction::L},
    +    {0xffca, 0xffcf, direction::L},     {0xffd2, 0xffd7, direction::L},
    +    {0xffda, 0xffdc, direction::L},     {0xffe0, 0xffe1, direction::ET},
    +    {0xffe2, 0xffe4, direction::ON},    {0xffe5, 0xffe6, direction::ET},
    +    {0xffe8, 0xffee, direction::ON},    {0xfff9, 0xfffd, direction::ON},
    +    {0x10000, 0x1000b, direction::L},   {0x1000d, 0x10026, direction::L},
    +    {0x10028, 0x1003a, direction::L},   {0x1003c, 0x1003d, direction::L},
    +    {0x1003f, 0x1004d, direction::L},   {0x10050, 0x1005d, direction::L},
    +    {0x10080, 0x100fa, direction::L},   {0x10100, 0x10100, direction::L},
    +    {0x10101, 0x10101, direction::ON},  {0x10102, 0x10102, direction::L},
    +    {0x10107, 0x10133, direction::L},   {0x10137, 0x1013f, direction::L},
    +    {0x10140, 0x1018c, direction::ON},  {0x1018d, 0x1018e, direction::L},
    +    {0x10190, 0x1019c, direction::ON},  {0x101a0, 0x101a0, direction::ON},
    +    {0x101d0, 0x101fc, direction::L},   {0x101fd, 0x101fd, direction::NSM},
    +    {0x10280, 0x1029c, direction::L},   {0x102a0, 0x102d0, direction::L},
    +    {0x102e0, 0x102e0, direction::NSM}, {0x102e1, 0x102fb, direction::EN},
    +    {0x10300, 0x10323, direction::L},   {0x1032d, 0x1034a, direction::L},
    +    {0x10350, 0x10375, direction::L},   {0x10376, 0x1037a, direction::NSM},
    +    {0x10380, 0x1039d, direction::L},   {0x1039f, 0x103c3, direction::L},
    +    {0x103c8, 0x103d5, direction::L},   {0x10400, 0x1049d, direction::L},
    +    {0x104a0, 0x104a9, direction::L},   {0x104b0, 0x104d3, direction::L},
    +    {0x104d8, 0x104fb, direction::L},   {0x10500, 0x10527, direction::L},
    +    {0x10530, 0x10563, direction::L},   {0x1056f, 0x1056f, direction::L},
    +    {0x10600, 0x10736, direction::L},   {0x10740, 0x10755, direction::L},
    +    {0x10760, 0x10767, direction::L},   {0x10800, 0x10805, direction::R},
    +    {0x10808, 0x10808, direction::R},   {0x1080a, 0x10835, direction::R},
    +    {0x10837, 0x10838, direction::R},   {0x1083c, 0x1083c, direction::R},
    +    {0x1083f, 0x10855, direction::R},   {0x10857, 0x1089e, direction::R},
    +    {0x108a7, 0x108af, direction::R},   {0x108e0, 0x108f2, direction::R},
    +    {0x108f4, 0x108f5, direction::R},   {0x108fb, 0x1091b, direction::R},
    +    {0x1091f, 0x1091f, direction::ON},  {0x10920, 0x10939, direction::R},
    +    {0x1093f, 0x1093f, direction::R},   {0x10980, 0x109b7, direction::R},
    +    {0x109bc, 0x109cf, direction::R},   {0x109d2, 0x10a00, direction::R},
    +    {0x10a01, 0x10a03, direction::NSM}, {0x10a05, 0x10a06, direction::NSM},
    +    {0x10a0c, 0x10a0f, direction::NSM}, {0x10a10, 0x10a13, direction::R},
    +    {0x10a15, 0x10a17, direction::R},   {0x10a19, 0x10a35, direction::R},
    +    {0x10a38, 0x10a3a, direction::NSM}, {0x10a3f, 0x10a3f, direction::NSM},
    +    {0x10a40, 0x10a48, direction::R},   {0x10a50, 0x10a58, direction::R},
    +    {0x10a60, 0x10a9f, direction::R},   {0x10ac0, 0x10ae4, direction::R},
    +    {0x10ae5, 0x10ae6, direction::NSM}, {0x10aeb, 0x10af6, direction::R},
    +    {0x10b00, 0x10b35, direction::R},   {0x10b39, 0x10b3f, direction::ON},
    +    {0x10b40, 0x10b55, direction::R},   {0x10b58, 0x10b72, direction::R},
    +    {0x10b78, 0x10b91, direction::R},   {0x10b99, 0x10b9c, direction::R},
    +    {0x10ba9, 0x10baf, direction::R},   {0x10c00, 0x10c48, direction::R},
    +    {0x10c80, 0x10cb2, direction::R},   {0x10cc0, 0x10cf2, direction::R},
    +    {0x10cfa, 0x10cff, direction::R},   {0x10d00, 0x10d23, direction::AL},
    +    {0x10d24, 0x10d27, direction::NSM}, {0x10d30, 0x10d39, direction::AN},
    +    {0x10e60, 0x10e7e, direction::AN},  {0x10e80, 0x10ea9, direction::R},
    +    {0x10eab, 0x10eac, direction::NSM}, {0x10ead, 0x10ead, direction::R},
    +    {0x10eb0, 0x10eb1, direction::R},   {0x10f00, 0x10f27, direction::R},
    +    {0x10f30, 0x10f45, direction::AL},  {0x10f46, 0x10f50, direction::NSM},
    +    {0x10f51, 0x10f59, direction::AL},  {0x10fb0, 0x10fcb, direction::R},
    +    {0x10fe0, 0x10ff6, direction::R},   {0x11000, 0x11000, direction::L},
    +    {0x11001, 0x11001, direction::NSM}, {0x11002, 0x11037, direction::L},
    +    {0x11038, 0x11046, direction::NSM}, {0x11047, 0x1104d, direction::L},
    +    {0x11052, 0x11065, direction::ON},  {0x11066, 0x1106f, direction::L},
    +    {0x1107f, 0x11081, direction::NSM}, {0x11082, 0x110b2, direction::L},
    +    {0x110b3, 0x110b6, direction::NSM}, {0x110b7, 0x110b8, direction::L},
    +    {0x110b9, 0x110ba, direction::NSM}, {0x110bb, 0x110c1, direction::L},
    +    {0x110cd, 0x110cd, direction::L},   {0x110d0, 0x110e8, direction::L},
    +    {0x110f0, 0x110f9, direction::L},   {0x11100, 0x11102, direction::NSM},
    +    {0x11103, 0x11126, direction::L},   {0x11127, 0x1112b, direction::NSM},
    +    {0x1112c, 0x1112c, direction::L},   {0x1112d, 0x11134, direction::NSM},
    +    {0x11136, 0x11147, direction::L},   {0x11150, 0x11172, direction::L},
    +    {0x11173, 0x11173, direction::NSM}, {0x11174, 0x11176, direction::L},
    +    {0x11180, 0x11181, direction::NSM}, {0x11182, 0x111b5, direction::L},
    +    {0x111b6, 0x111be, direction::NSM}, {0x111bf, 0x111c8, direction::L},
    +    {0x111c9, 0x111cc, direction::NSM}, {0x111cd, 0x111ce, direction::L},
    +    {0x111cf, 0x111cf, direction::NSM}, {0x111d0, 0x111df, direction::L},
    +    {0x111e1, 0x111f4, direction::L},   {0x11200, 0x11211, direction::L},
    +    {0x11213, 0x1122e, direction::L},   {0x1122f, 0x11231, direction::NSM},
    +    {0x11232, 0x11233, direction::L},   {0x11234, 0x11234, direction::NSM},
    +    {0x11235, 0x11235, direction::L},   {0x11236, 0x11237, direction::NSM},
    +    {0x11238, 0x1123d, direction::L},   {0x1123e, 0x1123e, direction::NSM},
    +    {0x11280, 0x11286, direction::L},   {0x11288, 0x11288, direction::L},
    +    {0x1128a, 0x1128d, direction::L},   {0x1128f, 0x1129d, direction::L},
    +    {0x1129f, 0x112a9, direction::L},   {0x112b0, 0x112de, direction::L},
    +    {0x112df, 0x112df, direction::NSM}, {0x112e0, 0x112e2, direction::L},
    +    {0x112e3, 0x112ea, direction::NSM}, {0x112f0, 0x112f9, direction::L},
    +    {0x11300, 0x11301, direction::NSM}, {0x11302, 0x11303, direction::L},
    +    {0x11305, 0x1130c, direction::L},   {0x1130f, 0x11310, direction::L},
    +    {0x11313, 0x11328, direction::L},   {0x1132a, 0x11330, direction::L},
    +    {0x11332, 0x11333, direction::L},   {0x11335, 0x11339, direction::L},
    +    {0x1133b, 0x1133c, direction::NSM}, {0x1133d, 0x1133f, direction::L},
    +    {0x11340, 0x11340, direction::NSM}, {0x11341, 0x11344, direction::L},
    +    {0x11347, 0x11348, direction::L},   {0x1134b, 0x1134d, direction::L},
    +    {0x11350, 0x11350, direction::L},   {0x11357, 0x11357, direction::L},
    +    {0x1135d, 0x11363, direction::L},   {0x11366, 0x1136c, direction::NSM},
    +    {0x11370, 0x11374, direction::NSM}, {0x11400, 0x11437, direction::L},
    +    {0x11438, 0x1143f, direction::NSM}, {0x11440, 0x11441, direction::L},
    +    {0x11442, 0x11444, direction::NSM}, {0x11445, 0x11445, direction::L},
    +    {0x11446, 0x11446, direction::NSM}, {0x11447, 0x1145b, direction::L},
    +    {0x1145d, 0x1145d, direction::L},   {0x1145e, 0x1145e, direction::NSM},
    +    {0x1145f, 0x11461, direction::L},   {0x11480, 0x114b2, direction::L},
    +    {0x114b3, 0x114b8, direction::NSM}, {0x114b9, 0x114b9, direction::L},
    +    {0x114ba, 0x114ba, direction::NSM}, {0x114bb, 0x114be, direction::L},
    +    {0x114bf, 0x114c0, direction::NSM}, {0x114c1, 0x114c1, direction::L},
    +    {0x114c2, 0x114c3, direction::NSM}, {0x114c4, 0x114c7, direction::L},
    +    {0x114d0, 0x114d9, direction::L},   {0x11580, 0x115b1, direction::L},
    +    {0x115b2, 0x115b5, direction::NSM}, {0x115b8, 0x115bb, direction::L},
    +    {0x115bc, 0x115bd, direction::NSM}, {0x115be, 0x115be, direction::L},
    +    {0x115bf, 0x115c0, direction::NSM}, {0x115c1, 0x115db, direction::L},
    +    {0x115dc, 0x115dd, direction::NSM}, {0x11600, 0x11632, direction::L},
    +    {0x11633, 0x1163a, direction::NSM}, {0x1163b, 0x1163c, direction::L},
    +    {0x1163d, 0x1163d, direction::NSM}, {0x1163e, 0x1163e, direction::L},
    +    {0x1163f, 0x11640, direction::NSM}, {0x11641, 0x11644, direction::L},
    +    {0x11650, 0x11659, direction::L},   {0x11660, 0x1166c, direction::ON},
    +    {0x11680, 0x116aa, direction::L},   {0x116ab, 0x116ab, direction::NSM},
    +    {0x116ac, 0x116ac, direction::L},   {0x116ad, 0x116ad, direction::NSM},
    +    {0x116ae, 0x116af, direction::L},   {0x116b0, 0x116b5, direction::NSM},
    +    {0x116b6, 0x116b6, direction::L},   {0x116b7, 0x116b7, direction::NSM},
    +    {0x116b8, 0x116b8, direction::L},   {0x116c0, 0x116c9, direction::L},
    +    {0x11700, 0x1171a, direction::L},   {0x1171d, 0x1171f, direction::NSM},
    +    {0x11720, 0x11721, direction::L},   {0x11722, 0x11725, direction::NSM},
    +    {0x11726, 0x11726, direction::L},   {0x11727, 0x1172b, direction::NSM},
    +    {0x11730, 0x1173f, direction::L},   {0x11800, 0x1182e, direction::L},
    +    {0x1182f, 0x11837, direction::NSM}, {0x11838, 0x11838, direction::L},
    +    {0x11839, 0x1183a, direction::NSM}, {0x1183b, 0x1183b, direction::L},
    +    {0x118a0, 0x118f2, direction::L},   {0x118ff, 0x11906, direction::L},
    +    {0x11909, 0x11909, direction::L},   {0x1190c, 0x11913, direction::L},
    +    {0x11915, 0x11916, direction::L},   {0x11918, 0x11935, direction::L},
    +    {0x11937, 0x11938, direction::L},   {0x1193b, 0x1193c, direction::NSM},
    +    {0x1193d, 0x1193d, direction::L},   {0x1193e, 0x1193e, direction::NSM},
    +    {0x1193f, 0x11942, direction::L},   {0x11943, 0x11943, direction::NSM},
    +    {0x11944, 0x11946, direction::L},   {0x11950, 0x11959, direction::L},
    +    {0x119a0, 0x119a7, direction::L},   {0x119aa, 0x119d3, direction::L},
    +    {0x119d4, 0x119d7, direction::NSM}, {0x119da, 0x119db, direction::NSM},
    +    {0x119dc, 0x119df, direction::L},   {0x119e0, 0x119e0, direction::NSM},
    +    {0x119e1, 0x119e4, direction::L},   {0x11a00, 0x11a00, direction::L},
    +    {0x11a01, 0x11a06, direction::NSM}, {0x11a07, 0x11a08, direction::L},
    +    {0x11a09, 0x11a0a, direction::NSM}, {0x11a0b, 0x11a32, direction::L},
    +    {0x11a33, 0x11a38, direction::NSM}, {0x11a39, 0x11a3a, direction::L},
    +    {0x11a3b, 0x11a3e, direction::NSM}, {0x11a3f, 0x11a46, direction::L},
    +    {0x11a47, 0x11a47, direction::NSM}, {0x11a50, 0x11a50, direction::L},
    +    {0x11a51, 0x11a56, direction::NSM}, {0x11a57, 0x11a58, direction::L},
    +    {0x11a59, 0x11a5b, direction::NSM}, {0x11a5c, 0x11a89, direction::L},
    +    {0x11a8a, 0x11a96, direction::NSM}, {0x11a97, 0x11a97, direction::L},
    +    {0x11a98, 0x11a99, direction::NSM}, {0x11a9a, 0x11aa2, direction::L},
    +    {0x11ac0, 0x11af8, direction::L},   {0x11c00, 0x11c08, direction::L},
    +    {0x11c0a, 0x11c2f, direction::L},   {0x11c30, 0x11c36, direction::NSM},
    +    {0x11c38, 0x11c3d, direction::NSM}, {0x11c3e, 0x11c45, direction::L},
    +    {0x11c50, 0x11c6c, direction::L},   {0x11c70, 0x11c8f, direction::L},
    +    {0x11c92, 0x11ca7, direction::NSM}, {0x11ca9, 0x11ca9, direction::L},
    +    {0x11caa, 0x11cb0, direction::NSM}, {0x11cb1, 0x11cb1, direction::L},
    +    {0x11cb2, 0x11cb3, direction::NSM}, {0x11cb4, 0x11cb4, direction::L},
    +    {0x11cb5, 0x11cb6, direction::NSM}, {0x11d00, 0x11d06, direction::L},
    +    {0x11d08, 0x11d09, direction::L},   {0x11d0b, 0x11d30, direction::L},
    +    {0x11d31, 0x11d36, direction::NSM}, {0x11d3a, 0x11d3a, direction::NSM},
    +    {0x11d3c, 0x11d3d, direction::NSM}, {0x11d3f, 0x11d45, direction::NSM},
    +    {0x11d46, 0x11d46, direction::L},   {0x11d47, 0x11d47, direction::NSM},
    +    {0x11d50, 0x11d59, direction::L},   {0x11d60, 0x11d65, direction::L},
    +    {0x11d67, 0x11d68, direction::L},   {0x11d6a, 0x11d8e, direction::L},
    +    {0x11d90, 0x11d91, direction::NSM}, {0x11d93, 0x11d94, direction::L},
    +    {0x11d95, 0x11d95, direction::NSM}, {0x11d96, 0x11d96, direction::L},
    +    {0x11d97, 0x11d97, direction::NSM}, {0x11d98, 0x11d98, direction::L},
    +    {0x11da0, 0x11da9, direction::L},   {0x11ee0, 0x11ef2, direction::L},
    +    {0x11ef3, 0x11ef4, direction::NSM}, {0x11ef5, 0x11ef8, direction::L},
    +    {0x11fb0, 0x11fb0, direction::L},   {0x11fc0, 0x11fd4, direction::L},
    +    {0x11fd5, 0x11fdc, direction::ON},  {0x11fdd, 0x11fe0, direction::ET},
    +    {0x11fe1, 0x11ff1, direction::ON},  {0x11fff, 0x12399, direction::L},
    +    {0x12400, 0x1246e, direction::L},   {0x12470, 0x12474, direction::L},
    +    {0x12480, 0x12543, direction::L},   {0x13000, 0x1342e, direction::L},
    +    {0x13430, 0x13438, direction::L},   {0x14400, 0x14646, direction::L},
    +    {0x16800, 0x16a38, direction::L},   {0x16a40, 0x16a5e, direction::L},
    +    {0x16a60, 0x16a69, direction::L},   {0x16a6e, 0x16a6f, direction::L},
    +    {0x16ad0, 0x16aed, direction::L},   {0x16af0, 0x16af4, direction::NSM},
    +    {0x16af5, 0x16af5, direction::L},   {0x16b00, 0x16b2f, direction::L},
    +    {0x16b30, 0x16b36, direction::NSM}, {0x16b37, 0x16b45, direction::L},
    +    {0x16b50, 0x16b59, direction::L},   {0x16b5b, 0x16b61, direction::L},
    +    {0x16b63, 0x16b77, direction::L},   {0x16b7d, 0x16b8f, direction::L},
    +    {0x16e40, 0x16e9a, direction::L},   {0x16f00, 0x16f4a, direction::L},
    +    {0x16f4f, 0x16f4f, direction::NSM}, {0x16f50, 0x16f87, direction::L},
    +    {0x16f8f, 0x16f92, direction::NSM}, {0x16f93, 0x16f9f, direction::L},
    +    {0x16fe0, 0x16fe1, direction::L},   {0x16fe2, 0x16fe2, direction::ON},
    +    {0x16fe3, 0x16fe3, direction::L},   {0x16fe4, 0x16fe4, direction::NSM},
    +    {0x16ff0, 0x16ff1, direction::L},   {0x17000, 0x187f7, direction::L},
    +    {0x18800, 0x18cd5, direction::L},   {0x18d00, 0x18d08, direction::L},
    +    {0x1b000, 0x1b11e, direction::L},   {0x1b150, 0x1b152, direction::L},
    +    {0x1b164, 0x1b167, direction::L},   {0x1b170, 0x1b2fb, direction::L},
    +    {0x1bc00, 0x1bc6a, direction::L},   {0x1bc70, 0x1bc7c, direction::L},
    +    {0x1bc80, 0x1bc88, direction::L},   {0x1bc90, 0x1bc99, direction::L},
    +    {0x1bc9c, 0x1bc9c, direction::L},   {0x1bc9d, 0x1bc9e, direction::NSM},
    +    {0x1bc9f, 0x1bc9f, direction::L},   {0x1bca0, 0x1bca3, direction::BN},
    +    {0x1d000, 0x1d0f5, direction::L},   {0x1d100, 0x1d126, direction::L},
    +    {0x1d129, 0x1d166, direction::L},   {0x1d167, 0x1d169, direction::NSM},
    +    {0x1d16a, 0x1d172, direction::L},   {0x1d173, 0x1d17a, direction::BN},
    +    {0x1d17b, 0x1d182, direction::NSM}, {0x1d183, 0x1d184, direction::L},
    +    {0x1d185, 0x1d18b, direction::NSM}, {0x1d18c, 0x1d1a9, direction::L},
    +    {0x1d1aa, 0x1d1ad, direction::NSM}, {0x1d1ae, 0x1d1e8, direction::L},
    +    {0x1d200, 0x1d241, direction::ON},  {0x1d242, 0x1d244, direction::NSM},
    +    {0x1d245, 0x1d245, direction::ON},  {0x1d2e0, 0x1d2f3, direction::L},
    +    {0x1d300, 0x1d356, direction::ON},  {0x1d360, 0x1d378, direction::L},
    +    {0x1d400, 0x1d454, direction::L},   {0x1d456, 0x1d49c, direction::L},
    +    {0x1d49e, 0x1d49f, direction::L},   {0x1d4a2, 0x1d4a2, direction::L},
    +    {0x1d4a5, 0x1d4a6, direction::L},   {0x1d4a9, 0x1d4ac, direction::L},
    +    {0x1d4ae, 0x1d4b9, direction::L},   {0x1d4bb, 0x1d4bb, direction::L},
    +    {0x1d4bd, 0x1d4c3, direction::L},   {0x1d4c5, 0x1d505, direction::L},
    +    {0x1d507, 0x1d50a, direction::L},   {0x1d50d, 0x1d514, direction::L},
    +    {0x1d516, 0x1d51c, direction::L},   {0x1d51e, 0x1d539, direction::L},
    +    {0x1d53b, 0x1d53e, direction::L},   {0x1d540, 0x1d544, direction::L},
    +    {0x1d546, 0x1d546, direction::L},   {0x1d54a, 0x1d550, direction::L},
    +    {0x1d552, 0x1d6a5, direction::L},   {0x1d6a8, 0x1d6da, direction::L},
    +    {0x1d6db, 0x1d6db, direction::ON},  {0x1d6dc, 0x1d714, direction::L},
    +    {0x1d715, 0x1d715, direction::ON},  {0x1d716, 0x1d74e, direction::L},
    +    {0x1d74f, 0x1d74f, direction::ON},  {0x1d750, 0x1d788, direction::L},
    +    {0x1d789, 0x1d789, direction::ON},  {0x1d78a, 0x1d7c2, direction::L},
    +    {0x1d7c3, 0x1d7c3, direction::ON},  {0x1d7c4, 0x1d7cb, direction::L},
    +    {0x1d7ce, 0x1d7ff, direction::EN},  {0x1d800, 0x1d9ff, direction::L},
    +    {0x1da00, 0x1da36, direction::NSM}, {0x1da37, 0x1da3a, direction::L},
    +    {0x1da3b, 0x1da6c, direction::NSM}, {0x1da6d, 0x1da74, direction::L},
    +    {0x1da75, 0x1da75, direction::NSM}, {0x1da76, 0x1da83, direction::L},
    +    {0x1da84, 0x1da84, direction::NSM}, {0x1da85, 0x1da8b, direction::L},
    +    {0x1da9b, 0x1da9f, direction::NSM}, {0x1daa1, 0x1daaf, direction::NSM},
    +    {0x1e000, 0x1e006, direction::NSM}, {0x1e008, 0x1e018, direction::NSM},
    +    {0x1e01b, 0x1e021, direction::NSM}, {0x1e023, 0x1e024, direction::NSM},
    +    {0x1e026, 0x1e02a, direction::NSM}, {0x1e100, 0x1e12c, direction::L},
    +    {0x1e130, 0x1e136, direction::NSM}, {0x1e137, 0x1e13d, direction::L},
    +    {0x1e140, 0x1e149, direction::L},   {0x1e14e, 0x1e14f, direction::L},
    +    {0x1e2c0, 0x1e2eb, direction::L},   {0x1e2ec, 0x1e2ef, direction::NSM},
    +    {0x1e2f0, 0x1e2f9, direction::L},   {0x1e2ff, 0x1e2ff, direction::ET},
    +    {0x1e800, 0x1e8c4, direction::R},   {0x1e8c7, 0x1e8cf, direction::R},
    +    {0x1e8d0, 0x1e8d6, direction::NSM}, {0x1e900, 0x1e943, direction::R},
    +    {0x1e944, 0x1e94a, direction::NSM}, {0x1e94b, 0x1e94b, direction::R},
    +    {0x1e950, 0x1e959, direction::R},   {0x1e95e, 0x1e95f, direction::R},
    +    {0x1ec71, 0x1ecb4, direction::AL},  {0x1ed01, 0x1ed3d, direction::AL},
    +    {0x1ee00, 0x1ee03, direction::AL},  {0x1ee05, 0x1ee1f, direction::AL},
    +    {0x1ee21, 0x1ee22, direction::AL},  {0x1ee24, 0x1ee24, direction::AL},
    +    {0x1ee27, 0x1ee27, direction::AL},  {0x1ee29, 0x1ee32, direction::AL},
    +    {0x1ee34, 0x1ee37, direction::AL},  {0x1ee39, 0x1ee39, direction::AL},
    +    {0x1ee3b, 0x1ee3b, direction::AL},  {0x1ee42, 0x1ee42, direction::AL},
    +    {0x1ee47, 0x1ee47, direction::AL},  {0x1ee49, 0x1ee49, direction::AL},
    +    {0x1ee4b, 0x1ee4b, direction::AL},  {0x1ee4d, 0x1ee4f, direction::AL},
    +    {0x1ee51, 0x1ee52, direction::AL},  {0x1ee54, 0x1ee54, direction::AL},
    +    {0x1ee57, 0x1ee57, direction::AL},  {0x1ee59, 0x1ee59, direction::AL},
    +    {0x1ee5b, 0x1ee5b, direction::AL},  {0x1ee5d, 0x1ee5d, direction::AL},
    +    {0x1ee5f, 0x1ee5f, direction::AL},  {0x1ee61, 0x1ee62, direction::AL},
    +    {0x1ee64, 0x1ee64, direction::AL},  {0x1ee67, 0x1ee6a, direction::AL},
    +    {0x1ee6c, 0x1ee72, direction::AL},  {0x1ee74, 0x1ee77, direction::AL},
    +    {0x1ee79, 0x1ee7c, direction::AL},  {0x1ee7e, 0x1ee7e, direction::AL},
    +    {0x1ee80, 0x1ee89, direction::AL},  {0x1ee8b, 0x1ee9b, direction::AL},
    +    {0x1eea1, 0x1eea3, direction::AL},  {0x1eea5, 0x1eea9, direction::AL},
    +    {0x1eeab, 0x1eebb, direction::AL},  {0x1eef0, 0x1eef1, direction::ON},
    +    {0x1f000, 0x1f02b, direction::ON},  {0x1f030, 0x1f093, direction::ON},
    +    {0x1f0a0, 0x1f0ae, direction::ON},  {0x1f0b1, 0x1f0bf, direction::ON},
    +    {0x1f0c1, 0x1f0cf, direction::ON},  {0x1f0d1, 0x1f0f5, direction::ON},
    +    {0x1f100, 0x1f10a, direction::EN},  {0x1f10b, 0x1f10f, direction::ON},
    +    {0x1f110, 0x1f12e, direction::L},   {0x1f12f, 0x1f12f, direction::ON},
    +    {0x1f130, 0x1f169, direction::L},   {0x1f16a, 0x1f16f, direction::ON},
    +    {0x1f170, 0x1f1ac, direction::L},   {0x1f1ad, 0x1f1ad, direction::ON},
    +    {0x1f1e6, 0x1f202, direction::L},   {0x1f210, 0x1f23b, direction::L},
    +    {0x1f240, 0x1f248, direction::L},   {0x1f250, 0x1f251, direction::L},
    +    {0x1f260, 0x1f265, direction::ON},  {0x1f300, 0x1f6d7, direction::ON},
    +    {0x1f6e0, 0x1f6ec, direction::ON},  {0x1f6f0, 0x1f6fc, direction::ON},
    +    {0x1f700, 0x1f773, direction::ON},  {0x1f780, 0x1f7d8, direction::ON},
    +    {0x1f7e0, 0x1f7eb, direction::ON},  {0x1f800, 0x1f80b, direction::ON},
    +    {0x1f810, 0x1f847, direction::ON},  {0x1f850, 0x1f859, direction::ON},
    +    {0x1f860, 0x1f887, direction::ON},  {0x1f890, 0x1f8ad, direction::ON},
    +    {0x1f8b0, 0x1f8b1, direction::ON},  {0x1f900, 0x1f978, direction::ON},
    +    {0x1f97a, 0x1f9cb, direction::ON},  {0x1f9cd, 0x1fa53, direction::ON},
    +    {0x1fa60, 0x1fa6d, direction::ON},  {0x1fa70, 0x1fa74, direction::ON},
    +    {0x1fa78, 0x1fa7a, direction::ON},  {0x1fa80, 0x1fa86, direction::ON},
    +    {0x1fa90, 0x1faa8, direction::ON},  {0x1fab0, 0x1fab6, direction::ON},
    +    {0x1fac0, 0x1fac2, direction::ON},  {0x1fad0, 0x1fad6, direction::ON},
    +    {0x1fb00, 0x1fb92, direction::ON},  {0x1fb94, 0x1fbca, direction::ON},
    +    {0x1fbf0, 0x1fbf9, direction::EN},  {0x20000, 0x2a6dd, direction::L},
    +    {0x2a700, 0x2b734, direction::L},   {0x2b740, 0x2b81d, direction::L},
    +    {0x2b820, 0x2cea1, direction::L},   {0x2ceb0, 0x2ebe0, direction::L},
    +    {0x2f800, 0x2fa1d, direction::L},   {0x30000, 0x3134a, direction::L},
    +    {0xe0001, 0xe0001, direction::BN},  {0xe0020, 0xe007f, direction::BN},
    +    {0xe0100, 0xe01ef, direction::NSM}, {0xf0000, 0xffffd, direction::L},
    +    {0x100000, 0x10fffd, direction::L}};
    +
    +// CheckJoiners and CheckBidi are true for URL specification.
    +
    +inline static direction find_direction(uint32_t code_point) noexcept {
    +  auto it = std::lower_bound(
    +      std::begin(dir_table), std::end(dir_table), code_point,
    +      [](const directions& d, uint32_t c) { return d.final_code < c; });
    +
    +  // next check is almost surely in vain, but we use it for safety.
    +  if (it == std::end(dir_table)) {
    +    return direction::NONE;
    +  }
    +  // We have that d.final_code >= c.
    +  if (code_point >= it->start_code) {
    +    return it->direct;
    +  }
    +  return direction::NONE;
    +}
     
    -        // Decrease pointer by length.
    -        pointer -= length;
    +inline static size_t find_last_not_of_nsm(
    +    const std::u32string_view label) noexcept {
    +  for (int i = label.size() - 1; i >= 0; i--)
    +    if (find_direction(label[i]) != direction::NSM) return i;
     
    -        // If pieceIndex is greater than 6, validation error, return failure.
    -        if (piece_index > 6) {
    -          ada_log("parse_ipv6 piece_index > 6");
    -          return is_valid = false;
    -        }
    +  return std::u32string_view::npos;
    +}
     
    -        // Let numbersSeen be 0.
    -        int numbers_seen = 0;
    +// An RTL label is a label that contains at least one character of type R, AL,
    +// or AN. https://www.rfc-editor.org/rfc/rfc5893#section-2
    +inline static bool is_rtl_label(const std::u32string_view label) noexcept {
    +  const size_t mask =
    +      (1u << direction::R) | (1u << direction::AL) | (1u << direction::AN);
     
    -        // While c is not the EOF code point:
    -        while (pointer != input.end()) {
    -          // Let ipv4Piece be null.
    -          std::optional ipv4_piece{};
    +  size_t directions = 0;
    +  for (size_t i = 0; i < label.size(); i++) {
    +    directions |= 1u << find_direction(label[i]);
    +  }
    +  return (directions & mask) != 0;
    +}
     
    -          // If numbersSeen is greater than 0, then:
    -          if (numbers_seen > 0) {
    -            // If c is a U+002E (.) and numbersSeen is less than 4, then increase pointer by 1.
    -            if (*pointer == '.' && numbers_seen < 4) {
    -              pointer++;
    -            }
    -            // Otherwise, validation error, return failure.
    -            else {
    -              ada_log("parse_ipv6 Otherwise, validation error, return failure");
    -              return is_valid = false;
    -            }
    -          }
    +bool is_label_valid(const std::u32string_view label) {
    +  if (label.empty()) {
    +    return true;
    +  }
     
    -          // If c is not an ASCII digit, validation error, return failure.
    -          if (pointer == input.end() || !checkers::is_digit(*pointer)) {
    -            ada_log("parse_ipv6 If c is not an ASCII digit, validation error, return failure");
    -            return is_valid = false;
    -          }
    +  ///////////////
    +  // We have a normalization step which ensures that we are in NFC.
    +  // If we receive punycode, we normalize and check that the normalized
    +  // version matches the original.
    +  // --------------------------------------
    +  // The label must be in Unicode Normalization Form NFC.
    +
    +  // Current URL standard indicatest that CheckHyphens is set to false.
    +  // ---------------------------------------
    +  // If CheckHyphens, the label must not contain a U+002D HYPHEN-MINUS character
    +  // in both the third and fourth positions. If CheckHyphens, the label must
    +  // neither begin nor end with a U+002D HYPHEN-MINUS character.
    +
    +  // This is not necessary because we segment the
    +  // labels by '.'.
    +  // ---------------------------------------
    +  // The label must not contain a U+002E ( . ) FULL STOP.
    +  // if (label.find('.') != std::string_view::npos) return false;
    +
    +  // The label must not begin with a combining mark, that is:
    +  // General_Category=Mark.
    +  constexpr static uint32_t combining[] = {
    +      0x300,   0x301,   0x302,   0x303,   0x304,   0x305,   0x306,   0x307,
    +      0x308,   0x309,   0x30a,   0x30b,   0x30c,   0x30d,   0x30e,   0x30f,
    +      0x310,   0x311,   0x312,   0x313,   0x314,   0x315,   0x316,   0x317,
    +      0x318,   0x319,   0x31a,   0x31b,   0x31c,   0x31d,   0x31e,   0x31f,
    +      0x320,   0x321,   0x322,   0x323,   0x324,   0x325,   0x326,   0x327,
    +      0x328,   0x329,   0x32a,   0x32b,   0x32c,   0x32d,   0x32e,   0x32f,
    +      0x330,   0x331,   0x332,   0x333,   0x334,   0x335,   0x336,   0x337,
    +      0x338,   0x339,   0x33a,   0x33b,   0x33c,   0x33d,   0x33e,   0x33f,
    +      0x340,   0x341,   0x342,   0x343,   0x344,   0x345,   0x346,   0x347,
    +      0x348,   0x349,   0x34a,   0x34b,   0x34c,   0x34d,   0x34e,   0x34f,
    +      0x350,   0x351,   0x352,   0x353,   0x354,   0x355,   0x356,   0x357,
    +      0x358,   0x359,   0x35a,   0x35b,   0x35c,   0x35d,   0x35e,   0x35f,
    +      0x360,   0x361,   0x362,   0x363,   0x364,   0x365,   0x366,   0x367,
    +      0x368,   0x369,   0x36a,   0x36b,   0x36c,   0x36d,   0x36e,   0x36f,
    +      0x483,   0x484,   0x485,   0x486,   0x487,   0x488,   0x489,   0x591,
    +      0x592,   0x593,   0x594,   0x595,   0x596,   0x597,   0x598,   0x599,
    +      0x59a,   0x59b,   0x59c,   0x59d,   0x59e,   0x59f,   0x5a0,   0x5a1,
    +      0x5a2,   0x5a3,   0x5a4,   0x5a5,   0x5a6,   0x5a7,   0x5a8,   0x5a9,
    +      0x5aa,   0x5ab,   0x5ac,   0x5ad,   0x5ae,   0x5af,   0x5b0,   0x5b1,
    +      0x5b2,   0x5b3,   0x5b4,   0x5b5,   0x5b6,   0x5b7,   0x5b8,   0x5b9,
    +      0x5ba,   0x5bb,   0x5bc,   0x5bd,   0x5bf,   0x5c1,   0x5c2,   0x5c4,
    +      0x5c5,   0x5c7,   0x610,   0x611,   0x612,   0x613,   0x614,   0x615,
    +      0x616,   0x617,   0x618,   0x619,   0x61a,   0x64b,   0x64c,   0x64d,
    +      0x64e,   0x64f,   0x650,   0x651,   0x652,   0x653,   0x654,   0x655,
    +      0x656,   0x657,   0x658,   0x659,   0x65a,   0x65b,   0x65c,   0x65d,
    +      0x65e,   0x65f,   0x670,   0x6d6,   0x6d7,   0x6d8,   0x6d9,   0x6da,
    +      0x6db,   0x6dc,   0x6df,   0x6e0,   0x6e1,   0x6e2,   0x6e3,   0x6e4,
    +      0x6e7,   0x6e8,   0x6ea,   0x6eb,   0x6ec,   0x6ed,   0x711,   0x730,
    +      0x731,   0x732,   0x733,   0x734,   0x735,   0x736,   0x737,   0x738,
    +      0x739,   0x73a,   0x73b,   0x73c,   0x73d,   0x73e,   0x73f,   0x740,
    +      0x741,   0x742,   0x743,   0x744,   0x745,   0x746,   0x747,   0x748,
    +      0x749,   0x74a,   0x7a6,   0x7a7,   0x7a8,   0x7a9,   0x7aa,   0x7ab,
    +      0x7ac,   0x7ad,   0x7ae,   0x7af,   0x7b0,   0x7eb,   0x7ec,   0x7ed,
    +      0x7ee,   0x7ef,   0x7f0,   0x7f1,   0x7f2,   0x7f3,   0x7fd,   0x816,
    +      0x817,   0x818,   0x819,   0x81b,   0x81c,   0x81d,   0x81e,   0x81f,
    +      0x820,   0x821,   0x822,   0x823,   0x825,   0x826,   0x827,   0x829,
    +      0x82a,   0x82b,   0x82c,   0x82d,   0x859,   0x85a,   0x85b,   0x8d3,
    +      0x8d4,   0x8d5,   0x8d6,   0x8d7,   0x8d8,   0x8d9,   0x8da,   0x8db,
    +      0x8dc,   0x8dd,   0x8de,   0x8df,   0x8e0,   0x8e1,   0x8e3,   0x8e4,
    +      0x8e5,   0x8e6,   0x8e7,   0x8e8,   0x8e9,   0x8ea,   0x8eb,   0x8ec,
    +      0x8ed,   0x8ee,   0x8ef,   0x8f0,   0x8f1,   0x8f2,   0x8f3,   0x8f4,
    +      0x8f5,   0x8f6,   0x8f7,   0x8f8,   0x8f9,   0x8fa,   0x8fb,   0x8fc,
    +      0x8fd,   0x8fe,   0x8ff,   0x900,   0x901,   0x902,   0x903,   0x93a,
    +      0x93b,   0x93c,   0x93e,   0x93f,   0x940,   0x941,   0x942,   0x943,
    +      0x944,   0x945,   0x946,   0x947,   0x948,   0x949,   0x94a,   0x94b,
    +      0x94c,   0x94d,   0x94e,   0x94f,   0x951,   0x952,   0x953,   0x954,
    +      0x955,   0x956,   0x957,   0x962,   0x963,   0x981,   0x982,   0x983,
    +      0x9bc,   0x9be,   0x9bf,   0x9c0,   0x9c1,   0x9c2,   0x9c3,   0x9c4,
    +      0x9c7,   0x9c8,   0x9cb,   0x9cc,   0x9cd,   0x9d7,   0x9e2,   0x9e3,
    +      0x9fe,   0xa01,   0xa02,   0xa03,   0xa3c,   0xa3e,   0xa3f,   0xa40,
    +      0xa41,   0xa42,   0xa47,   0xa48,   0xa4b,   0xa4c,   0xa4d,   0xa51,
    +      0xa70,   0xa71,   0xa75,   0xa81,   0xa82,   0xa83,   0xabc,   0xabe,
    +      0xabf,   0xac0,   0xac1,   0xac2,   0xac3,   0xac4,   0xac5,   0xac7,
    +      0xac8,   0xac9,   0xacb,   0xacc,   0xacd,   0xae2,   0xae3,   0xafa,
    +      0xafb,   0xafc,   0xafd,   0xafe,   0xaff,   0xb01,   0xb02,   0xb03,
    +      0xb3c,   0xb3e,   0xb3f,   0xb40,   0xb41,   0xb42,   0xb43,   0xb44,
    +      0xb47,   0xb48,   0xb4b,   0xb4c,   0xb4d,   0xb55,   0xb56,   0xb57,
    +      0xb62,   0xb63,   0xb82,   0xbbe,   0xbbf,   0xbc0,   0xbc1,   0xbc2,
    +      0xbc6,   0xbc7,   0xbc8,   0xbca,   0xbcb,   0xbcc,   0xbcd,   0xbd7,
    +      0xc00,   0xc01,   0xc02,   0xc03,   0xc04,   0xc3e,   0xc3f,   0xc40,
    +      0xc41,   0xc42,   0xc43,   0xc44,   0xc46,   0xc47,   0xc48,   0xc4a,
    +      0xc4b,   0xc4c,   0xc4d,   0xc55,   0xc56,   0xc62,   0xc63,   0xc81,
    +      0xc82,   0xc83,   0xcbc,   0xcbe,   0xcbf,   0xcc0,   0xcc1,   0xcc2,
    +      0xcc3,   0xcc4,   0xcc6,   0xcc7,   0xcc8,   0xcca,   0xccb,   0xccc,
    +      0xccd,   0xcd5,   0xcd6,   0xce2,   0xce3,   0xd00,   0xd01,   0xd02,
    +      0xd03,   0xd3b,   0xd3c,   0xd3e,   0xd3f,   0xd40,   0xd41,   0xd42,
    +      0xd43,   0xd44,   0xd46,   0xd47,   0xd48,   0xd4a,   0xd4b,   0xd4c,
    +      0xd4d,   0xd57,   0xd62,   0xd63,   0xd81,   0xd82,   0xd83,   0xdca,
    +      0xdcf,   0xdd0,   0xdd1,   0xdd2,   0xdd3,   0xdd4,   0xdd6,   0xdd8,
    +      0xdd9,   0xdda,   0xddb,   0xddc,   0xddd,   0xdde,   0xddf,   0xdf2,
    +      0xdf3,   0xe31,   0xe34,   0xe35,   0xe36,   0xe37,   0xe38,   0xe39,
    +      0xe3a,   0xe47,   0xe48,   0xe49,   0xe4a,   0xe4b,   0xe4c,   0xe4d,
    +      0xe4e,   0xeb1,   0xeb4,   0xeb5,   0xeb6,   0xeb7,   0xeb8,   0xeb9,
    +      0xeba,   0xebb,   0xebc,   0xec8,   0xec9,   0xeca,   0xecb,   0xecc,
    +      0xecd,   0xf18,   0xf19,   0xf35,   0xf37,   0xf39,   0xf3e,   0xf3f,
    +      0xf71,   0xf72,   0xf73,   0xf74,   0xf75,   0xf76,   0xf77,   0xf78,
    +      0xf79,   0xf7a,   0xf7b,   0xf7c,   0xf7d,   0xf7e,   0xf7f,   0xf80,
    +      0xf81,   0xf82,   0xf83,   0xf84,   0xf86,   0xf87,   0xf8d,   0xf8e,
    +      0xf8f,   0xf90,   0xf91,   0xf92,   0xf93,   0xf94,   0xf95,   0xf96,
    +      0xf97,   0xf99,   0xf9a,   0xf9b,   0xf9c,   0xf9d,   0xf9e,   0xf9f,
    +      0xfa0,   0xfa1,   0xfa2,   0xfa3,   0xfa4,   0xfa5,   0xfa6,   0xfa7,
    +      0xfa8,   0xfa9,   0xfaa,   0xfab,   0xfac,   0xfad,   0xfae,   0xfaf,
    +      0xfb0,   0xfb1,   0xfb2,   0xfb3,   0xfb4,   0xfb5,   0xfb6,   0xfb7,
    +      0xfb8,   0xfb9,   0xfba,   0xfbb,   0xfbc,   0xfc6,   0x102b,  0x102c,
    +      0x102d,  0x102e,  0x102f,  0x1030,  0x1031,  0x1032,  0x1033,  0x1034,
    +      0x1035,  0x1036,  0x1037,  0x1038,  0x1039,  0x103a,  0x103b,  0x103c,
    +      0x103d,  0x103e,  0x1056,  0x1057,  0x1058,  0x1059,  0x105e,  0x105f,
    +      0x1060,  0x1062,  0x1063,  0x1064,  0x1067,  0x1068,  0x1069,  0x106a,
    +      0x106b,  0x106c,  0x106d,  0x1071,  0x1072,  0x1073,  0x1074,  0x1082,
    +      0x1083,  0x1084,  0x1085,  0x1086,  0x1087,  0x1088,  0x1089,  0x108a,
    +      0x108b,  0x108c,  0x108d,  0x108f,  0x109a,  0x109b,  0x109c,  0x109d,
    +      0x135d,  0x135e,  0x135f,  0x1712,  0x1713,  0x1714,  0x1732,  0x1733,
    +      0x1734,  0x1752,  0x1753,  0x1772,  0x1773,  0x17b4,  0x17b5,  0x17b6,
    +      0x17b7,  0x17b8,  0x17b9,  0x17ba,  0x17bb,  0x17bc,  0x17bd,  0x17be,
    +      0x17bf,  0x17c0,  0x17c1,  0x17c2,  0x17c3,  0x17c4,  0x17c5,  0x17c6,
    +      0x17c7,  0x17c8,  0x17c9,  0x17ca,  0x17cb,  0x17cc,  0x17cd,  0x17ce,
    +      0x17cf,  0x17d0,  0x17d1,  0x17d2,  0x17d3,  0x17dd,  0x180b,  0x180c,
    +      0x180d,  0x1885,  0x1886,  0x18a9,  0x1920,  0x1921,  0x1922,  0x1923,
    +      0x1924,  0x1925,  0x1926,  0x1927,  0x1928,  0x1929,  0x192a,  0x192b,
    +      0x1930,  0x1931,  0x1932,  0x1933,  0x1934,  0x1935,  0x1936,  0x1937,
    +      0x1938,  0x1939,  0x193a,  0x193b,  0x1a17,  0x1a18,  0x1a19,  0x1a1a,
    +      0x1a1b,  0x1a55,  0x1a56,  0x1a57,  0x1a58,  0x1a59,  0x1a5a,  0x1a5b,
    +      0x1a5c,  0x1a5d,  0x1a5e,  0x1a60,  0x1a61,  0x1a62,  0x1a63,  0x1a64,
    +      0x1a65,  0x1a66,  0x1a67,  0x1a68,  0x1a69,  0x1a6a,  0x1a6b,  0x1a6c,
    +      0x1a6d,  0x1a6e,  0x1a6f,  0x1a70,  0x1a71,  0x1a72,  0x1a73,  0x1a74,
    +      0x1a75,  0x1a76,  0x1a77,  0x1a78,  0x1a79,  0x1a7a,  0x1a7b,  0x1a7c,
    +      0x1a7f,  0x1ab0,  0x1ab1,  0x1ab2,  0x1ab3,  0x1ab4,  0x1ab5,  0x1ab6,
    +      0x1ab7,  0x1ab8,  0x1ab9,  0x1aba,  0x1abb,  0x1abc,  0x1abd,  0x1abe,
    +      0x1abf,  0x1ac0,  0x1b00,  0x1b01,  0x1b02,  0x1b03,  0x1b04,  0x1b34,
    +      0x1b35,  0x1b36,  0x1b37,  0x1b38,  0x1b39,  0x1b3a,  0x1b3b,  0x1b3c,
    +      0x1b3d,  0x1b3e,  0x1b3f,  0x1b40,  0x1b41,  0x1b42,  0x1b43,  0x1b44,
    +      0x1b6b,  0x1b6c,  0x1b6d,  0x1b6e,  0x1b6f,  0x1b70,  0x1b71,  0x1b72,
    +      0x1b73,  0x1b80,  0x1b81,  0x1b82,  0x1ba1,  0x1ba2,  0x1ba3,  0x1ba4,
    +      0x1ba5,  0x1ba6,  0x1ba7,  0x1ba8,  0x1ba9,  0x1baa,  0x1bab,  0x1bac,
    +      0x1bad,  0x1be6,  0x1be7,  0x1be8,  0x1be9,  0x1bea,  0x1beb,  0x1bec,
    +      0x1bed,  0x1bee,  0x1bef,  0x1bf0,  0x1bf1,  0x1bf2,  0x1bf3,  0x1c24,
    +      0x1c25,  0x1c26,  0x1c27,  0x1c28,  0x1c29,  0x1c2a,  0x1c2b,  0x1c2c,
    +      0x1c2d,  0x1c2e,  0x1c2f,  0x1c30,  0x1c31,  0x1c32,  0x1c33,  0x1c34,
    +      0x1c35,  0x1c36,  0x1c37,  0x1cd0,  0x1cd1,  0x1cd2,  0x1cd4,  0x1cd5,
    +      0x1cd6,  0x1cd7,  0x1cd8,  0x1cd9,  0x1cda,  0x1cdb,  0x1cdc,  0x1cdd,
    +      0x1cde,  0x1cdf,  0x1ce0,  0x1ce1,  0x1ce2,  0x1ce3,  0x1ce4,  0x1ce5,
    +      0x1ce6,  0x1ce7,  0x1ce8,  0x1ced,  0x1cf4,  0x1cf7,  0x1cf8,  0x1cf9,
    +      0x1dc0,  0x1dc1,  0x1dc2,  0x1dc3,  0x1dc4,  0x1dc5,  0x1dc6,  0x1dc7,
    +      0x1dc8,  0x1dc9,  0x1dca,  0x1dcb,  0x1dcc,  0x1dcd,  0x1dce,  0x1dcf,
    +      0x1dd0,  0x1dd1,  0x1dd2,  0x1dd3,  0x1dd4,  0x1dd5,  0x1dd6,  0x1dd7,
    +      0x1dd8,  0x1dd9,  0x1dda,  0x1ddb,  0x1ddc,  0x1ddd,  0x1dde,  0x1ddf,
    +      0x1de0,  0x1de1,  0x1de2,  0x1de3,  0x1de4,  0x1de5,  0x1de6,  0x1de7,
    +      0x1de8,  0x1de9,  0x1dea,  0x1deb,  0x1dec,  0x1ded,  0x1dee,  0x1def,
    +      0x1df0,  0x1df1,  0x1df2,  0x1df3,  0x1df4,  0x1df5,  0x1df6,  0x1df7,
    +      0x1df8,  0x1df9,  0x1dfb,  0x1dfc,  0x1dfd,  0x1dfe,  0x1dff,  0x20d0,
    +      0x20d1,  0x20d2,  0x20d3,  0x20d4,  0x20d5,  0x20d6,  0x20d7,  0x20d8,
    +      0x20d9,  0x20da,  0x20db,  0x20dc,  0x20dd,  0x20de,  0x20df,  0x20e0,
    +      0x20e1,  0x20e2,  0x20e3,  0x20e4,  0x20e5,  0x20e6,  0x20e7,  0x20e8,
    +      0x20e9,  0x20ea,  0x20eb,  0x20ec,  0x20ed,  0x20ee,  0x20ef,  0x20f0,
    +      0x2cef,  0x2cf0,  0x2cf1,  0x2d7f,  0x2de0,  0x2de1,  0x2de2,  0x2de3,
    +      0x2de4,  0x2de5,  0x2de6,  0x2de7,  0x2de8,  0x2de9,  0x2dea,  0x2deb,
    +      0x2dec,  0x2ded,  0x2dee,  0x2def,  0x2df0,  0x2df1,  0x2df2,  0x2df3,
    +      0x2df4,  0x2df5,  0x2df6,  0x2df7,  0x2df8,  0x2df9,  0x2dfa,  0x2dfb,
    +      0x2dfc,  0x2dfd,  0x2dfe,  0x2dff,  0x302a,  0x302b,  0x302c,  0x302d,
    +      0x302e,  0x302f,  0x3099,  0x309a,  0xa66f,  0xa670,  0xa671,  0xa672,
    +      0xa674,  0xa675,  0xa676,  0xa677,  0xa678,  0xa679,  0xa67a,  0xa67b,
    +      0xa67c,  0xa67d,  0xa69e,  0xa69f,  0xa6f0,  0xa6f1,  0xa802,  0xa806,
    +      0xa80b,  0xa823,  0xa824,  0xa825,  0xa826,  0xa827,  0xa82c,  0xa880,
    +      0xa881,  0xa8b4,  0xa8b5,  0xa8b6,  0xa8b7,  0xa8b8,  0xa8b9,  0xa8ba,
    +      0xa8bb,  0xa8bc,  0xa8bd,  0xa8be,  0xa8bf,  0xa8c0,  0xa8c1,  0xa8c2,
    +      0xa8c3,  0xa8c4,  0xa8c5,  0xa8e0,  0xa8e1,  0xa8e2,  0xa8e3,  0xa8e4,
    +      0xa8e5,  0xa8e6,  0xa8e7,  0xa8e8,  0xa8e9,  0xa8ea,  0xa8eb,  0xa8ec,
    +      0xa8ed,  0xa8ee,  0xa8ef,  0xa8f0,  0xa8f1,  0xa8ff,  0xa926,  0xa927,
    +      0xa928,  0xa929,  0xa92a,  0xa92b,  0xa92c,  0xa92d,  0xa947,  0xa948,
    +      0xa949,  0xa94a,  0xa94b,  0xa94c,  0xa94d,  0xa94e,  0xa94f,  0xa950,
    +      0xa951,  0xa952,  0xa953,  0xa980,  0xa981,  0xa982,  0xa983,  0xa9b3,
    +      0xa9b4,  0xa9b5,  0xa9b6,  0xa9b7,  0xa9b8,  0xa9b9,  0xa9ba,  0xa9bb,
    +      0xa9bc,  0xa9bd,  0xa9be,  0xa9bf,  0xa9c0,  0xa9e5,  0xaa29,  0xaa2a,
    +      0xaa2b,  0xaa2c,  0xaa2d,  0xaa2e,  0xaa2f,  0xaa30,  0xaa31,  0xaa32,
    +      0xaa33,  0xaa34,  0xaa35,  0xaa36,  0xaa43,  0xaa4c,  0xaa4d,  0xaa7b,
    +      0xaa7c,  0xaa7d,  0xaab0,  0xaab2,  0xaab3,  0xaab4,  0xaab7,  0xaab8,
    +      0xaabe,  0xaabf,  0xaac1,  0xaaeb,  0xaaec,  0xaaed,  0xaaee,  0xaaef,
    +      0xaaf5,  0xaaf6,  0xabe3,  0xabe4,  0xabe5,  0xabe6,  0xabe7,  0xabe8,
    +      0xabe9,  0xabea,  0xabec,  0xabed,  0xfb1e,  0xfe00,  0xfe01,  0xfe02,
    +      0xfe03,  0xfe04,  0xfe05,  0xfe06,  0xfe07,  0xfe08,  0xfe09,  0xfe0a,
    +      0xfe0b,  0xfe0c,  0xfe0d,  0xfe0e,  0xfe0f,  0xfe20,  0xfe21,  0xfe22,
    +      0xfe23,  0xfe24,  0xfe25,  0xfe26,  0xfe27,  0xfe28,  0xfe29,  0xfe2a,
    +      0xfe2b,  0xfe2c,  0xfe2d,  0xfe2e,  0xfe2f,  0x101fd, 0x102e0, 0x10376,
    +      0x10377, 0x10378, 0x10379, 0x1037a, 0x10a01, 0x10a02, 0x10a03, 0x10a05,
    +      0x10a06, 0x10a0c, 0x10a0d, 0x10a0e, 0x10a0f, 0x10a38, 0x10a39, 0x10a3a,
    +      0x10a3f, 0x10ae5, 0x10ae6, 0x10d24, 0x10d25, 0x10d26, 0x10d27, 0x10eab,
    +      0x10eac, 0x10f46, 0x10f47, 0x10f48, 0x10f49, 0x10f4a, 0x10f4b, 0x10f4c,
    +      0x10f4d, 0x10f4e, 0x10f4f, 0x10f50, 0x11000, 0x11001, 0x11002, 0x11038,
    +      0x11039, 0x1103a, 0x1103b, 0x1103c, 0x1103d, 0x1103e, 0x1103f, 0x11040,
    +      0x11041, 0x11042, 0x11043, 0x11044, 0x11045, 0x11046, 0x1107f, 0x11080,
    +      0x11081, 0x11082, 0x110b0, 0x110b1, 0x110b2, 0x110b3, 0x110b4, 0x110b5,
    +      0x110b6, 0x110b7, 0x110b8, 0x110b9, 0x110ba, 0x11100, 0x11101, 0x11102,
    +      0x11127, 0x11128, 0x11129, 0x1112a, 0x1112b, 0x1112c, 0x1112d, 0x1112e,
    +      0x1112f, 0x11130, 0x11131, 0x11132, 0x11133, 0x11134, 0x11145, 0x11146,
    +      0x11173, 0x11180, 0x11181, 0x11182, 0x111b3, 0x111b4, 0x111b5, 0x111b6,
    +      0x111b7, 0x111b8, 0x111b9, 0x111ba, 0x111bb, 0x111bc, 0x111bd, 0x111be,
    +      0x111bf, 0x111c0, 0x111c9, 0x111ca, 0x111cb, 0x111cc, 0x111ce, 0x111cf,
    +      0x1122c, 0x1122d, 0x1122e, 0x1122f, 0x11230, 0x11231, 0x11232, 0x11233,
    +      0x11234, 0x11235, 0x11236, 0x11237, 0x1123e, 0x112df, 0x112e0, 0x112e1,
    +      0x112e2, 0x112e3, 0x112e4, 0x112e5, 0x112e6, 0x112e7, 0x112e8, 0x112e9,
    +      0x112ea, 0x11300, 0x11301, 0x11302, 0x11303, 0x1133b, 0x1133c, 0x1133e,
    +      0x1133f, 0x11340, 0x11341, 0x11342, 0x11343, 0x11344, 0x11347, 0x11348,
    +      0x1134b, 0x1134c, 0x1134d, 0x11357, 0x11362, 0x11363, 0x11366, 0x11367,
    +      0x11368, 0x11369, 0x1136a, 0x1136b, 0x1136c, 0x11370, 0x11371, 0x11372,
    +      0x11373, 0x11374, 0x11435, 0x11436, 0x11437, 0x11438, 0x11439, 0x1143a,
    +      0x1143b, 0x1143c, 0x1143d, 0x1143e, 0x1143f, 0x11440, 0x11441, 0x11442,
    +      0x11443, 0x11444, 0x11445, 0x11446, 0x1145e, 0x114b0, 0x114b1, 0x114b2,
    +      0x114b3, 0x114b4, 0x114b5, 0x114b6, 0x114b7, 0x114b8, 0x114b9, 0x114ba,
    +      0x114bb, 0x114bc, 0x114bd, 0x114be, 0x114bf, 0x114c0, 0x114c1, 0x114c2,
    +      0x114c3, 0x115af, 0x115b0, 0x115b1, 0x115b2, 0x115b3, 0x115b4, 0x115b5,
    +      0x115b8, 0x115b9, 0x115ba, 0x115bb, 0x115bc, 0x115bd, 0x115be, 0x115bf,
    +      0x115c0, 0x115dc, 0x115dd, 0x11630, 0x11631, 0x11632, 0x11633, 0x11634,
    +      0x11635, 0x11636, 0x11637, 0x11638, 0x11639, 0x1163a, 0x1163b, 0x1163c,
    +      0x1163d, 0x1163e, 0x1163f, 0x11640, 0x116ab, 0x116ac, 0x116ad, 0x116ae,
    +      0x116af, 0x116b0, 0x116b1, 0x116b2, 0x116b3, 0x116b4, 0x116b5, 0x116b6,
    +      0x116b7, 0x1171d, 0x1171e, 0x1171f, 0x11720, 0x11721, 0x11722, 0x11723,
    +      0x11724, 0x11725, 0x11726, 0x11727, 0x11728, 0x11729, 0x1172a, 0x1172b,
    +      0x1182c, 0x1182d, 0x1182e, 0x1182f, 0x11830, 0x11831, 0x11832, 0x11833,
    +      0x11834, 0x11835, 0x11836, 0x11837, 0x11838, 0x11839, 0x1183a, 0x11930,
    +      0x11931, 0x11932, 0x11933, 0x11934, 0x11935, 0x11937, 0x11938, 0x1193b,
    +      0x1193c, 0x1193d, 0x1193e, 0x11940, 0x11942, 0x11943, 0x119d1, 0x119d2,
    +      0x119d3, 0x119d4, 0x119d5, 0x119d6, 0x119d7, 0x119da, 0x119db, 0x119dc,
    +      0x119dd, 0x119de, 0x119df, 0x119e0, 0x119e4, 0x11a01, 0x11a02, 0x11a03,
    +      0x11a04, 0x11a05, 0x11a06, 0x11a07, 0x11a08, 0x11a09, 0x11a0a, 0x11a33,
    +      0x11a34, 0x11a35, 0x11a36, 0x11a37, 0x11a38, 0x11a39, 0x11a3b, 0x11a3c,
    +      0x11a3d, 0x11a3e, 0x11a47, 0x11a51, 0x11a52, 0x11a53, 0x11a54, 0x11a55,
    +      0x11a56, 0x11a57, 0x11a58, 0x11a59, 0x11a5a, 0x11a5b, 0x11a8a, 0x11a8b,
    +      0x11a8c, 0x11a8d, 0x11a8e, 0x11a8f, 0x11a90, 0x11a91, 0x11a92, 0x11a93,
    +      0x11a94, 0x11a95, 0x11a96, 0x11a97, 0x11a98, 0x11a99, 0x11c2f, 0x11c30,
    +      0x11c31, 0x11c32, 0x11c33, 0x11c34, 0x11c35, 0x11c36, 0x11c38, 0x11c39,
    +      0x11c3a, 0x11c3b, 0x11c3c, 0x11c3d, 0x11c3e, 0x11c3f, 0x11c92, 0x11c93,
    +      0x11c94, 0x11c95, 0x11c96, 0x11c97, 0x11c98, 0x11c99, 0x11c9a, 0x11c9b,
    +      0x11c9c, 0x11c9d, 0x11c9e, 0x11c9f, 0x11ca0, 0x11ca1, 0x11ca2, 0x11ca3,
    +      0x11ca4, 0x11ca5, 0x11ca6, 0x11ca7, 0x11ca9, 0x11caa, 0x11cab, 0x11cac,
    +      0x11cad, 0x11cae, 0x11caf, 0x11cb0, 0x11cb1, 0x11cb2, 0x11cb3, 0x11cb4,
    +      0x11cb5, 0x11cb6, 0x11d31, 0x11d32, 0x11d33, 0x11d34, 0x11d35, 0x11d36,
    +      0x11d3a, 0x11d3c, 0x11d3d, 0x11d3f, 0x11d40, 0x11d41, 0x11d42, 0x11d43,
    +      0x11d44, 0x11d45, 0x11d47, 0x11d8a, 0x11d8b, 0x11d8c, 0x11d8d, 0x11d8e,
    +      0x11d90, 0x11d91, 0x11d93, 0x11d94, 0x11d95, 0x11d96, 0x11d97, 0x11ef3,
    +      0x11ef4, 0x11ef5, 0x11ef6, 0x16af0, 0x16af1, 0x16af2, 0x16af3, 0x16af4,
    +      0x16b30, 0x16b31, 0x16b32, 0x16b33, 0x16b34, 0x16b35, 0x16b36, 0x16f4f,
    +      0x16f51, 0x16f52, 0x16f53, 0x16f54, 0x16f55, 0x16f56, 0x16f57, 0x16f58,
    +      0x16f59, 0x16f5a, 0x16f5b, 0x16f5c, 0x16f5d, 0x16f5e, 0x16f5f, 0x16f60,
    +      0x16f61, 0x16f62, 0x16f63, 0x16f64, 0x16f65, 0x16f66, 0x16f67, 0x16f68,
    +      0x16f69, 0x16f6a, 0x16f6b, 0x16f6c, 0x16f6d, 0x16f6e, 0x16f6f, 0x16f70,
    +      0x16f71, 0x16f72, 0x16f73, 0x16f74, 0x16f75, 0x16f76, 0x16f77, 0x16f78,
    +      0x16f79, 0x16f7a, 0x16f7b, 0x16f7c, 0x16f7d, 0x16f7e, 0x16f7f, 0x16f80,
    +      0x16f81, 0x16f82, 0x16f83, 0x16f84, 0x16f85, 0x16f86, 0x16f87, 0x16f8f,
    +      0x16f90, 0x16f91, 0x16f92, 0x16fe4, 0x16ff0, 0x16ff1, 0x1bc9d, 0x1bc9e,
    +      0x1d165, 0x1d166, 0x1d167, 0x1d168, 0x1d169, 0x1d16d, 0x1d16e, 0x1d16f,
    +      0x1d170, 0x1d171, 0x1d172, 0x1d17b, 0x1d17c, 0x1d17d, 0x1d17e, 0x1d17f,
    +      0x1d180, 0x1d181, 0x1d182, 0x1d185, 0x1d186, 0x1d187, 0x1d188, 0x1d189,
    +      0x1d18a, 0x1d18b, 0x1d1aa, 0x1d1ab, 0x1d1ac, 0x1d1ad, 0x1d242, 0x1d243,
    +      0x1d244, 0x1da00, 0x1da01, 0x1da02, 0x1da03, 0x1da04, 0x1da05, 0x1da06,
    +      0x1da07, 0x1da08, 0x1da09, 0x1da0a, 0x1da0b, 0x1da0c, 0x1da0d, 0x1da0e,
    +      0x1da0f, 0x1da10, 0x1da11, 0x1da12, 0x1da13, 0x1da14, 0x1da15, 0x1da16,
    +      0x1da17, 0x1da18, 0x1da19, 0x1da1a, 0x1da1b, 0x1da1c, 0x1da1d, 0x1da1e,
    +      0x1da1f, 0x1da20, 0x1da21, 0x1da22, 0x1da23, 0x1da24, 0x1da25, 0x1da26,
    +      0x1da27, 0x1da28, 0x1da29, 0x1da2a, 0x1da2b, 0x1da2c, 0x1da2d, 0x1da2e,
    +      0x1da2f, 0x1da30, 0x1da31, 0x1da32, 0x1da33, 0x1da34, 0x1da35, 0x1da36,
    +      0x1da3b, 0x1da3c, 0x1da3d, 0x1da3e, 0x1da3f, 0x1da40, 0x1da41, 0x1da42,
    +      0x1da43, 0x1da44, 0x1da45, 0x1da46, 0x1da47, 0x1da48, 0x1da49, 0x1da4a,
    +      0x1da4b, 0x1da4c, 0x1da4d, 0x1da4e, 0x1da4f, 0x1da50, 0x1da51, 0x1da52,
    +      0x1da53, 0x1da54, 0x1da55, 0x1da56, 0x1da57, 0x1da58, 0x1da59, 0x1da5a,
    +      0x1da5b, 0x1da5c, 0x1da5d, 0x1da5e, 0x1da5f, 0x1da60, 0x1da61, 0x1da62,
    +      0x1da63, 0x1da64, 0x1da65, 0x1da66, 0x1da67, 0x1da68, 0x1da69, 0x1da6a,
    +      0x1da6b, 0x1da6c, 0x1da75, 0x1da84, 0x1da9b, 0x1da9c, 0x1da9d, 0x1da9e,
    +      0x1da9f, 0x1daa1, 0x1daa2, 0x1daa3, 0x1daa4, 0x1daa5, 0x1daa6, 0x1daa7,
    +      0x1daa8, 0x1daa9, 0x1daaa, 0x1daab, 0x1daac, 0x1daad, 0x1daae, 0x1daaf,
    +      0x1e000, 0x1e001, 0x1e002, 0x1e003, 0x1e004, 0x1e005, 0x1e006, 0x1e008,
    +      0x1e009, 0x1e00a, 0x1e00b, 0x1e00c, 0x1e00d, 0x1e00e, 0x1e00f, 0x1e010,
    +      0x1e011, 0x1e012, 0x1e013, 0x1e014, 0x1e015, 0x1e016, 0x1e017, 0x1e018,
    +      0x1e01b, 0x1e01c, 0x1e01d, 0x1e01e, 0x1e01f, 0x1e020, 0x1e021, 0x1e023,
    +      0x1e024, 0x1e026, 0x1e027, 0x1e028, 0x1e029, 0x1e02a, 0x1e130, 0x1e131,
    +      0x1e132, 0x1e133, 0x1e134, 0x1e135, 0x1e136, 0x1e2ec, 0x1e2ed, 0x1e2ee,
    +      0x1e2ef, 0x1e8d0, 0x1e8d1, 0x1e8d2, 0x1e8d3, 0x1e8d4, 0x1e8d5, 0x1e8d6,
    +      0x1e944, 0x1e945, 0x1e946, 0x1e947, 0x1e948, 0x1e949, 0x1e94a, 0xe0100,
    +      0xe0101, 0xe0102, 0xe0103, 0xe0104, 0xe0105, 0xe0106, 0xe0107, 0xe0108,
    +      0xe0109, 0xe010a, 0xe010b, 0xe010c, 0xe010d, 0xe010e, 0xe010f, 0xe0110,
    +      0xe0111, 0xe0112, 0xe0113, 0xe0114, 0xe0115, 0xe0116, 0xe0117, 0xe0118,
    +      0xe0119, 0xe011a, 0xe011b, 0xe011c, 0xe011d, 0xe011e, 0xe011f, 0xe0120,
    +      0xe0121, 0xe0122, 0xe0123, 0xe0124, 0xe0125, 0xe0126, 0xe0127, 0xe0128,
    +      0xe0129, 0xe012a, 0xe012b, 0xe012c, 0xe012d, 0xe012e, 0xe012f, 0xe0130,
    +      0xe0131, 0xe0132, 0xe0133, 0xe0134, 0xe0135, 0xe0136, 0xe0137, 0xe0138,
    +      0xe0139, 0xe013a, 0xe013b, 0xe013c, 0xe013d, 0xe013e, 0xe013f, 0xe0140,
    +      0xe0141, 0xe0142, 0xe0143, 0xe0144, 0xe0145, 0xe0146, 0xe0147, 0xe0148,
    +      0xe0149, 0xe014a, 0xe014b, 0xe014c, 0xe014d, 0xe014e, 0xe014f, 0xe0150,
    +      0xe0151, 0xe0152, 0xe0153, 0xe0154, 0xe0155, 0xe0156, 0xe0157, 0xe0158,
    +      0xe0159, 0xe015a, 0xe015b, 0xe015c, 0xe015d, 0xe015e, 0xe015f, 0xe0160,
    +      0xe0161, 0xe0162, 0xe0163, 0xe0164, 0xe0165, 0xe0166, 0xe0167, 0xe0168,
    +      0xe0169, 0xe016a, 0xe016b, 0xe016c, 0xe016d, 0xe016e, 0xe016f, 0xe0170,
    +      0xe0171, 0xe0172, 0xe0173, 0xe0174, 0xe0175, 0xe0176, 0xe0177, 0xe0178,
    +      0xe0179, 0xe017a, 0xe017b, 0xe017c, 0xe017d, 0xe017e, 0xe017f, 0xe0180,
    +      0xe0181, 0xe0182, 0xe0183, 0xe0184, 0xe0185, 0xe0186, 0xe0187, 0xe0188,
    +      0xe0189, 0xe018a, 0xe018b, 0xe018c, 0xe018d, 0xe018e, 0xe018f, 0xe0190,
    +      0xe0191, 0xe0192, 0xe0193, 0xe0194, 0xe0195, 0xe0196, 0xe0197, 0xe0198,
    +      0xe0199, 0xe019a, 0xe019b, 0xe019c, 0xe019d, 0xe019e, 0xe019f, 0xe01a0,
    +      0xe01a1, 0xe01a2, 0xe01a3, 0xe01a4, 0xe01a5, 0xe01a6, 0xe01a7, 0xe01a8,
    +      0xe01a9, 0xe01aa, 0xe01ab, 0xe01ac, 0xe01ad, 0xe01ae, 0xe01af, 0xe01b0,
    +      0xe01b1, 0xe01b2, 0xe01b3, 0xe01b4, 0xe01b5, 0xe01b6, 0xe01b7, 0xe01b8,
    +      0xe01b9, 0xe01ba, 0xe01bb, 0xe01bc, 0xe01bd, 0xe01be, 0xe01bf, 0xe01c0,
    +      0xe01c1, 0xe01c2, 0xe01c3, 0xe01c4, 0xe01c5, 0xe01c6, 0xe01c7, 0xe01c8,
    +      0xe01c9, 0xe01ca, 0xe01cb, 0xe01cc, 0xe01cd, 0xe01ce, 0xe01cf, 0xe01d0,
    +      0xe01d1, 0xe01d2, 0xe01d3, 0xe01d4, 0xe01d5, 0xe01d6, 0xe01d7, 0xe01d8,
    +      0xe01d9, 0xe01da, 0xe01db, 0xe01dc, 0xe01dd, 0xe01de, 0xe01df, 0xe01e0,
    +      0xe01e1, 0xe01e2, 0xe01e3, 0xe01e4, 0xe01e5, 0xe01e6, 0xe01e7, 0xe01e8,
    +      0xe01e9, 0xe01ea, 0xe01eb, 0xe01ec, 0xe01ed, 0xe01ee, 0xe01ef};
    +  if (std::binary_search(std::begin(combining), std::end(combining),
    +                         label.front())) {
    +    return false;
    +  }
    +  // We verify this next step as part of the mapping:
    +  // ---------------------------------------------
    +  // Each code point in the label must only have certain status values
    +  // according to Section 5, IDNA Mapping Table:
    +  // - For Transitional Processing, each value must be valid.
    +  // - For Nontransitional Processing, each value must be either valid or
    +  // deviation.
    +
    +  // If CheckJoiners, the label must satisify the ContextJ rules from Appendix
    +  // A, in The Unicode Code Points and Internationalized Domain Names for
    +  // Applications (IDNA) [IDNA2008].
    +  constexpr static uint32_t virama[] = {
    +      0x094D,  0x09CD,  0x0A4D,  0x0ACD,  0x0B4D,  0x0BCD,  0x0C4D,  0x0CCD,
    +      0x0D3B,  0x0D3C,  0x0D4D,  0x0DCA,  0x0E3A,  0x0EBA,  0x0F84,  0x1039,
    +      0x103A,  0x1714,  0x1734,  0x17D2,  0x1A60,  0x1B44,  0x1BAA,  0x1BAB,
    +      0x1BF2,  0x1BF3,  0x2D7F,  0xA806,  0xA82C,  0xA8C4,  0xA953,  0xA9C0,
    +      0xAAF6,  0xABED,  0x10A3F, 0x11046, 0x1107F, 0x110B9, 0x11133, 0x11134,
    +      0x111C0, 0x11235, 0x112EA, 0x1134D, 0x11442, 0x114C2, 0x115BF, 0x1163F,
    +      0x116B6, 0x1172B, 0x11839, 0x1193D, 0x1193E, 0x119E0, 0x11A34, 0x11A47,
    +      0x11A99, 0x11C3F, 0x11D44, 0x11D45, 0x11D97};
    +  constexpr static uint32_t R[] = {
    +      0x622, 0x623, 0x624, 0x625, 0x627, 0x629, 0x62f, 0x630, 0x631,
    +      0x632, 0x648, 0x671, 0x672, 0x673, 0x675, 0x676, 0x677, 0x688,
    +      0x689, 0x68a, 0x68b, 0x68c, 0x68d, 0x68e, 0x68f, 0x690, 0x691,
    +      0x692, 0x693, 0x694, 0x695, 0x696, 0x697, 0x698, 0x699, 0x6c0,
    +      0x6c3, 0x6c4, 0x6c5, 0x6c6, 0x6c7, 0x6c8, 0x6c9, 0x6ca, 0x6cb,
    +      0x6cd, 0x6cf, 0x6d2, 0x6d3, 0x6d5, 0x6ee, 0x6ef, 0x710, 0x715,
    +      0x716, 0x717, 0x718, 0x719, 0x71e, 0x728, 0x72a, 0x72c, 0x72f,
    +      0x74d, 0x759, 0x75a, 0x75b, 0x854, 0x8aa, 0x8ab, 0x8ac};
    +  constexpr static uint32_t L[] = {0xa872};
    +  constexpr static uint32_t D[] = {
    +      0x620,  0x626,  0x628,  0x62a,  0x62b,  0x62c,  0x62d,  0x62e,  0x633,
    +      0x634,  0x635,  0x636,  0x637,  0x638,  0x639,  0x63a,  0x63b,  0x63c,
    +      0x63d,  0x63e,  0x63f,  0x641,  0x642,  0x643,  0x644,  0x645,  0x646,
    +      0x647,  0x649,  0x64a,  0x66e,  0x66f,  0x678,  0x679,  0x67a,  0x67b,
    +      0x67c,  0x67d,  0x67e,  0x67f,  0x680,  0x681,  0x682,  0x683,  0x684,
    +      0x685,  0x686,  0x687,  0x69a,  0x69b,  0x69c,  0x69d,  0x69e,  0x69f,
    +      0x6a0,  0x6a1,  0x6a2,  0x6a3,  0x6a4,  0x6a5,  0x6a6,  0x6a7,  0x6a8,
    +      0x6a9,  0x6aa,  0x6ab,  0x6ac,  0x6ad,  0x6ae,  0x6af,  0x6b0,  0x6b1,
    +      0x6b2,  0x6b3,  0x6b4,  0x6b5,  0x6b6,  0x6b7,  0x6b8,  0x6b9,  0x6ba,
    +      0x6bb,  0x6bc,  0x6bd,  0x6be,  0x6bf,  0x6c1,  0x6c2,  0x6cc,  0x6ce,
    +      0x6d0,  0x6d1,  0x6fa,  0x6fb,  0x6fc,  0x6ff,  0x712,  0x713,  0x714,
    +      0x71a,  0x71b,  0x71c,  0x71d,  0x71f,  0x720,  0x721,  0x722,  0x723,
    +      0x724,  0x725,  0x726,  0x727,  0x729,  0x72b,  0x72d,  0x72e,  0x74e,
    +      0x74f,  0x750,  0x751,  0x752,  0x753,  0x754,  0x755,  0x756,  0x757,
    +      0x758,  0x75c,  0x75d,  0x75e,  0x75f,  0x760,  0x761,  0x762,  0x763,
    +      0x764,  0x765,  0x766,  0x850,  0x851,  0x852,  0x853,  0x855,  0x8a0,
    +      0x8a2,  0x8a3,  0x8a4,  0x8a5,  0x8a6,  0x8a7,  0x8a8,  0x8a9,  0x1807,
    +      0x1820, 0x1821, 0x1822, 0x1823, 0x1824, 0x1825, 0x1826, 0x1827, 0x1828,
    +      0x1829, 0x182a, 0x182b, 0x182c, 0x182d, 0x182e, 0x182f, 0x1830, 0x1831,
    +      0x1832, 0x1833, 0x1834, 0x1835, 0x1836, 0x1837, 0x1838, 0x1839, 0x183a,
    +      0x183b, 0x183c, 0x183d, 0x183e, 0x183f, 0x1840, 0x1841, 0x1842, 0x1843,
    +      0x1844, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849, 0x184a, 0x184b, 0x184c,
    +      0x184d, 0x184e, 0x184f, 0x1850, 0x1851, 0x1852, 0x1853, 0x1854, 0x1855,
    +      0x1856, 0x1857, 0x1858, 0x1859, 0x185a, 0x185b, 0x185c, 0x185d, 0x185e,
    +      0x185f, 0x1860, 0x1861, 0x1862, 0x1863, 0x1864, 0x1865, 0x1866, 0x1867,
    +      0x1868, 0x1869, 0x186a, 0x186b, 0x186c, 0x186d, 0x186e, 0x186f, 0x1870,
    +      0x1871, 0x1872, 0x1873, 0x1874, 0x1875, 0x1876, 0x1877, 0x1887, 0x1888,
    +      0x1889, 0x188a, 0x188b, 0x188c, 0x188d, 0x188e, 0x188f, 0x1890, 0x1891,
    +      0x1892, 0x1893, 0x1894, 0x1895, 0x1896, 0x1897, 0x1898, 0x1899, 0x189a,
    +      0x189b, 0x189c, 0x189d, 0x189e, 0x189f, 0x18a0, 0x18a1, 0x18a2, 0x18a3,
    +      0x18a4, 0x18a5, 0x18a6, 0x18a7, 0x18a8, 0x18aa, 0xa840, 0xa841, 0xa842,
    +      0xa843, 0xa844, 0xa845, 0xa846, 0xa847, 0xa848, 0xa849, 0xa84a, 0xa84b,
    +      0xa84c, 0xa84d, 0xa84e, 0xa84f, 0xa850, 0xa851, 0xa852, 0xa853, 0xa854,
    +      0xa855, 0xa856, 0xa857, 0xa858, 0xa859, 0xa85a, 0xa85b, 0xa85c, 0xa85d,
    +      0xa85e, 0xa85f, 0xa860, 0xa861, 0xa862, 0xa863, 0xa864, 0xa865, 0xa866,
    +      0xa867, 0xa868, 0xa869, 0xa86a, 0xa86b, 0xa86c, 0xa86d, 0xa86e, 0xa86f,
    +      0xa870, 0xa871};
    +
    +  for (size_t i = 0; i < label.size(); i++) {
    +    uint32_t c = label[i];
    +    if (c == 0x200c) {
    +      if (i > 0) {
    +        if (std::binary_search(std::begin(virama), std::end(virama),
    +                               label[i - 1])) {
    +          return true;
    +        }
    +      }
    +      if ((i == 0) || (i + 1 >= label.size())) {
    +        return false;
    +      }
    +      // we go backward looking for L or D
    +      auto is_l_or_d = [](uint32_t code) {
    +        return std::binary_search(std::begin(L), std::end(L), code) ||
    +               std::binary_search(std::begin(D), std::end(D), code);
    +      };
    +      auto is_r_or_d = [](uint32_t code) {
    +        return std::binary_search(std::begin(R), std::end(R), code) ||
    +               std::binary_search(std::begin(D), std::end(D), code);
    +      };
    +      std::u32string_view before = label.substr(0, i);
    +      std::u32string_view after = label.substr(i + 1);
    +      return (std::find_if(before.begin(), before.end(), is_l_or_d) !=
    +              before.end()) &&
    +             (std::find_if(after.begin(), after.end(), is_r_or_d) !=
    +              after.end());
    +    } else if (c == 0x200d) {
    +      if (i > 0) {
    +        if (std::binary_search(std::begin(virama), std::end(virama),
    +                               label[i - 1])) {
    +          return true;
    +        }
    +      }
    +      return false;
    +    }
    +  }
     
    -          // While c is an ASCII digit:
    -          while (pointer != input.end() && checkers::is_digit(*pointer)) {
    -            // Let number be c interpreted as decimal number.
    -            int number = *pointer - '0';
    +  // If CheckBidi, and if the domain name is a  Bidi domain name, then the label
    +  // must satisfy all six of the numbered conditions in [IDNA2008] RFC 5893,
    +  // Section 2.
     
    -            // If ipv4Piece is null, then set ipv4Piece to number.
    -            if (!ipv4_piece.has_value()) {
    -              ipv4_piece = number;
    -            }
    -            // Otherwise, if ipv4Piece is 0, validation error, return failure.
    -            else if (ipv4_piece == 0) {
    -              ada_log("parse_ipv6 if ipv4Piece is 0, validation error");
    -              return is_valid = false;
    -            }
    -            // Otherwise, set ipv4Piece to ipv4Piece × 10 + number.
    -            else {
    -              ipv4_piece = *ipv4_piece * 10 + number;
    -            }
    +  // The following rule, consisting of six conditions, applies to labels
    +  // in Bidi domain names.  The requirements that this rule satisfies are
    +  // described in Section 3.  All of the conditions must be satisfied for
    +  // the rule to be satisfied.
    +  //
    +  //  1.  The first character must be a character with Bidi property L, R,
    +  //     or AL.  If it has the R or AL property, it is an RTL label; if it
    +  //     has the L property, it is an LTR label.
    +  //
    +  //  2.  In an RTL label, only characters with the Bidi properties R, AL,
    +  //      AN, EN, ES, CS, ET, ON, BN, or NSM are allowed.
    +  //
    +  //   3.  In an RTL label, the end of the label must be a character with
    +  //       Bidi property R, AL, EN, or AN, followed by zero or more
    +  //       characters with Bidi property NSM.
    +  //
    +  //   4.  In an RTL label, if an EN is present, no AN may be present, and
    +  //       vice versa.
    +  //
    +  //  5.  In an LTR label, only characters with the Bidi properties L, EN,
    +  //       ES, CS, ET, ON, BN, or NSM are allowed.
    +  //
    +  //   6.  In an LTR label, the end of the label must be a character with
    +  //       Bidi property L or EN, followed by zero or more characters with
    +  //       Bidi property NSM.
     
    -            // If ipv4Piece is greater than 255, validation error, return failure.
    -            if (ipv4_piece > 255) {
    -              ada_log("parse_ipv6 ipv4_piece > 255");
    -              return is_valid = false;
    -            }
    +  size_t last_non_nsm_char = find_last_not_of_nsm(label);
    +  if (last_non_nsm_char == std::u32string_view::npos) {
    +    return false;
    +  }
     
    -            // Increase pointer by 1.
    -            pointer++;
    -          }
    +  // A "Bidi domain name" is a domain name that contains at least one RTL label.
    +  // The following rule, consisting of six conditions, applies to labels in Bidi
    +  // domain names.
    +  if (is_rtl_label(label)) {
    +    // The first character must be a character with Bidi property L, R,
    +    // or AL. If it has the R or AL property, it is an RTL label; if it
    +    // has the L property, it is an LTR label.
    +
    +    if (find_direction(label[0]) == direction::L) {
    +      // Eval as LTR
    +
    +      // In an LTR label, only characters with the Bidi properties L, EN,
    +      // ES, CS, ET, ON, BN, or NSM are allowed.
    +      for (size_t i = 0; i < last_non_nsm_char; i++) {
    +        const direction d = find_direction(label[i]);
    +        if (!(d == direction::L || d == direction::EN || d == direction::ES ||
    +              d == direction::CS || d == direction::ET || d == direction::ON ||
    +              d == direction::BN || d == direction::NSM)) {
    +          return false;
    +        }
    +
    +        if ((i == last_non_nsm_char) &&
    +            !(d == direction::L || d == direction::EN)) {
    +          return false;
    +        }
    +      }
     
    -          // Set address[pieceIndex] to address[pieceIndex] × 0x100 + ipv4Piece.
    -          // https://stackoverflow.com/questions/39060852/why-does-the-addition-of-two-shorts-return-an-int
    -          address[piece_index] = uint16_t(address[piece_index] * 0x100 + *ipv4_piece);
    +      return true;
     
    -          // Increase numbersSeen by 1.
    -          numbers_seen++;
    +    } else {
    +      // Eval as RTL
     
    -          // If numbersSeen is 2 or 4, then increase pieceIndex by 1.
    -          if (numbers_seen == 2 || numbers_seen == 4) {
    -            piece_index++;
    -          }
    -        }
    +      bool has_an = false;
    +      bool has_en = false;
    +      for (size_t i = 0; i <= last_non_nsm_char; i++) {
    +        const direction d = find_direction(label[i]);
     
    -        // If numbersSeen is not 4, validation error, return failure.
    -        if (numbers_seen != 4) {
    -          return is_valid = false;
    +        // In an RTL label, if an EN is present, no AN may be present, and vice
    +        // versa.
    +        if ((d == direction::EN && ((has_en = true) && has_an)) ||
    +            (d == direction::AN && ((has_an = true) && has_en))) {
    +          return false;
             }
     
    -        // Break.
    -        break;
    -      }
    -      // Otherwise, if c is U+003A (:):
    -      else if ((pointer != input.end()) && (*pointer == ':')) {
    -        // Increase pointer by 1.
    -        pointer++;
    +        if (!(d == direction::R || d == direction::AL || d == direction::AN ||
    +              d == direction::EN || d == direction::ES || d == direction::CS ||
    +              d == direction::ET || d == direction::ON || d == direction::BN ||
    +              d == direction::NSM)) {
    +          return false;
    +        }
     
    -        // If c is the EOF code point, validation error, return failure.
    -        if (pointer == input.end()) {
    -          ada_log("parse_ipv6 If c is the EOF code point, validation error, return failure");
    -          return is_valid = false;
    +        if (i == last_non_nsm_char &&
    +            !(d == direction::R || d == direction::AL || d == direction::AN ||
    +              d == direction::EN)) {
    +          return false;
             }
           }
    -      // Otherwise, if c is not the EOF code point, validation error, return failure.
    -      else if (pointer != input.end()) {
    -        ada_log("parse_ipv6 Otherwise, if c is not the EOF code point, validation error, return failure");
    -        return is_valid = false;
    -      }
     
    -      // Set address[pieceIndex] to value.
    -      address[piece_index] = value;
    -
    -      // Increase pieceIndex by 1.
    -      piece_index++;
    +      return true;
         }
    +  }
     
    -    // If compress is non-null, then:
    -    if (compress.has_value()) {
    -      // Let swaps be pieceIndex − compress.
    -      int swaps = piece_index - *compress;
    +  return true;
    +}
     
    -      // Set pieceIndex to 7.
    -      piece_index = 7;
    +}  // namespace ada::idna
    +/* end file src/validity.cpp */
    +/* begin file src/to_ascii.cpp */
     
    -      // While pieceIndex is not 0 and swaps is greater than 0,
    -      // swap address[pieceIndex] with address[compress + swaps − 1], and then decrease both pieceIndex and swaps by 1.
    -      while (piece_index != 0 && swaps > 0) {
    -        std::swap(address[piece_index], address[*compress + swaps - 1]);
    -        piece_index--;
    -        swaps--;
    -      }
    -    }
    -    // Otherwise, if compress is null and pieceIndex is not 8, validation error, return failure.
    -    else if (piece_index != 8) {
    -      ada_log("parse_ipv6 if compress is null and pieceIndex is not 8, validation error, return failure");
    -      return is_valid = false;
    -    }
    -    host = ada::serializers::ipv6(address);
    -    ada_log("parse_ipv6 ", *host);
    -    return true;
    -  }
    +#include 
    +#include 
     
    -  ada_really_inline bool url::parse_host(std::string_view input) {
    -    ada_log("parse_host ", input, "[", input.size(), " bytes]");
    -    if(input.empty()) { return is_valid = false; } // technically unnecessary.
    -    // If input starts with U+005B ([), then:
    -    if (input[0] == '[') {
    -      // If input does not end with U+005D (]), validation error, return failure.
    -      if (input.back() != ']') {
    -        return is_valid = false;
    -      }
    -      ada_log("parse_host ipv6");
     
    -      // Return the result of IPv6 parsing input with its leading U+005B ([) and trailing U+005D (]) removed.
    -      input.remove_prefix(1);
    -      input.remove_suffix(1);
    -      return parse_ipv6(input);
    -    }
    +namespace ada::idna {
     
    -    // If isNotSpecial is true, then return the result of opaque-host parsing input.
    -    if (!is_special()) {
    -      return parse_opaque_host(input);
    -    }
    -    // Let domain be the result of running UTF-8 decode without BOM on the percent-decoding of input.
    -    // Let asciiDomain be the result of running domain to ASCII with domain and false.
    -    // The most common case is an ASCII input, in which case we do not need to call the expensive 'to_ascii'
    -    // if a few conditions are met: no '%' and no 'xn-' subsequence.
    -    std::string buffer = std::string(input);
    -    // This next function checks that the result is ascii, but we are going to
    -    // to check anyhow with is_forbidden.
    -    // bool is_ascii =
    -    unicode::to_lower_ascii(buffer.data(), buffer.size());
    -    bool is_forbidden = unicode::contains_forbidden_domain_code_point(buffer.data(), buffer.size());
    -    if (is_forbidden == 0 && buffer.find("xn-") == std::string_view::npos) {
    -      // fast path
    -      host = std::move(buffer);
    -      if (checkers::is_ipv4(host.value())) {
    -        ada_log("parse_host fast path ipv4");
    -        return parse_ipv4(host.value());
    -      }
    -      ada_log("parse_host fast path ", *host);
    -      return true;
    -    }
    -    ada_log("parse_host calling to_ascii");
    -    is_valid = ada::unicode::to_ascii(host, input, false,  input.find('%'));
    -    if (!is_valid) {
    -      ada_log("parse_host to_ascii returns false");
    -      return is_valid = false;
    -    }
    +bool constexpr begins_with(std::u32string_view view,
    +                           std::u32string_view prefix) {
    +  if (view.size() < prefix.size()) {
    +    return false;
    +  }
    +  return view.substr(0, prefix.size()) == prefix;
    +}
     
    -    if(std::any_of(host.value().begin(), host.value().end(), ada::unicode::is_forbidden_domain_code_point)) {
    -      host = std::nullopt;
    -      return is_valid = false;
    -    }
    +bool constexpr begins_with(std::string_view view, std::string_view prefix) {
    +  if (view.size() < prefix.size()) {
    +    return false;
    +  }
    +  return view.substr(0, prefix.size()) == prefix;
    +}
     
    -    // If asciiDomain ends in a number, then return the result of IPv4 parsing asciiDomain.
    -    if(checkers::is_ipv4(host.value())) {
    -      ada_log("parse_host got ipv4", *host);
    -      return parse_ipv4(host.value());
    +bool constexpr is_ascii(std::u32string_view view) {
    +  for (uint32_t c : view) {
    +    if (c >= 0x80) {
    +      return false;
         }
    -
    -    return true;
       }
    +  return true;
    +}
     
    -  template 
    -  ada_really_inline bool url::parse_scheme(const std::string_view input) {
    -    auto parsed_type = ada::scheme::get_scheme_type(input);
    -    bool is_input_special = (parsed_type != ada::scheme::NOT_SPECIAL);
    -    /**
    -     * In the common case, we will immediately recognize a special scheme (e.g., http, https),
    -     * in which case, we can go really fast.
    -     **/
    -    if(is_input_special) { // fast path!!!
    -      if (has_state_override) {
    -        // If url’s scheme is not a special scheme and buffer is a special scheme, then return.
    -        if (is_special() != is_input_special) {
    -          return true;
    -        }
    +bool constexpr is_ascii(std::string_view view) {
    +  for (uint8_t c : view) {
    +    if (c >= 0x80) {
    +      return false;
    +    }
    +  }
    +  return true;
    +}
     
    -        // If url includes credentials or has a non-null port, and buffer is "file", then return.
    -        if ((includes_credentials() || port.has_value()) && parsed_type == ada::scheme::type::FILE) {
    -          return true;
    -        }
    +constexpr static uint8_t is_forbidden_domain_code_point_table[] = {
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
     
    -        // If url’s scheme is "file" and its host is an empty host, then return.
    -        // An empty host is the empty string.
    -        if (get_scheme_type() == ada::scheme::type::FILE && host.has_value() && host.value().empty()) {
    -          return true;
    -        }
    -      }
    +static_assert(sizeof(is_forbidden_domain_code_point_table) == 256);
     
    -      type = parsed_type;
    +inline constexpr bool is_forbidden_domain_code_point(const char c) noexcept {
    +  return is_forbidden_domain_code_point_table[uint8_t(c)];
    +}
     
    -      if (has_state_override) {
    -        // This is uncommon.
    -        uint16_t urls_scheme_port = get_special_port();
    +// We return "" on error. For now.
    +std::string from_ascii_to_ascii(std::string_view ut8_string) {
    +  static const std::string error = "";
    +  if (std::any_of(ut8_string.begin(), ut8_string.end(),
    +                  is_forbidden_domain_code_point)) {
    +    return error;
    +  }
     
    -        if (urls_scheme_port) {
    -          // If url’s port is url’s scheme’s default port, then set url’s port to null.
    -          if (port.has_value() && *port == urls_scheme_port) {
    -            port = std::nullopt;
    -          }
    -        }
    +  // copy and map
    +  // we could be more efficient by avoiding the copy when unnecessary.
    +  std::string mapped_string = std::string(ut8_string);
    +  ascii_map(mapped_string.data(), mapped_string.size());
    +  std::string out;
    +  size_t label_start = 0;
    +
    +  while (label_start != mapped_string.size()) {
    +    size_t loc_dot = mapped_string.find('.', label_start);
    +    bool is_last_label = (loc_dot == std::string_view::npos);
    +    size_t label_size = is_last_label ? mapped_string.size() - label_start
    +                                      : loc_dot - label_start;
    +    size_t label_size_with_dot = is_last_label ? label_size : label_size + 1;
    +    std::string_view label_view(mapped_string.data() + label_start, label_size);
    +    label_start += label_size_with_dot;
    +    if (label_size == 0) {
    +      // empty label? Nothing to do.
    +    } else if (begins_with(label_view, "xn--")) {
    +      // The xn-- part is the expensive game.
    +      out.append(label_view);
    +      std::string_view puny_segment_ascii(
    +          out.data() + out.size() - label_view.size() + 4,
    +          label_view.size() - 4);
    +      std::u32string tmp_buffer;
    +      bool is_ok = ada::idna::punycode_to_utf32(puny_segment_ascii, tmp_buffer);
    +      if (!is_ok) {
    +        return error;
    +      }
    +      std::u32string post_map = ada::idna::map(tmp_buffer);
    +      if (tmp_buffer != post_map) {
    +        return error;
           }
    -    } else { // slow path
    -      std::string _buffer = std::string(input);
    -      // Next function is only valid if the input is ASCII and returns false
    -      // otherwise, but it seems that we always have ascii content so we do not need
    -      // to check the return value.
    -      //bool is_ascii =
    -      unicode::to_lower_ascii(_buffer.data(), _buffer.size());
    +      std::u32string pre_normal = post_map;
    +      normalize(post_map);
    +      if (post_map != pre_normal) {
    +        return error;
    +      }
    +      if (post_map.empty()) {
    +        return error;
    +      }
    +      if (!is_label_valid(post_map)) {
    +        return error;
    +      }
    +    } else {
    +      out.append(label_view);
    +    }
    +    if (!is_last_label) {
    +      out.push_back('.');
    +    }
    +  }
    +  return out;
    +}
     
    -      if (has_state_override) {
    -        // If url’s scheme is a special scheme and buffer is not a special scheme, then return.
    -        // If url’s scheme is not a special scheme and buffer is a special scheme, then return.
    -        if (is_special() != ada::scheme::is_special(_buffer)) {
    -          return true;
    +// We return "" on error. For now.
    +std::string to_ascii(std::string_view ut8_string) {
    +  if (is_ascii(ut8_string)) {
    +    return from_ascii_to_ascii(ut8_string);
    +  }
    +  static const std::string error = "";
    +  // We convert to UTF-32
    +  size_t utf32_length =
    +      ada::idna::utf32_length_from_utf8(ut8_string.data(), ut8_string.size());
    +  std::u32string utf32(utf32_length, '\0');
    +  size_t actual_utf32_length = ada::idna::utf8_to_utf32(
    +      ut8_string.data(), ut8_string.size(), utf32.data());
    +  if (actual_utf32_length == 0) {
    +    return error;
    +  }
    +  // mapping
    +  utf32 = ada::idna::map(utf32);
    +  normalize(utf32);
    +  std::string out;
    +  size_t label_start = 0;
    +
    +  while (label_start != utf32.size()) {
    +    size_t loc_dot = utf32.find('.', label_start);
    +    bool is_last_label = (loc_dot == std::string_view::npos);
    +    size_t label_size =
    +        is_last_label ? utf32.size() - label_start : loc_dot - label_start;
    +    size_t label_size_with_dot = is_last_label ? label_size : label_size + 1;
    +    std::u32string_view label_view(utf32.data() + label_start, label_size);
    +    label_start += label_size_with_dot;
    +    if (label_size == 0) {
    +      // empty label? Nothing to do.
    +    } else if (begins_with(label_view, U"xn--")) {
    +      // we do not need to check, e.g., Xn-- because mapping goes to lower case
    +      for (char32_t c : label_view) {
    +        if (c >= 0x80) {
    +          return error;
             }
    -
    -        // If url includes credentials or has a non-null port, and buffer is "file", then return.
    -        if ((includes_credentials() || port.has_value()) && _buffer == "file") {
    -          return true;
    +        out += (unsigned char)(c);
    +      }
    +      std::string_view puny_segment_ascii(
    +          out.data() + out.size() - label_view.size() + 4,
    +          label_view.size() - 4);
    +      std::u32string tmp_buffer;
    +      bool is_ok = ada::idna::punycode_to_utf32(puny_segment_ascii, tmp_buffer);
    +      if (!is_ok) {
    +        return error;
    +      }
    +      std::u32string post_map = ada::idna::map(tmp_buffer);
    +      if (tmp_buffer != post_map) {
    +        return error;
    +      }
    +      std::u32string pre_normal = post_map;
    +      normalize(post_map);
    +      if (post_map != pre_normal) {
    +        return error;
    +      }
    +      if (post_map.empty()) {
    +        return error;
    +      }
    +      if (!is_label_valid(post_map)) {
    +        return error;
    +      }
    +    } else {
    +      // The fast path here is an ascii label.
    +      if (is_ascii(label_view)) {
    +        // no validation needed.
    +        for (char32_t c : label_view) {
    +          out += (unsigned char)(c);
             }
    -
    -        // If url’s scheme is "file" and its host is an empty host, then return.
    -        // An empty host is the empty string.
    -        if (get_scheme_type() == ada::scheme::type::FILE && host.has_value() && host.value().empty()) {
    -          return true;
    +      } else {
    +        // slow path.
    +        // first check validity.
    +        if (!is_label_valid(label_view)) {
    +          return error;
             }
    -      }
    -
    -      set_scheme(std::move(_buffer));
    -
    -      if (has_state_override) {
    -        // This is uncommon.
    -        uint16_t urls_scheme_port = get_special_port();
    -
    -        if (urls_scheme_port) {
    -          // If url’s port is url’s scheme’s default port, then set url’s port to null.
    -          if (port.has_value() && *port == urls_scheme_port) {
    -            port = std::nullopt;
    -          }
    +        // It is valid! So now we must encode it as punycode...
    +        out.append("xn--");
    +        bool is_ok = ada::idna::utf32_to_punycode(label_view, out);
    +        if (!is_ok) {
    +          return error;
             }
           }
         }
    -
    -    return true;
    -  }
    -
    -  std::string url::to_string() const {
    -    if (!is_valid) {
    -      return "null";
    -    }
    -    std::string answer;
    -    auto back = std::back_insert_iterator(answer);
    -    answer.append("{\n");
    -    answer.append("\t\"scheme\":\"");
    -    helpers::encode_json(get_scheme(), back);
    -    answer.append("\",\n");
    -    if(includes_credentials()) {
    -      answer.append("\t\"username\":\"");
    -      helpers::encode_json(username, back);
    -      answer.append("\",\n");
    -      answer.append("\t\"password\":\"");
    -      helpers::encode_json(password, back);
    -      answer.append("\",\n");
    -    }
    -    if(host.has_value()) {
    -      answer.append("\t\"host\":\"");
    -      helpers::encode_json(host.value(), back);
    -      answer.append("\",\n");
    -    }
    -    if(port.has_value()) {
    -      answer.append("\t\"port\":\"");
    -      answer.append(std::to_string(port.value()));
    -      answer.append("\",\n");
    -    }
    -    answer.append("\t\"path\":\"");
    -    helpers::encode_json(path, back);
    -    answer.append("\",\n");
    -    answer.append("\t\"opaque path\":");
    -    answer.append((has_opaque_path ? "true" : "false"));
    -    if(query.has_value()) {
    -      answer.append(",\n");
    -      answer.append("\t\"query\":\"");
    -      helpers::encode_json(query.value(), back);
    -      answer.append("\"");
    -    }
    -    if(fragment.has_value()) {
    -      answer.append(",\n");
    -      answer.append("\t\"fragment\":\"");
    -      helpers::encode_json(fragment.value(), back);
    -      answer.append("\"");
    +    if (!is_last_label) {
    +      out.push_back('.');
         }
    -    answer.append("\n}");
    -    return answer;
       }
     
    -  [[nodiscard]] bool url::has_valid_domain() const noexcept {
    -    if(!host.has_value()) { return false; }
    -    return checkers::verify_dns_length(host.value());
    +  if (std::any_of(out.begin(), out.end(), is_forbidden_domain_code_point)) {
    +    return error;
       }
    -} // namespace ada
    -/* end file src/url.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=url-getters.cpp
    -/* begin file src/url-getters.cpp */
    -/**
    - * @file url-getters.cpp
    - * Includes all the getters of `ada::url`
    - */
    +
    +  return out;
    +}
    +}  // namespace ada::idna
    +/* end file src/to_ascii.cpp */
    +/* begin file src/to_unicode.cpp */
     
     #include 
     #include 
     
    -namespace ada {
    -
    -  [[nodiscard]] std::string url::get_href() const noexcept {
    -    std::string output = get_protocol();
    -    size_t url_delimiter_count = std::count(path.begin(), path.end(), '/');
     
    -    if (host.has_value()) {
    -      output += "//";
    -      if (includes_credentials()) {
    -        output += get_username();
    -        if (!get_password().empty()) {
    -          output += ":" + get_password();
    +namespace ada::idna {
    +std::string to_unicode(std::string_view input) {
    +  std::string output;
    +  output.reserve(input.size());
    +
    +  size_t label_start = 0;
    +  while (label_start < input.size()) {
    +    size_t loc_dot = input.find('.', label_start);
    +    bool is_last_label = (loc_dot == std::string_view::npos);
    +    size_t label_size =
    +        is_last_label ? input.size() - label_start : loc_dot - label_start;
    +    auto label_view = std::string_view(input.data() + label_start, label_size);
    +
    +    if (ada::idna::begins_with(label_view, "xn--") &&
    +        ada::idna::is_ascii(label_view)) {
    +      label_view.remove_prefix(4);
    +      if (ada::idna::verify_punycode(label_view)) {
    +        std::u32string tmp_buffer;
    +        if (ada::idna::punycode_to_utf32(label_view, tmp_buffer)) {
    +          auto utf8_size = ada::idna::utf8_length_from_utf32(tmp_buffer.data(),
    +                                                             tmp_buffer.size());
    +          std::string final_utf8(utf8_size, '\0');
    +          ada::idna::utf32_to_utf8(tmp_buffer.data(), tmp_buffer.size(),
    +                                   final_utf8.data());
    +          output.append(final_utf8);
    +        } else {
    +          // ToUnicode never fails.  If any step fails, then the original input
    +          // sequence is returned immediately in that step.
    +          output.append(
    +              std::string_view(input.data() + label_start, label_size));
             }
    -        output += "@";
    +      } else {
    +        output.append(std::string_view(input.data() + label_start, label_size));
           }
    +    } else {
    +      output.append(label_view);
    +    }
     
    -      output += get_host();
    -    } else if (!has_opaque_path && url_delimiter_count > 1 && path.length() >= 2 && path[0] == '/' && path[1] == '/') {
    -      // If url’s host is null, url does not have an opaque path, url’s path’s size is greater than 1,
    -      // and url’s path[0] is the empty string, then append U+002F (/) followed by U+002E (.) to output.
    -      output += "/.";
    +    if (!is_last_label) {
    +      output.push_back('.');
         }
     
    -    output += get_pathname() 
    -           // If query is non-null, then set this’s query object’s list to the result of parsing query.
    -           + (query.has_value() ? "?" + query.value() : "")
    -           // If  url’s fragment is non-null, then append U+0023 (#), followed by url’s fragment, to output.
    -           + (fragment.has_value() ? "#" + fragment.value() : "");
    -    return output;
    +    label_start += label_size + 1;
       }
     
    -  [[nodiscard]] std::string url::get_origin() const noexcept {
    -    if (is_special()) {
    -      // Return a new opaque origin.
    -      if (get_scheme_type() == scheme::FILE) { return "null"; }
    -
    -      return get_protocol() + "//" + get_host();
    -    }
    +  return output;
    +}
    +}  // namespace ada::idna
    +/* end file src/to_unicode.cpp */
    +/* end file src/idna.cpp */
    +/* end file src/ada_idna.cpp */
    +ADA_POP_DISABLE_WARNINGS
     
    -    if (get_scheme() == "blob") {
    -      if (path.length() > 0) {
    -        url path_result = ada::parser::parse_url(get_pathname());
    -        if (path_result.is_valid) {
    -          if (path_result.is_special()) {
    -            return path_result.get_protocol() + "//" + path_result.get_host();
    -          }
    -        }
    -      }
    -    }
    +#include 
     
    -    // Return a new opaque origin.
    -    return "null";
    -  }
    +namespace ada::unicode {
     
    -  [[nodiscard]] std::string url::get_protocol() const noexcept {
    -    return std::string(get_scheme()) + ":";
    +constexpr bool to_lower_ascii(char* input, size_t length) noexcept {
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  uint64_t broadcast_80 = broadcast(0x80);
    +  uint64_t broadcast_Ap = broadcast(128 - 'A');
    +  uint64_t broadcast_Zp = broadcast(128 - 'Z');
    +  uint64_t non_ascii = 0;
    +  size_t i = 0;
    +
    +  for (; i + 7 < length; i += 8) {
    +    uint64_t word{};
    +    memcpy(&word, input + i, sizeof(word));
    +    non_ascii |= (word & broadcast_80);
    +    word ^=
    +        (((word + broadcast_Ap) ^ (word + broadcast_Zp)) & broadcast_80) >> 2;
    +    memcpy(input + i, &word, sizeof(word));
       }
    -
    -  [[nodiscard]] std::string url::get_host() const noexcept {
    -    // If url’s host is null, then return the empty string.
    -    // If url’s port is null, return url’s host, serialized.
    -    // Return url’s host, serialized, followed by U+003A (:) and url’s port, serialized.
    -    if (!host.has_value()) { return ""; }
    -    return host.value() + (port.has_value() ? ":" + get_port() : "");
    +  if (i < length) {
    +    uint64_t word{};
    +    memcpy(&word, input + i, length - i);
    +    non_ascii |= (word & broadcast_80);
    +    word ^=
    +        (((word + broadcast_Ap) ^ (word + broadcast_Zp)) & broadcast_80) >> 2;
    +    memcpy(input + i, &word, length - i);
       }
    +  return non_ascii == 0;
    +}
     
    -  [[nodiscard]] std::string url::get_hostname() const noexcept {
    -    return host.value_or("");
    +ada_really_inline constexpr bool has_tabs_or_newline(
    +    std::string_view user_input) noexcept {
    +  auto has_zero_byte = [](uint64_t v) {
    +    return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    +  };
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  size_t i = 0;
    +  uint64_t mask1 = broadcast('\r');
    +  uint64_t mask2 = broadcast('\n');
    +  uint64_t mask3 = broadcast('\t');
    +  uint64_t running{0};
    +  for (; i + 7 < user_input.size(); i += 8) {
    +    uint64_t word{};
    +    memcpy(&word, user_input.data() + i, sizeof(word));
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    running |= has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
       }
    -
    -  [[nodiscard]] std::string url::get_pathname() const noexcept {
    -    return path;
    +  if (i < user_input.size()) {
    +    uint64_t word{};
    +    memcpy(&word, user_input.data() + i, user_input.size() - i);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    running |= has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
       }
    +  return running;
    +}
     
    -  [[nodiscard]] std::string url::get_search() const noexcept {
    -    // If this’s URL’s query is either null or the empty string, then return the empty string.
    -    // Return U+003F (?), followed by this’s URL’s query.
    -    return (!query.has_value() || (query.value().empty())) ? "" : "?" + query.value();
    -  }
    +// A forbidden host code point is U+0000 NULL, U+0009 TAB, U+000A LF, U+000D CR,
    +// U+0020 SPACE, U+0023 (#), U+002F (/), U+003A (:), U+003C (<), U+003E (>),
    +// U+003F (?), U+0040 (@), U+005B ([), U+005C (\), U+005D (]), U+005E (^), or
    +// U+007C (|).
    +constexpr static bool is_forbidden_host_code_point_table[] = {
    +    1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
    +static_assert(sizeof(is_forbidden_host_code_point_table) == 256);
     
    -  [[nodiscard]] std::string url::get_username() const noexcept {
    -    return username;
    -  }
    +ada_really_inline constexpr bool is_forbidden_host_code_point(
    +    const char c) noexcept {
    +  return is_forbidden_host_code_point_table[uint8_t(c)];
    +}
     
    -  [[nodiscard]] std::string url::get_password() const noexcept {
    -    return password;
    -  }
    +static_assert(unicode::is_forbidden_host_code_point('\0'));
    +static_assert(unicode::is_forbidden_host_code_point('\t'));
    +static_assert(unicode::is_forbidden_host_code_point('\n'));
    +static_assert(unicode::is_forbidden_host_code_point('\r'));
    +static_assert(unicode::is_forbidden_host_code_point(' '));
    +static_assert(unicode::is_forbidden_host_code_point('#'));
    +static_assert(unicode::is_forbidden_host_code_point('/'));
    +static_assert(unicode::is_forbidden_host_code_point(':'));
    +static_assert(unicode::is_forbidden_host_code_point('?'));
    +static_assert(unicode::is_forbidden_host_code_point('@'));
    +static_assert(unicode::is_forbidden_host_code_point('['));
    +static_assert(unicode::is_forbidden_host_code_point('?'));
    +static_assert(unicode::is_forbidden_host_code_point('<'));
    +static_assert(unicode::is_forbidden_host_code_point('>'));
    +static_assert(unicode::is_forbidden_host_code_point('\\'));
    +static_assert(unicode::is_forbidden_host_code_point(']'));
    +static_assert(unicode::is_forbidden_host_code_point('^'));
    +static_assert(unicode::is_forbidden_host_code_point('|'));
     
    -  [[nodiscard]] std::string url::get_port() const noexcept {
    -    return port.has_value() ? std::to_string(port.value()) : "";
    -  }
    +constexpr static uint8_t is_forbidden_domain_code_point_table[] = {
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
    +
    +static_assert(sizeof(is_forbidden_domain_code_point_table) == 256);
     
    -  [[nodiscard]] std::string url::get_hash() const noexcept {
    -    // If this’s URL’s fragment is either null or the empty string, then return the empty string.
    -    // Return U+0023 (#), followed by this’s URL’s fragment.
    -    return (!fragment.has_value() || (fragment.value().empty())) ? "" : "#" + fragment.value();
    +ada_really_inline constexpr bool is_forbidden_domain_code_point(
    +    const char c) noexcept {
    +  return is_forbidden_domain_code_point_table[uint8_t(c)];
    +}
    +
    +ada_really_inline constexpr bool contains_forbidden_domain_code_point(
    +    char* input, size_t length) noexcept {
    +  size_t i = 0;
    +  uint8_t accumulator{};
    +  for (; i + 4 <= length; i += 4) {
    +    accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i])];
    +    accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i + 1])];
    +    accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i + 2])];
    +    accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i + 3])];
       }
    +  for (; i < length; i++) {
    +    accumulator |= is_forbidden_domain_code_point_table[uint8_t(input[i])];
    +  }
    +  return accumulator;
    +}
     
    -} // namespace ada
    -/* end file src/url-getters.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=url-setters.cpp
    -/* begin file src/url-setters.cpp */
    -/**
    - * @file url-setters.cpp
    - * Includes all the setters of `ada::url`
    - */
    +static_assert(unicode::is_forbidden_domain_code_point('%'));
    +static_assert(unicode::is_forbidden_domain_code_point('\x7f'));
    +static_assert(unicode::is_forbidden_domain_code_point('\0'));
    +static_assert(unicode::is_forbidden_domain_code_point('\t'));
    +static_assert(unicode::is_forbidden_domain_code_point('\n'));
    +static_assert(unicode::is_forbidden_domain_code_point('\r'));
    +static_assert(unicode::is_forbidden_domain_code_point(' '));
    +static_assert(unicode::is_forbidden_domain_code_point('#'));
    +static_assert(unicode::is_forbidden_domain_code_point('/'));
    +static_assert(unicode::is_forbidden_domain_code_point(':'));
    +static_assert(unicode::is_forbidden_domain_code_point('?'));
    +static_assert(unicode::is_forbidden_domain_code_point('@'));
    +static_assert(unicode::is_forbidden_domain_code_point('['));
    +static_assert(unicode::is_forbidden_domain_code_point('?'));
    +static_assert(unicode::is_forbidden_domain_code_point('<'));
    +static_assert(unicode::is_forbidden_domain_code_point('>'));
    +static_assert(unicode::is_forbidden_domain_code_point('\\'));
    +static_assert(unicode::is_forbidden_domain_code_point(']'));
    +static_assert(unicode::is_forbidden_domain_code_point('^'));
    +static_assert(unicode::is_forbidden_domain_code_point('|'));
    +
    +constexpr static bool is_alnum_plus_table[] = {
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,
    +    0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    +    1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    +    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
     
    -#include 
    -#include 
    +static_assert(sizeof(is_alnum_plus_table) == 256);
     
    -namespace ada {
    +ada_really_inline constexpr bool is_alnum_plus(const char c) noexcept {
    +  return is_alnum_plus_table[uint8_t(c)];
    +  // A table is almost surely much faster than the
    +  // following under most compilers: return
    +  // return (std::isalnum(c) || c == '+' || c == '-' || c == '.');
    +}
    +static_assert(unicode::is_alnum_plus('+'));
    +static_assert(unicode::is_alnum_plus('-'));
    +static_assert(unicode::is_alnum_plus('.'));
    +static_assert(unicode::is_alnum_plus('0'));
    +static_assert(unicode::is_alnum_plus('1'));
    +static_assert(unicode::is_alnum_plus('a'));
    +static_assert(unicode::is_alnum_plus('b'));
    +
    +ada_really_inline constexpr bool is_ascii_hex_digit(const char c) noexcept {
    +  return (c >= '0' && c <= '9') || (c >= 'A' && c <= 'F') ||
    +         (c >= 'a' && c <= 'f');
    +}
     
    -  bool url::set_username(const std::string_view input) {
    -    if (cannot_have_credentials_or_port()) { return false; }
    -    username = ada::unicode::percent_encode(input, character_sets::USERINFO_PERCENT_ENCODE);
    -    return true;
    -  }
    +ada_really_inline constexpr bool is_c0_control_or_space(const char c) noexcept {
    +  return (unsigned char)c <= ' ';
    +}
     
    -  bool url::set_password(const std::string_view input) {
    -    if (cannot_have_credentials_or_port()) { return false; }
    -    password = ada::unicode::percent_encode(input, character_sets::USERINFO_PERCENT_ENCODE);
    -    return true;
    -  }
    +ada_really_inline constexpr bool is_ascii_tab_or_newline(
    +    const char c) noexcept {
    +  return c == '\t' || c == '\n' || c == '\r';
    +}
     
    -  bool url::set_port(const std::string_view input) {
    -    if (cannot_have_credentials_or_port()) { return false; }
    -    std::string trimmed(input);
    -    helpers::remove_ascii_tab_or_newline(trimmed);
    -    if (trimmed.empty()) { port = std::nullopt; return true; }
    -    // Input should not start with control characters.
    -    if (ada::unicode::is_c0_control_or_space(trimmed.front())) { return false; }
    -    // Input should contain at least one ascii digit.
    -    if (input.find_first_of("0123456789") == std::string_view::npos) { return false; }
    -
    -    // Revert changes if parse_port fails.
    -    std::optional previous_port = port;
    -    parse_port(trimmed);
    -    if (is_valid) { return true; }
    -    port = previous_port;
    -    is_valid = true;
    +constexpr std::string_view table_is_double_dot_path_segment[] = {
    +    "..", "%2e.", ".%2e", "%2e%2e"};
    +
    +ada_really_inline ada_constexpr bool is_double_dot_path_segment(
    +    std::string_view input) noexcept {
    +  // This will catch most cases:
    +  // The length must be 2,4 or 6.
    +  // We divide by two and require
    +  // that the result be between 1 and 3 inclusively.
    +  uint64_t half_length = uint64_t(input.size()) / 2;
    +  if (half_length - 1 > 2) {
         return false;
       }
    -
    -  void url::set_hash(const std::string_view input) {
    -    if (input.empty()) {
    -      fragment = std::nullopt;
    -      helpers::strip_trailing_spaces_from_opaque_path(*this);
    -      return;
    +  // We have a string of length 2, 4 or 6.
    +  // We now check the first character:
    +  if ((input[0] != '.') && (input[0] != '%')) {
    +    return false;
    +  }
    +  // We are unlikely the get beyond this point.
    +  int hash_value = (input.size() + (unsigned)(input[0])) & 3;
    +  const std::string_view target = table_is_double_dot_path_segment[hash_value];
    +  if (target.size() != input.size()) {
    +    return false;
    +  }
    +  // We almost never get here.
    +  // Optimizing the rest is relatively unimportant.
    +  auto prefix_equal_unsafe = [](std::string_view a, std::string_view b) {
    +    uint16_t A, B;
    +    memcpy(&A, a.data(), sizeof(A));
    +    memcpy(&B, b.data(), sizeof(B));
    +    return A == B;
    +  };
    +  if (!prefix_equal_unsafe(input, target)) {
    +    return false;
    +  }
    +  for (size_t i = 2; i < input.size(); i++) {
    +    char c = input[i];
    +    if ((uint8_t((c | 0x20) - 0x61) <= 25 ? (c | 0x20) : c) != target[i]) {
    +      return false;
         }
    +  }
    +  return true;
    +  // The above code might be a bit better than the code below. Compilers
    +  // are not stupid and may use the fact that these strings have length 2,4 and
    +  // 6 and other tricks.
    +  // return input == ".." ||
    +  //  input == ".%2e" || input == ".%2E" ||
    +  //  input == "%2e." || input == "%2E." ||
    +  //  input == "%2e%2e" || input == "%2E%2E" || input == "%2E%2e" || input ==
    +  //  "%2e%2E";
    +}
     
    -    std::string new_value;
    -    new_value = input[0] == '#' ? input.substr(1) : input;
    -    helpers::remove_ascii_tab_or_newline(new_value);
    -    fragment = unicode::percent_encode(new_value, ada::character_sets::FRAGMENT_PERCENT_ENCODE);
    -    return;
    +ada_really_inline constexpr bool is_single_dot_path_segment(
    +    std::string_view input) noexcept {
    +  return input == "." || input == "%2e" || input == "%2E";
    +}
    +
    +ada_really_inline constexpr bool is_lowercase_hex(const char c) noexcept {
    +  return (c >= '0' && c <= '9') || (c >= 'a' && c <= 'f');
    +}
    +
    +unsigned constexpr convert_hex_to_binary(const char c) noexcept {
    +  // this code can be optimized.
    +  if (c <= '9') {
    +    return c - '0';
       }
    +  char del = c >= 'a' ? 'a' : 'A';
    +  return 10 + (c - del);
    +}
     
    -  void url::set_search(const std::string_view input) {
    -    if (input.empty()) {
    -      query = std::nullopt;
    -      helpers::strip_trailing_spaces_from_opaque_path(*this);
    -      return;
    +std::string percent_decode(const std::string_view input, size_t first_percent) {
    +  // next line is for safety only, we expect users to avoid calling
    +  // percent_decode when first_percent is outside the range.
    +  if (first_percent == std::string_view::npos) {
    +    return std::string(input);
    +  }
    +  std::string dest(input.substr(0, first_percent));
    +  dest.reserve(input.length());
    +  const char* pointer = input.data() + first_percent;
    +  const char* end = input.data() + input.size();
    +  // Optimization opportunity: if the following code gets
    +  // called often, it can be optimized quite a bit.
    +  while (pointer < end) {
    +    const char ch = pointer[0];
    +    size_t remaining = end - pointer - 1;
    +    if (ch != '%' || remaining < 2 ||
    +        (  // ch == '%' && // It is unnecessary to check that ch == '%'.
    +            (!is_ascii_hex_digit(pointer[1]) ||
    +             !is_ascii_hex_digit(pointer[2])))) {
    +      dest += ch;
    +      pointer++;
    +      continue;
    +    } else {
    +      unsigned a = convert_hex_to_binary(pointer[1]);
    +      unsigned b = convert_hex_to_binary(pointer[2]);
    +      char c = static_cast(a * 16 + b);
    +      dest += c;
    +      pointer += 3;
         }
    +  }
    +  return dest;
    +}
     
    -    std::string new_value;
    -    new_value = input[0] == '?' ? input.substr(1) : input;
    -    helpers::remove_ascii_tab_or_newline(new_value);
    +std::string percent_encode(const std::string_view input,
    +                           const uint8_t character_set[]) {
    +  auto pointer =
    +      std::find_if(input.begin(), input.end(), [character_set](const char c) {
    +        return character_sets::bit_at(character_set, c);
    +      });
    +  // Optimization: Don't iterate if percent encode is not required
    +  if (pointer == input.end()) {
    +    return std::string(input);
    +  }
     
    -    auto query_percent_encode_set = is_special() ?
    -      ada::character_sets::SPECIAL_QUERY_PERCENT_ENCODE :
    -      ada::character_sets::QUERY_PERCENT_ENCODE;
    +  std::string result(input.substr(0, std::distance(input.begin(), pointer)));
    +  result.reserve(input.length());  // in the worst case, percent encoding might
    +                                   // produce 3 characters.
     
    -    query = ada::unicode::percent_encode(std::string_view(new_value), query_percent_encode_set);
    +  for (; pointer != input.end(); pointer++) {
    +    if (character_sets::bit_at(character_set, *pointer)) {
    +      result.append(character_sets::hex + uint8_t(*pointer) * 4, 3);
    +    } else {
    +      result += *pointer;
    +    }
       }
     
    -  bool url::set_pathname(const std::string_view input) {
    -    if (has_opaque_path) { return false; }
    -    path = "";
    -    return parse_path(input);
    +  return result;
    +}
    +
    +template 
    +bool percent_encode(const std::string_view input, const uint8_t character_set[],
    +                    std::string& out) {
    +  ada_log("percent_encode ", input, " to output string while ",
    +          append ? "appending" : "overwriting");
    +  auto pointer =
    +      std::find_if(input.begin(), input.end(), [character_set](const char c) {
    +        return character_sets::bit_at(character_set, c);
    +      });
    +  ada_log("percent_encode done checking, moved to ",
    +          std::distance(input.begin(), pointer));
    +
    +  // Optimization: Don't iterate if percent encode is not required
    +  if (pointer == input.end()) {
    +    ada_log("percent_encode encoding not needed.");
    +    return false;
    +  }
    +  if (!append) {
    +    out.clear();
    +  }
    +  ada_log("percent_encode appending ", std::distance(input.begin(), pointer),
    +          " bytes");
    +  out.append(input.data(), std::distance(input.begin(), pointer));
    +  ada_log("percent_encode processing ", std::distance(pointer, input.end()),
    +          " bytes");
    +  for (; pointer != input.end(); pointer++) {
    +    if (character_sets::bit_at(character_set, *pointer)) {
    +      out.append(character_sets::hex + uint8_t(*pointer) * 4, 3);
    +    } else {
    +      out += *pointer;
    +    }
       }
    +  return true;
    +}
     
    -  bool url::set_host_or_hostname(const std::string_view input, bool override_hostname) {
    -    if (has_opaque_path) { return false; }
    +bool to_ascii(std::optional& out, const std::string_view plain,
    +              size_t first_percent) {
    +  std::string percent_decoded_buffer;
    +  std::string_view input = plain;
    +  if (first_percent != std::string_view::npos) {
    +    percent_decoded_buffer = unicode::percent_decode(plain, first_percent);
    +    input = percent_decoded_buffer;
    +  }
    +  // input is a non-empty UTF-8 string, must be percent decoded
    +  std::string idna_ascii = ada::idna::to_ascii(input);
    +  if (idna_ascii.empty()) {
    +    return false;
    +  }
    +  out = std::move(idna_ascii);
    +  return true;
    +}
     
    -    std::optional previous_host = host;
    -    std::optional previous_port = port;
    +std::string percent_encode(const std::string_view input,
    +                           const uint8_t character_set[], size_t index) {
    +  std::string out;
    +  out.append(input.data(), index);
    +  auto pointer = input.begin() + index;
    +  for (; pointer != input.end(); pointer++) {
    +    if (character_sets::bit_at(character_set, *pointer)) {
    +      out.append(character_sets::hex + uint8_t(*pointer) * 4, 3);
    +    } else {
    +      out += *pointer;
    +    }
    +  }
    +  return out;
    +}
     
    -    size_t host_end_pos = input.find('#');
    -    std::string _host(input.data(), host_end_pos != std::string_view::npos ? host_end_pos : input.size());
    -    helpers::remove_ascii_tab_or_newline(_host);
    -    std::string_view new_host(_host);
    +std::string to_unicode(std::string_view input) {
    +  return ada::idna::to_unicode(input);
    +}
     
    -    // If url's scheme is "file", then set state to file host state, instead of host state.
    -    if (get_scheme_type() != ada::scheme::type::FILE) {
    -      std::string_view host_view(_host.data(), _host.length());
    -      auto [location,found_colon] = helpers::get_host_delimiter_location(is_special(), host_view);
    +}  // namespace ada::unicode
    +/* end file src/unicode.cpp */
    +/* begin file src/serializers.cpp */
     
    -      // Otherwise, if c is U+003A (:) and insideBrackets is false, then:
    -      // Note: the 'found_colon' value is true if and only if a colon was encountered
    -      // while not inside brackets.
    -      if (found_colon) {
    -        if (override_hostname) { return false; }
    -        std::string_view  buffer = new_host.substr(location+1);
    -        if (!buffer.empty()) { set_port(buffer); }
    -      }
    -      // If url is special and host_view is the empty string, validation error, return failure.
    -      // Otherwise, if state override is given, host_view is the empty string,
    -      // and either url includes credentials or url’s port is non-null, return.
    -      else if (host_view.empty() && (is_special() || includes_credentials() || port.has_value())) {
    -        return false;
    -      }
    +#include 
    +#include 
     
    -      // Let host be the result of host parsing host_view with url is not special.
    -      if (host_view.empty()) {
    -        host = "";
    -        return true;
    -      }
    +namespace ada::serializers {
     
    -      bool succeeded = parse_host(host_view);
    -      if (!succeeded) {
    -        host = previous_host;
    -        port = previous_port;
    +void find_longest_sequence_of_ipv6_pieces(
    +    const std::array& address, size_t& compress,
    +    size_t& compress_length) noexcept {
    +  for (size_t i = 0; i < 8; i++) {
    +    if (address[i] == 0) {
    +      size_t next = i + 1;
    +      while (next != 8 && address[next] == 0) ++next;
    +      const size_t count = next - i;
    +      if (compress_length < count) {
    +        compress_length = count;
    +        compress = i;
    +        if (next == 8) break;
    +        i = next;
           }
    -      return succeeded;
         }
    +  }
    +}
     
    -    size_t location = new_host.find_first_of("/\\?");
    -    if (location != std::string_view::npos) { new_host.remove_suffix(new_host.length() - location); }
    +std::string ipv6(const std::array& address) noexcept {
    +  size_t compress_length = 0;  // The length of a long sequence of zeros.
    +  size_t compress = 0;         // The start of a long sequence of zeros.
    +  find_longest_sequence_of_ipv6_pieces(address, compress, compress_length);
     
    -    if (new_host.empty()) {
    -      // Set url’s host to the empty string.
    -      host = "";
    -    }
    -    else {
    -      // Let host be the result of host parsing buffer with url is not special.
    -      if (!parse_host(new_host)) {
    -        host = previous_host;
    -        port = previous_port;
    -        return false;
    -      }
    +  if (compress_length <= 1) {
    +    // Optimization opportunity: Find a faster way then snprintf for imploding
    +    // and return here.
    +    compress = compress_length = 8;
    +  }
     
    -      // If host is "localhost", then set host to the empty string.
    -      if (host.has_value() && host.value() == "localhost") {
    -        host = "";
    +  std::string output(4 * 8 + 7 + 2, '\0');
    +  size_t piece_index = 0;
    +  char* point = output.data();
    +  char* point_end = output.data() + output.size();
    +  *point++ = '[';
    +  while (true) {
    +    if (piece_index == compress) {
    +      *point++ = ':';
    +      // If we skip a value initially, we need to write '::', otherwise
    +      // a single ':' will do since it follows a previous ':'.
    +      if (piece_index == 0) {
    +        *point++ = ':';
    +      }
    +      piece_index += compress_length;
    +      if (piece_index == 8) {
    +        break;
           }
         }
    -    return true;
    +    point = std::to_chars(point, point_end, address[piece_index], 16).ptr;
    +    piece_index++;
    +    if (piece_index == 8) {
    +      break;
    +    }
    +    *point++ = ':';
    +  }
    +  *point++ = ']';
    +  output.resize(point - output.data());
    +  return output;
    +}
    +
    +std::string ipv4(const uint64_t address) noexcept {
    +  std::string output(15, '\0');
    +  char* point = output.data();
    +  char* point_end = output.data() + output.size();
    +  point = std::to_chars(point, point_end, uint8_t(address >> 24)).ptr;
    +  for (int i = 2; i >= 0; i--) {
    +    *point++ = '.';
    +    point = std::to_chars(point, point_end, uint8_t(address >> (i * 8))).ptr;
       }
    +  output.resize(point - output.data());
    +  return output;
    +}
    +
    +}  // namespace ada::serializers
    +/* end file src/serializers.cpp */
    +/* begin file src/implementation.cpp */
    +#include 
    +
    +
    +namespace ada {
     
    -  bool url::set_host(const std::string_view input) {
    -    return set_host_or_hostname(input, false);
    +template 
    +ada_warn_unused tl::expected parse(
    +    std::string_view input, const result_type* base_url) {
    +  result_type u = ada::parser::parse_url(input, base_url);
    +  if (!u.is_valid) {
    +    return tl::unexpected(errors::generic_error);
       }
    +  return u;
    +}
     
    -  bool url::set_hostname(const std::string_view input) {
    -    return set_host_or_hostname(input, true);
    +template ada::result parse(std::string_view input,
    +                                     const url* base_url = nullptr);
    +template ada::result parse(
    +    std::string_view input, const url_aggregator* base_url = nullptr);
    +
    +std::string href_from_file(std::string_view input) {
    +  // This is going to be much faster than constructing a URL.
    +  std::string tmp_buffer;
    +  std::string_view internal_input;
    +  if (unicode::has_tabs_or_newline(input)) {
    +    tmp_buffer = input;
    +    helpers::remove_ascii_tab_or_newline(tmp_buffer);
    +    internal_input = tmp_buffer;
    +  } else {
    +    internal_input = input;
    +  }
    +  std::string path;
    +  if (internal_input.empty()) {
    +    path = "/";
    +  } else if ((internal_input[0] == '/') || (internal_input[0] == '\\')) {
    +    helpers::parse_prepared_path(internal_input.substr(1),
    +                                 ada::scheme::type::FILE, path);
    +  } else {
    +    helpers::parse_prepared_path(internal_input, ada::scheme::type::FILE, path);
       }
    +  return "file://" + path;
    +}
     
    -  bool url::set_protocol(const std::string_view input) {
    -    std::string view(input);
    -    helpers::remove_ascii_tab_or_newline(view);
    -    if (view.empty()) { return true; }
    +ada_warn_unused std::string to_string(ada::encoding_type type) {
    +  switch (type) {
    +    case ada::encoding_type::UTF8:
    +      return "UTF-8";
    +    case ada::encoding_type::UTF_16LE:
    +      return "UTF-16LE";
    +    case ada::encoding_type::UTF_16BE:
    +      return "UTF-16BE";
    +    default:
    +      unreachable();
    +  }
    +}
     
    -    // Schemes should start with alpha values.
    -    if (!checkers::is_alpha(view[0])) { return false; }
    +}  // namespace ada
    +/* end file src/implementation.cpp */
    +/* begin file src/helpers.cpp */
     
    -    view.append(":");
    +#include 
    +#include 
    +#include 
    +#include 
     
    -    std::string::iterator pointer = std::find_if_not(view.begin(), view.end(), unicode::is_alnum_plus);
    +namespace ada::helpers {
     
    -    if (pointer != view.end() && *pointer == ':') {
    -      return parse_scheme(std::string_view(view.data(), pointer - view.begin()));
    +template 
    +void encode_json(std::string_view view, out_iter out) {
    +  // trivial implementation. could be faster.
    +  const char* hexvalues =
    +      "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f";
    +  for (uint8_t c : view) {
    +    if (c == '\\') {
    +      *out++ = '\\';
    +      *out++ = '\\';
    +    } else if (c == '"') {
    +      *out++ = '\\';
    +      *out++ = '"';
    +    } else if (c <= 0x1f) {
    +      *out++ = '\\';
    +      *out++ = 'u';
    +      *out++ = '0';
    +      *out++ = '0';
    +      *out++ = hexvalues[2 * c];
    +      *out++ = hexvalues[2 * c + 1];
    +    } else {
    +      *out++ = c;
         }
    -    return false;
       }
    +}
    +
    +ada_unused std::string get_state(ada::state s) {
    +  switch (s) {
    +    case ada::state::AUTHORITY:
    +      return "Authority";
    +    case ada::state::SCHEME_START:
    +      return "Scheme Start";
    +    case ada::state::SCHEME:
    +      return "Scheme";
    +    case ada::state::HOST:
    +      return "Host";
    +    case ada::state::NO_SCHEME:
    +      return "No Scheme";
    +    case ada::state::FRAGMENT:
    +      return "Fragment";
    +    case ada::state::RELATIVE_SCHEME:
    +      return "Relative Scheme";
    +    case ada::state::RELATIVE_SLASH:
    +      return "Relative Slash";
    +    case ada::state::FILE:
    +      return "File";
    +    case ada::state::FILE_HOST:
    +      return "File Host";
    +    case ada::state::FILE_SLASH:
    +      return "File Slash";
    +    case ada::state::PATH_OR_AUTHORITY:
    +      return "Path or Authority";
    +    case ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES:
    +      return "Special Authority Ignore Slashes";
    +    case ada::state::SPECIAL_AUTHORITY_SLASHES:
    +      return "Special Authority Slashes";
    +    case ada::state::SPECIAL_RELATIVE_OR_AUTHORITY:
    +      return "Special Relative or Authority";
    +    case ada::state::QUERY:
    +      return "Query";
    +    case ada::state::PATH:
    +      return "Path";
    +    case ada::state::PATH_START:
    +      return "Path Start";
    +    case ada::state::OPAQUE_PATH:
    +      return "Opaque Path";
    +    case ada::state::PORT:
    +      return "Port";
    +    default:
    +      return "unknown state";
    +  }
    +}
     
    -  bool url::set_href(const std::string_view input) {
    -    ada::result out = ada::parse(input);
    +ada_really_inline std::optional prune_fragment(
    +    std::string_view& input) noexcept {
    +  // compiles down to 20--30 instructions including a class to memchr (C
    +  // function). this function should be quite fast.
    +  size_t location_of_first = input.find('#');
    +  if (location_of_first == std::string_view::npos) {
    +    return std::nullopt;
    +  }
    +  std::string_view fragment = input;
    +  fragment.remove_prefix(location_of_first + 1);
    +  input.remove_suffix(input.size() - location_of_first);
    +  return fragment;
    +}
     
    -    if (out) {
    -      username = out->username;
    -      password = out->password;
    -      host = out->host;
    -      port = out->port;
    -      path = out->path;
    -      query = out->query;
    -      fragment = out->fragment;
    -      type = out->type;
    -      non_special_scheme = out->non_special_scheme;
    -      has_opaque_path = out->has_opaque_path;
    +ada_really_inline bool shorten_path(std::string& path,
    +                                    ada::scheme::type type) noexcept {
    +  size_t first_delimiter = path.find_first_of('/', 1);
    +
    +  // Let path be url’s path.
    +  // If url’s scheme is "file", path’s size is 1, and path[0] is a normalized
    +  // Windows drive letter, then return.
    +  if (type == ada::scheme::type::FILE &&
    +      first_delimiter == std::string_view::npos) {
    +    if (checkers::is_normalized_windows_drive_letter(
    +            std::string_view(path.data() + 1, first_delimiter - 1))) {
    +      return false;
         }
    +  }
     
    -    return out.has_value();
    +  // Remove path’s last item, if any.
    +  if (!path.empty()) {
    +    path.erase(path.rfind('/'));
    +    return true;
       }
     
    -} // namespace ada
    -/* end file src/url-setters.cpp */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/src, filename=parser.cpp
    -/* begin file src/parser.cpp */
    +  return false;
    +}
     
    -#include 
    +ada_really_inline bool shorten_path(std::string_view& path,
    +                                    ada::scheme::type type) noexcept {
    +  size_t first_delimiter = path.find_first_of('/', 1);
    +
    +  // Let path be url’s path.
    +  // If url’s scheme is "file", path’s size is 1, and path[0] is a normalized
    +  // Windows drive letter, then return.
    +  if (type == ada::scheme::type::FILE &&
    +      first_delimiter == std::string_view::npos) {
    +    if (checkers::is_normalized_windows_drive_letter(
    +            std::string_view(path.data() + 1, first_delimiter - 1))) {
    +      return false;
    +    }
    +  }
     
    -#include 
    -#include 
    +  // Remove path’s last item, if any.
    +  if (!path.empty()) {
    +    size_t slash_loc = path.rfind('/');
    +    if (slash_loc != std::string_view::npos) {
    +      path.remove_suffix(path.size() - slash_loc);
    +    }
    +    return true;
    +  }
     
    -namespace ada::parser {
    +  return false;
    +}
     
    -  url parse_url(std::string_view user_input,
    -                const ada::url* base_url,
    -                ada::encoding_type encoding) {
    -    ada_log("ada::parser::parse_url('", user_input,
    -     "' [", user_input.size()," bytes],", (base_url != nullptr ? base_url->to_string() : "null"),
    -     ",", ada::to_string(encoding), ")");
    -
    -    ada::state state = ada::state::SCHEME_START;
    -    ada::url url = ada::url();
    -
    -    // If we are provided with an invalid base, or the optional_url was invalid,
    -    // we must return.
    -    if(base_url != nullptr) { url.is_valid &= base_url->is_valid; }
    -    if(!url.is_valid) { return url; }
    -
    -    std::string tmp_buffer;
    -    std::string_view internal_input;
    -    if(unicode::has_tabs_or_newline(user_input)) {
    -      tmp_buffer = user_input;
    -      // Optimization opportunity: Instead of copying and then pruning, we could just directly
    -      // build the string from user_input.
    -      helpers::remove_ascii_tab_or_newline(tmp_buffer);
    -      internal_input = tmp_buffer;
    -    } else {
    -      internal_input = user_input;
    -    }
    -
    -    // Leading and trailing control characters are uncommon and easy to deal with (no performance concern).
    -    std::string_view url_data = internal_input;
    -    helpers::trim_c0_whitespace(url_data);
    -
    -    // Optimization opportunity. Most websites do not have fragment.
    -    std::optional fragment = helpers::prune_fragment(url_data);
    -    if(fragment.has_value()) {
    -      url.fragment = unicode::percent_encode(*fragment,
    -                                             ada::character_sets::FRAGMENT_PERCENT_ENCODE);
    -    }
    -
    -    // Here url_data no longer has its fragment.
    -    // We are going to access the data from url_data (it is immutable).
    -    // At any given time, we are pointing at byte 'input_position' in url_data.
    -    // The input_position variable should range from 0 to input_size.
    -    // It is illegal to access url_data at input_size.
    -    size_t input_position = 0;
    -    const size_t input_size = url_data.size();
    -    // Keep running the following state machine by switching on state.
    -    // If after a run pointer points to the EOF code point, go to the next step.
    -    // Otherwise, increase pointer by 1 and continue with the state machine.
    -    // We never decrement input_position.
    -    while(input_position <= input_size) {
    -      switch (state) {
    -        case ada::state::SCHEME_START: {
    -          ada_log("SCHEME_START ", helpers::substring(url_data, input_position));
    -          // If c is an ASCII alpha, append c, lowercased, to buffer, and set state to scheme state.
    -          if ((input_position != input_size) && checkers::is_alpha(url_data[input_position])) {
    -            state = ada::state::SCHEME;
    -            input_position++;
    -          } else {
    -            // Otherwise, if state override is not given, set state to no scheme state and decrease pointer by 1.
    -            state = ada::state::NO_SCHEME;
    -          }
    -          break;
    -        }
    -        case ada::state::SCHEME: {
    -          ada_log("SCHEME ", helpers::substring(url_data, input_position));
    -          // If c is an ASCII alphanumeric, U+002B (+), U+002D (-), or U+002E (.), append c, lowercased, to buffer.
    -          while((input_position != input_size) && (ada::unicode::is_alnum_plus(url_data[input_position]))) {
    -            input_position++;
    -          }
    -          // Otherwise, if c is U+003A (:), then:
    -          if ((input_position != input_size) && (url_data[input_position] == ':')) {
    -            ada_log("SCHEME the scheme should be ", url_data.substr(0,input_position));
    -            if(!url.parse_scheme(url_data.substr(0,input_position))) { return url; }
    -            ada_log("SCHEME the scheme is ", url.get_scheme());
    -
    -            // If url’s scheme is "file", then:
    -            if (url.get_scheme_type() == ada::scheme::type::FILE) {
    -              // Set state to file state.
    -              state = ada::state::FILE;
    -            }
    -            // Otherwise, if url is special, base is non-null, and base’s scheme is url’s scheme:
    -            // Note: Doing base_url->scheme is unsafe if base_url != nullptr is false.
    -            else if (url.is_special() && base_url != nullptr && base_url->get_scheme_type() == url.get_scheme_type()) {
    -              // Set state to special relative or authority state.
    -              state = ada::state::SPECIAL_RELATIVE_OR_AUTHORITY;
    -            }
    -            // Otherwise, if url is special, set state to special authority slashes state.
    -            else if (url.is_special()) {
    -              state = ada::state::SPECIAL_AUTHORITY_SLASHES;
    -            }
    -            // Otherwise, if remaining starts with an U+002F (/), set state to path or authority state
    -            // and increase pointer by 1.
    -            else if (input_position + 1 < input_size && url_data[input_position + 1] == '/') {
    -              state = ada::state::PATH_OR_AUTHORITY;
    -              input_position++;
    -            }
    -            // Otherwise, set url’s path to the empty string and set state to opaque path state.
    -            else {
    -              state = ada::state::OPAQUE_PATH;
    -            }
    -          }
    -          // Otherwise, if state override is not given, set buffer to the empty string, state to no scheme state,
    -          // and start over (from the first code point in input).
    -          else {
    -            state = ada::state::NO_SCHEME;
    -            input_position = 0;
    -            break;
    -          }
    -          input_position++;
    -          break;
    -        }
    -        case ada::state::NO_SCHEME: {
    -          ada_log("NO_SCHEME ", helpers::substring(url_data, input_position));
    -          // If base is null, or base has an opaque path and c is not U+0023 (#), validation error, return failure.
    -          // SCHEME state updates the state to NO_SCHEME and validates url_data is not empty.
    -          if (base_url == nullptr || (base_url->has_opaque_path && url_data[input_position] != '#')) {
    -            ada_log("NO_SCHEME validation error");
    -            url.is_valid = false;
    -            return url;
    -          }
    -          // Otherwise, if base has an opaque path and c is U+0023 (#),
    -          // set url’s scheme to base’s scheme, url’s path to base’s path, url’s query to base’s query,
    -          // url’s fragment to the empty string, and set state to fragment state.
    -          else if (base_url->has_opaque_path && url.fragment.has_value() && input_position == input_size) {
    -            ada_log("NO_SCHEME opaque base with fragment");
    -            url.copy_scheme(*base_url);
    -            url.path = base_url->path;
    -            url.has_opaque_path = base_url->has_opaque_path;
    -            url.query = base_url->query;
    -            return url;
    -          }
    -          // Otherwise, if base’s scheme is not "file", set state to relative state and decrease pointer by 1.
    -          else if (base_url->get_scheme_type() != ada::scheme::type::FILE) {
    -            ada_log("NO_SCHEME non-file relative path");
    -            state = ada::state::RELATIVE_SCHEME;
    -          }
    -          // Otherwise, set state to file state and decrease pointer by 1.
    -          else {
    -            ada_log("NO_SCHEME file base type");
    -            state = ada::state::FILE;
    -          }
    -          break;
    -        }
    -        case ada::state::AUTHORITY: {
    -          ada_log("AUTHORITY ", helpers::substring(url_data, input_position));
    -          // most URLs have no @. Having no @ tells us that we don't have to worry about AUTHORITY. Of course,
    -          // we could have @ and still not have to worry about AUTHORITY.
    -          // TODO: Instead of just collecting a bool, collect the location of the '@' and do something useful with it.
    -          // TODO: We could do various processing early on, using a single pass over the string to collect
    -          // information about it, e.g., telling us whether there is a @ and if so, where (or how many).
    -          const bool contains_ampersand = (url_data.find('@', input_position) != std::string_view::npos);
    +ada_really_inline void remove_ascii_tab_or_newline(
    +    std::string& input) noexcept {
    +  // if this ever becomes a performance issue, we could use an approach similar
    +  // to has_tabs_or_newline
    +  input.erase(std::remove_if(input.begin(), input.end(),
    +                             [](char c) {
    +                               return ada::unicode::is_ascii_tab_or_newline(c);
    +                             }),
    +              input.end());
    +}
     
    -          if(!contains_ampersand) {
    -            state = ada::state::HOST;
    -            break;
    -          }
    -          bool at_sign_seen{false};
    -          bool password_token_seen{false};
    -          do {
    -            std::string_view view = helpers::substring(url_data, input_position);
    -            size_t location = url.is_special() ? helpers::find_authority_delimiter_special(view) : helpers::find_authority_delimiter(view);
    -            std::string_view authority_view(view.data(), location);
    -            size_t end_of_authority = input_position + authority_view.size();
    -            // If c is U+0040 (@), then:
    -            if ((end_of_authority != input_size) && (url_data[end_of_authority] == '@')) {
    -              // If atSignSeen is true, then prepend "%40" to buffer.
    -              if (at_sign_seen) {
    -                if (password_token_seen) {
    -                  url.password += "%40";
    -                } else {
    -                  url.username += "%40";
    -                }
    -              }
    +ada_really_inline std::string_view substring(std::string_view input,
    +                                             size_t pos) noexcept {
    +  ADA_ASSERT_TRUE(pos <= input.size());
    +  // The following is safer but uneeded if we have the above line:
    +  // return pos > input.size() ? std::string_view() : input.substr(pos);
    +  return input.substr(pos);
    +}
     
    -              at_sign_seen = true;
    +ada_really_inline void resize(std::string_view& input, size_t pos) noexcept {
    +  ADA_ASSERT_TRUE(pos <= input.size());
    +  input.remove_suffix(input.size() - pos);
    +}
     
    -              if (!password_token_seen) {
    -                size_t password_token_location = authority_view.find(':');
    -                password_token_seen = password_token_location != std::string_view::npos;
    +// Reverse the byte order.
    +ada_really_inline uint64_t swap_bytes(uint64_t val) noexcept {
    +  // performance: this often compiles to a single instruction (e.g., bswap)
    +  return ((((val)&0xff00000000000000ull) >> 56) |
    +          (((val)&0x00ff000000000000ull) >> 40) |
    +          (((val)&0x0000ff0000000000ull) >> 24) |
    +          (((val)&0x000000ff00000000ull) >> 8) |
    +          (((val)&0x00000000ff000000ull) << 8) |
    +          (((val)&0x0000000000ff0000ull) << 24) |
    +          (((val)&0x000000000000ff00ull) << 40) |
    +          (((val)&0x00000000000000ffull) << 56));
    +}
     
    -                if (!password_token_seen) {
    -                  url.username += unicode::percent_encode(authority_view, character_sets::USERINFO_PERCENT_ENCODE);
    -                } else {
    -                  url.username += unicode::percent_encode(authority_view.substr(0,password_token_location), character_sets::USERINFO_PERCENT_ENCODE);
    -                  url.password += unicode::percent_encode(authority_view.substr(password_token_location+1), character_sets::USERINFO_PERCENT_ENCODE);
    -                }
    -              }
    -              else {
    -                url.password += unicode::percent_encode(authority_view, character_sets::USERINFO_PERCENT_ENCODE);
    -              }
    -            }
    -            // Otherwise, if one of the following is true:
    -            // - c is the EOF code point, U+002F (/), U+003F (?), or U+0023 (#)
    -            // - url is special and c is U+005C (\)
    -            else if (end_of_authority == input_size || url_data[end_of_authority] == '/' || url_data[end_of_authority] == '?' || (url.is_special() && url_data[end_of_authority] == '\\')) {
    -              // If atSignSeen is true and authority_view is the empty string, validation error, return failure.
    -              if (at_sign_seen && authority_view.empty()) {
    -                url.is_valid = false;
    -                return url;
    -              }
    -              state = ada::state::HOST;
    -              break;
    -            }
    -            if(end_of_authority == input_size) { return url; }
    -            input_position = end_of_authority + 1;
    -          } while(true);
    +ada_really_inline uint64_t swap_bytes_if_big_endian(uint64_t val) noexcept {
    +  // performance: under little-endian systems (most systems), this function
    +  // is free (just returns the input).
    +#if ADA_IS_BIG_ENDIAN
    +  return swap_bytes(val);
    +#else
    +  return val;  // unchanged (trivial)
    +#endif
    +}
     
    -          break;
    -        }
    -        case ada::state::SPECIAL_RELATIVE_OR_AUTHORITY: {
    -          ada_log("SPECIAL_RELATIVE_OR_AUTHORITY ", helpers::substring(url_data, input_position));
    +// starting at index location, this finds the next location of a character
    +// :, /, \\, ? or [. If none is found, view.size() is returned.
    +// For use within get_host_delimiter_location.
    +ada_really_inline size_t find_next_host_delimiter_special(
    +    std::string_view view, size_t location) noexcept {
    +  // performance: if you plan to call find_next_host_delimiter more than once,
    +  // you *really* want find_next_host_delimiter to be inlined, because
    +  // otherwise, the constants may get reloaded each time (bad).
    +  auto has_zero_byte = [](uint64_t v) {
    +    return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    +  };
    +  auto index_of_first_set_byte = [](uint64_t v) {
    +    return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    +  };
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  size_t i = location;
    +  uint64_t mask1 = broadcast(':');
    +  uint64_t mask2 = broadcast('/');
    +  uint64_t mask3 = broadcast('\\');
    +  uint64_t mask4 = broadcast('?');
    +  uint64_t mask5 = broadcast('[');
    +  // This loop will get autovectorized under many optimizing compilers,
    +  // so you get actually SIMD!
    +  for (; i + 7 < view.size(); i += 8) {
    +    uint64_t word{};
    +    // performance: the next memcpy translates into a single CPU instruction.
    +    memcpy(&word, view.data() + i, sizeof(word));
    +    // performance: on little-endian systems (most systems), this next line is
    +    // free.
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    uint64_t xor4 = word ^ mask4;
    +    uint64_t xor5 = word ^ mask5;
    +    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
    +                        has_zero_byte(xor3) | has_zero_byte(xor4) |
    +                        has_zero_byte(xor5);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
    +  if (i < view.size()) {
    +    uint64_t word{};
    +    // performance: the next memcpy translates into a function call, but
    +    // that is difficult to avoid. Might be a bit expensive.
    +    memcpy(&word, view.data() + i, view.size() - i);
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    uint64_t xor4 = word ^ mask4;
    +    uint64_t xor5 = word ^ mask5;
    +    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
    +                        has_zero_byte(xor3) | has_zero_byte(xor4) |
    +                        has_zero_byte(xor5);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
    +  return view.size();
    +}
     
    -          // If c is U+002F (/) and remaining starts with U+002F (/),
    -          // then set state to special authority ignore slashes state and increase pointer by 1.
    -          std::string_view view  = helpers::substring(url_data, input_position);
    -          if (ada::checkers::begins_with(view, "//")) {
    -            state = ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES;
    -            input_position += 2;
    -          } else {
    -            // Otherwise, validation error, set state to relative state and decrease pointer by 1.
    -            state = ada::state::RELATIVE_SCHEME;
    -          }
    +// starting at index location, this finds the next location of a character
    +// :, /, ? or [. If none is found, view.size() is returned.
    +// For use within get_host_delimiter_location.
    +ada_really_inline size_t find_next_host_delimiter(std::string_view view,
    +                                                  size_t location) noexcept {
    +  // performance: if you plan to call find_next_host_delimiter more than once,
    +  // you *really* want find_next_host_delimiter to be inlined, because
    +  // otherwise, the constants may get reloaded each time (bad).
    +  auto has_zero_byte = [](uint64_t v) {
    +    return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    +  };
    +  auto index_of_first_set_byte = [](uint64_t v) {
    +    return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    +  };
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  size_t i = location;
    +  uint64_t mask1 = broadcast(':');
    +  uint64_t mask2 = broadcast('/');
    +  uint64_t mask4 = broadcast('?');
    +  uint64_t mask5 = broadcast('[');
    +  // This loop will get autovectorized under many optimizing compilers,
    +  // so you get actually SIMD!
    +  for (; i + 7 < view.size(); i += 8) {
    +    uint64_t word{};
    +    // performance: the next memcpy translates into a single CPU instruction.
    +    memcpy(&word, view.data() + i, sizeof(word));
    +    // performance: on little-endian systems (most systems), this next line is
    +    // free.
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor4 = word ^ mask4;
    +    uint64_t xor5 = word ^ mask5;
    +    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
    +                        has_zero_byte(xor4) | has_zero_byte(xor5);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
    +  if (i < view.size()) {
    +    uint64_t word{};
    +    // performance: the next memcpy translates into a function call, but
    +    // that is difficult to avoid. Might be a bit expensive.
    +    memcpy(&word, view.data() + i, view.size() - i);
    +    // performance: on little-endian systems (most systems), this next line is
    +    // free.
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor4 = word ^ mask4;
    +    uint64_t xor5 = word ^ mask5;
    +    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
    +                        has_zero_byte(xor4) | has_zero_byte(xor5);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
    +  return view.size();
    +}
     
    +ada_really_inline std::pair get_host_delimiter_location(
    +    const bool is_special, std::string_view& view) noexcept {
    +  /**
    +   * The spec at https://url.spec.whatwg.org/#hostname-state expects us to
    +   * compute a variable called insideBrackets but this variable is only used
    +   * once, to check whether a ':' character was found outside brackets. Exact
    +   * text: "Otherwise, if c is U+003A (:) and insideBrackets is false, then:".
    +   * It is conceptually simpler and arguably more efficient to just return a
    +   * Boolean indicating whether ':' was found outside brackets.
    +   */
    +  const size_t view_size = view.size();
    +  size_t location = 0;
    +  bool found_colon = false;
    +  /**
    +   * Performance analysis:
    +   *
    +   * We are basically seeking the end of the hostname which can be indicated
    +   * by the end of the view, or by one of the characters ':', '/', '?', '\\'
    +   * (where '\\' is only applicable for special URLs). However, these must
    +   * appear outside a bracket range. E.g., if you have [something?]fd: then the
    +   * '?' does not count.
    +   *
    +   * So we can skip ahead to the next delimiter, as long as we include '[' in
    +   * the set of delimiters, and that we handle it first.
    +   *
    +   * So the trick is to have a fast function that locates the next delimiter.
    +   * Unless we find '[', then it only needs to be called once! Ideally, such a
    +   * function would be provided by the C++ standard library, but it seems that
    +   * find_first_of is not very fast, so we are forced to roll our own.
    +   *
    +   * We do not break into two loops for speed, but for clarity.
    +   */
    +  if (is_special) {
    +    // We move to the next delimiter.
    +    location = find_next_host_delimiter_special(view, location);
    +    // Unless we find '[' then we are going only going to have to call
    +    // find_next_host_delimiter_special once.
    +    for (; location < view_size;
    +         location = find_next_host_delimiter_special(view, location)) {
    +      if (view[location] == '[') {
    +        location = view.find(']', location);
    +        if (location == std::string_view::npos) {
    +          // performance: view.find might get translated to a memchr, which
    +          // has no notion of std::string_view::npos, so the code does not
    +          // reflect the assembly.
    +          location = view_size;
               break;
             }
    -        case ada::state::PATH_OR_AUTHORITY: {
    -          ada_log("PATH_OR_AUTHORITY ", helpers::substring(url_data, input_position));
    -
    -          // If c is U+002F (/), then set state to authority state.
    -          if ((input_position != input_size) && (url_data[input_position] == '/')) {
    -            state = ada::state::AUTHORITY;
    -            input_position++;
    -          } else {
    -            // Otherwise, set state to path state, and decrease pointer by 1.
    -            state = ada::state::PATH;
    -          }
    -
    +      } else {
    +        found_colon = view[location] == ':';
    +        break;
    +      }
    +    }
    +  } else {
    +    // We move to the next delimiter.
    +    location = find_next_host_delimiter(view, location);
    +    // Unless we find '[' then we are going only going to have to call
    +    // find_next_host_delimiter_special once.
    +    for (; location < view_size;
    +         location = find_next_host_delimiter(view, location)) {
    +      if (view[location] == '[') {
    +        location = view.find(']', location);
    +        if (location == std::string_view::npos) {
    +          // performance: view.find might get translated to a memchr, which
    +          // has no notion of std::string_view::npos, so the code does not
    +          // reflect the assembly.
    +          location = view_size;
               break;
             }
    -        case ada::state::RELATIVE_SCHEME: {
    -          ada_log("RELATIVE_SCHEME ", helpers::substring(url_data, input_position));
    +      } else {
    +        found_colon = view[location] == ':';
    +        break;
    +      }
    +    }
    +  }
    +  // performance: remove_suffix may translate into a single instruction.
    +  view.remove_suffix(view_size - location);
    +  return {location, found_colon};
    +}
     
    -          // Set url’s scheme to base’s scheme.
    -          url.copy_scheme(*base_url);
    +ada_really_inline void trim_c0_whitespace(std::string_view& input) noexcept {
    +  while (!input.empty() &&
    +         ada::unicode::is_c0_control_or_space(input.front())) {
    +    input.remove_prefix(1);
    +  }
    +  while (!input.empty() && ada::unicode::is_c0_control_or_space(input.back())) {
    +    input.remove_suffix(1);
    +  }
    +}
     
    -          // If c is U+002F (/), then set state to relative slash state.
    -          if ((input_position != input_size) && (url_data[input_position] == '/')) {
    -            ada_log("RELATIVE_SCHEME if c is U+002F (/), then set state to relative slash state");
    -            state = ada::state::RELATIVE_SLASH;
    -          } else if (url.is_special() && (input_position != input_size) && (url_data[input_position] == '\\')) {
    -            // Otherwise, if url is special and c is U+005C (\), validation error, set state to relative slash state.
    -            ada_log("RELATIVE_SCHEME  if url is special and c is U+005C, validation error, set state to relative slash state");
    -            state = ada::state::RELATIVE_SLASH;
    -          } else {
    -            ada_log("RELATIVE_SCHEME otherwise");
    -            // Set url’s username to base’s username, url’s password to base’s password, url’s host to base’s host,
    -            // url’s port to base’s port, url’s path to a clone of base’s path, and url’s query to base’s query.
    -            url.username = base_url->username;
    -            url.password = base_url->password;
    -            url.host = base_url->host;
    -            url.port = base_url->port;
    -            url.path = base_url->path;
    -            url.has_opaque_path = base_url->has_opaque_path;
    -            url.query = base_url->query;
    +ada_really_inline void parse_prepared_path(std::string_view input,
    +                                           ada::scheme::type type,
    +                                           std::string& path) {
    +  ada_log("parse_prepared_path ", input);
    +  uint8_t accumulator = checkers::path_signature(input);
    +  // Let us first detect a trivial case.
    +  // If it is special, we check that we have no dot, no %,  no \ and no
    +  // character needing percent encoding. Otherwise, we check that we have no %,
    +  // no dot, and no character needing percent encoding.
    +  constexpr uint8_t need_encoding = 1;
    +  constexpr uint8_t backslash_char = 2;
    +  constexpr uint8_t dot_char = 4;
    +  constexpr uint8_t percent_char = 8;
    +  bool special = type != ada::scheme::NOT_SPECIAL;
    +  bool may_need_slow_file_handling = (type == ada::scheme::type::FILE &&
    +                                      checkers::is_windows_drive_letter(input));
    +  bool trivial_path =
    +      (special ? (accumulator == 0)
    +               : ((accumulator & (need_encoding | dot_char | percent_char)) ==
    +                  0)) &&
    +      (!may_need_slow_file_handling);
    +  if (accumulator == dot_char && !may_need_slow_file_handling) {
    +    // '4' means that we have at least one dot, but nothing that requires
    +    // percent encoding or decoding. The only part that is not trivial is
    +    // that we may have single dots and double dots path segments.
    +    // If we have such segments, then we either have a path that begins
    +    // with '.' (easy to check), or we have the sequence './'.
    +    // Note: input cannot be empty, it must at least contain one character ('.')
    +    // Note: we know that '\' is not present.
    +    if (input[0] != '.') {
    +      size_t slashdot = input.find("/.");
    +      if (slashdot == std::string_view::npos) {  // common case
    +        trivial_path = true;
    +      } else {  // uncommon
    +        // only three cases matter: /./, /.. or a final /
    +        trivial_path =
    +            !(slashdot + 2 == input.size() || input[slashdot + 2] == '.' ||
    +              input[slashdot + 2] == '/');
    +      }
    +    }
    +  }
    +  if (trivial_path) {
    +    ada_log("parse_path trivial");
    +    path += '/';
    +    path += input;
    +    return;
    +  }
    +  // We are going to need to look a bit at the path, but let us see if we can
    +  // ignore percent encoding *and* backslashes *and* percent characters.
    +  // Except for the trivial case, this is likely to capture 99% of paths out
    +  // there.
    +  bool fast_path =
    +      (special &&
    +       (accumulator & (need_encoding | backslash_char | percent_char)) == 0) &&
    +      (type != ada::scheme::type::FILE);
    +  if (fast_path) {
    +    ada_log("parse_prepared_path fast");
    +    // Here we don't need to worry about \ or percent encoding.
    +    // We also do not have a file protocol. We might have dots, however,
    +    // but dots must as appear as '.', and they cannot be encoded because
    +    // the symbol '%' is not present.
    +    size_t previous_location = 0;  // We start at 0.
    +    do {
    +      size_t new_location = input.find('/', previous_location);
    +      // std::string_view path_view = input;
    +      //  We process the last segment separately:
    +      if (new_location == std::string_view::npos) {
    +        std::string_view path_view = input.substr(previous_location);
    +        if (path_view == "..") {  // The path ends with ..
    +          // e.g., if you receive ".." with an empty path, you go to "/".
    +          if (path.empty()) {
    +            path = '/';
    +            return;
    +          }
    +          // Fast case where we have nothing to do:
    +          if (path.back() == '/') {
    +            return;
    +          }
    +          // If you have the path "/joe/myfriend",
    +          // then you delete 'myfriend'.
    +          path.resize(path.rfind('/') + 1);
    +          return;
    +        }
    +        path += '/';
    +        if (path_view != ".") {
    +          path.append(path_view);
    +        }
    +        return;
    +      } else {
    +        // This is a non-final segment.
    +        std::string_view path_view =
    +            input.substr(previous_location, new_location - previous_location);
    +        previous_location = new_location + 1;
    +        if (path_view == "..") {
    +          if (!path.empty()) {
    +            path.erase(path.rfind('/'));
    +          }
    +        } else if (path_view != ".") {
    +          path += '/';
    +          path.append(path_view);
    +        }
    +      }
    +    } while (true);
    +  } else {
    +    ada_log("parse_path slow");
    +    // we have reached the general case
    +    bool needs_percent_encoding = (accumulator & 1);
    +    std::string path_buffer_tmp;
    +    do {
    +      size_t location = (special && (accumulator & 2))
    +                            ? input.find_first_of("/\\")
    +                            : input.find('/');
    +      std::string_view path_view = input;
    +      if (location != std::string_view::npos) {
    +        path_view.remove_suffix(path_view.size() - location);
    +        input.remove_prefix(location + 1);
    +      }
    +      // path_buffer is either path_view or it might point at a percent encoded
    +      // temporary file.
    +      std::string_view path_buffer =
    +          (needs_percent_encoding &&
    +           ada::unicode::percent_encode(
    +               path_view, character_sets::PATH_PERCENT_ENCODE, path_buffer_tmp))
    +              ? path_buffer_tmp
    +              : path_view;
    +      if (unicode::is_double_dot_path_segment(path_buffer)) {
    +        helpers::shorten_path(path, type);
    +        if (location == std::string_view::npos) {
    +          path += '/';
    +        }
    +      } else if (unicode::is_single_dot_path_segment(path_buffer) &&
    +                 (location == std::string_view::npos)) {
    +        path += '/';
    +      }
    +      // Otherwise, if path_buffer is not a single-dot path segment, then:
    +      else if (!unicode::is_single_dot_path_segment(path_buffer)) {
    +        // If url’s scheme is "file", url’s path is empty, and path_buffer is a
    +        // Windows drive letter, then replace the second code point in
    +        // path_buffer with U+003A (:).
    +        if (type == ada::scheme::type::FILE && path.empty() &&
    +            checkers::is_windows_drive_letter(path_buffer)) {
    +          path += '/';
    +          path += path_buffer[0];
    +          path += ':';
    +          path_buffer.remove_prefix(2);
    +          path.append(path_buffer);
    +        } else {
    +          // Append path_buffer to url’s path.
    +          path += '/';
    +          path.append(path_buffer);
    +        }
    +      }
    +      if (location == std::string_view::npos) {
    +        return;
    +      }
    +    } while (true);
    +  }
    +}
     
    -            // If c is U+003F (?), then set url’s query to the empty string, and state to query state.
    -            if ((input_position != input_size) && (url_data[input_position] == '?')) {
    -              state = ada::state::QUERY;
    -            }
    -            // Otherwise, if c is not the EOF code point:
    -            else if (input_position != input_size) {
    -              // Set url’s query to null.
    -              url.query = std::nullopt;
    +bool overlaps(std::string_view input1, const std::string& input2) noexcept {
    +  ada_log("helpers::overlaps check if string_view '", input1, "' [",
    +          input1.size(), " bytes] is part of string '", input2, "' [",
    +          input2.size(), " bytes]");
    +  return !input1.empty() && !input2.empty() && input1.data() >= input2.data() &&
    +         input1.data() < input2.data() + input2.size();
    +}
     
    -              // Shorten url’s path.
    -              helpers::shorten_path(url.path, url.get_scheme_type());
    +template 
    +ada_really_inline void strip_trailing_spaces_from_opaque_path(
    +    url_type& url) noexcept {
    +  ada_log("helpers::strip_trailing_spaces_from_opaque_path");
    +  if (!url.has_opaque_path) return;
    +  if (url.base_fragment_has_value()) return;
    +  if (url.base_search_has_value()) return;
    +
    +  auto path = std::string(url.get_pathname());
    +  while (!path.empty() && path.back() == ' ') {
    +    path.resize(path.size() - 1);
    +  }
    +  url.update_base_pathname(path);
    +}
     
    -              // Set state to path state and decrease pointer by 1.
    -              state = ada::state::PATH;
    -              break;
    -            }
    -          }
    -          input_position++;
    -          break;
    -        }
    -        case ada::state::RELATIVE_SLASH: {
    -          ada_log("RELATIVE_SLASH ", helpers::substring(url_data, input_position));
    +ada_really_inline size_t
    +find_authority_delimiter_special(std::string_view view) noexcept {
    +  auto has_zero_byte = [](uint64_t v) {
    +    return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    +  };
    +  auto index_of_first_set_byte = [](uint64_t v) {
    +    return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    +  };
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  size_t i = 0;
    +  uint64_t mask1 = broadcast('@');
    +  uint64_t mask2 = broadcast('/');
    +  uint64_t mask3 = broadcast('?');
    +  uint64_t mask4 = broadcast('\\');
    +
    +  for (; i + 7 < view.size(); i += 8) {
    +    uint64_t word{};
    +    memcpy(&word, view.data() + i, sizeof(word));
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    uint64_t xor4 = word ^ mask4;
    +    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
    +                        has_zero_byte(xor3) | has_zero_byte(xor4);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
     
    -          // If url is special and c is U+002F (/) or U+005C (\), then:
    -          if (url.is_special() && (input_position != input_size) && (url_data[input_position] == '/' || url_data[input_position] =='\\')) {
    -            // Set state to special authority ignore slashes state.
    -            state = ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES;
    -          }
    -          // Otherwise, if c is U+002F (/), then set state to authority state.
    -          else if ((input_position != input_size) && (url_data[input_position] == '/')) {
    -            state = ada::state::AUTHORITY;
    -          }
    -          // Otherwise, set
    -          // - url’s username to base’s username,
    -          // - url’s password to base’s password,
    -          // - url’s host to base’s host,
    -          // - url’s port to base’s port,
    -          // - state to path state, and then, decrease pointer by 1.
    -          else {
    -            url.username = base_url->username;
    -            url.password = base_url->password;
    -            url.host = base_url->host;
    -            url.port = base_url->port;
    -            state = ada::state::PATH;
    -            break;
    -          }
    +  if (i < view.size()) {
    +    uint64_t word{};
    +    memcpy(&word, view.data() + i, view.size() - i);
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    uint64_t xor4 = word ^ mask4;
    +    uint64_t is_match = has_zero_byte(xor1) | has_zero_byte(xor2) |
    +                        has_zero_byte(xor3) | has_zero_byte(xor4);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
     
    -          input_position++;
    -          break;
    -        }
    -        case ada::state::SPECIAL_AUTHORITY_SLASHES: {
    -          ada_log("SPECIAL_AUTHORITY_SLASHES ", helpers::substring(url_data, input_position));
    +  return view.size();
    +}
     
    -          // If c is U+002F (/) and remaining starts with U+002F (/),
    -          // then set state to special authority ignore slashes state and increase pointer by 1.
    -          state = ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES;
    -          std::string_view view = helpers::substring(url_data, input_position);
    -          if (ada::checkers::begins_with(view, "//")) {
    -            input_position += 2;
    -          }
    +ada_really_inline size_t
    +find_authority_delimiter(std::string_view view) noexcept {
    +  auto has_zero_byte = [](uint64_t v) {
    +    return ((v - 0x0101010101010101) & ~(v)&0x8080808080808080);
    +  };
    +  auto index_of_first_set_byte = [](uint64_t v) {
    +    return ((((v - 1) & 0x101010101010101) * 0x101010101010101) >> 56) - 1;
    +  };
    +  auto broadcast = [](uint8_t v) -> uint64_t { return 0x101010101010101 * v; };
    +  size_t i = 0;
    +  uint64_t mask1 = broadcast('@');
    +  uint64_t mask2 = broadcast('/');
    +  uint64_t mask3 = broadcast('?');
    +
    +  for (; i + 7 < view.size(); i += 8) {
    +    uint64_t word{};
    +    memcpy(&word, view.data() + i, sizeof(word));
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    uint64_t is_match =
    +        has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
     
    -          [[fallthrough]];
    -        }
    -        case ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES: {
    -          ada_log("SPECIAL_AUTHORITY_IGNORE_SLASHES ", helpers::substring(url_data, input_position));
    +  if (i < view.size()) {
    +    uint64_t word{};
    +    memcpy(&word, view.data() + i, view.size() - i);
    +    word = swap_bytes_if_big_endian(word);
    +    uint64_t xor1 = word ^ mask1;
    +    uint64_t xor2 = word ^ mask2;
    +    uint64_t xor3 = word ^ mask3;
    +    uint64_t is_match =
    +        has_zero_byte(xor1) | has_zero_byte(xor2) | has_zero_byte(xor3);
    +    if (is_match) {
    +      return i + index_of_first_set_byte(is_match);
    +    }
    +  }
     
    -          // If c is neither U+002F (/) nor U+005C (\), then set state to authority state and decrease pointer by 1.
    -          while ((input_position != input_size) && ((url_data[input_position] == '/') || (url_data[input_position] == '\\'))) {
    -            input_position++;
    -          }
    -          state = ada::state::AUTHORITY;
    +  return view.size();
    +}
     
    -          break;
    -        }
    -        case ada::state::QUERY: {
    -          ada_log("QUERY ", helpers::substring(url_data, input_position));
    -          // If encoding is not UTF-8 and one of the following is true:
    -          // - url is not special
    -          // - url’s scheme is "ws" or "wss"
    -          if (encoding != ada::encoding_type::UTF8) {
    -            if (!url.is_special() || url.get_scheme_type() == ada::scheme::type::WS || url.get_scheme_type() == ada::scheme::type::WSS) {
    -              // then set encoding to UTF-8.
    -              encoding = ada::encoding_type::UTF8;
    -            }
    -          }
    -          // Let queryPercentEncodeSet be the special-query percent-encode set if url is special;
    -          // otherwise the query percent-encode set.
    -          auto query_percent_encode_set = url.is_special() ?
    -                                ada::character_sets::SPECIAL_QUERY_PERCENT_ENCODE :
    -                                ada::character_sets::QUERY_PERCENT_ENCODE;
    +}  // namespace ada::helpers
     
    -          // Percent-encode after encoding, with encoding, buffer, and queryPercentEncodeSet,
    -          // and append the result to url’s query.
    -          url.query = ada::unicode::percent_encode(helpers::substring(url_data, input_position), query_percent_encode_set);
    +namespace ada {
    +ada_warn_unused std::string to_string(ada::state state) {
    +  return ada::helpers::get_state(state);
    +}
    +}  // namespace ada
    +/* end file src/helpers.cpp */
    +/* begin file src/url.cpp */
     
    -          return url;
    -        }
    -        case ada::state::HOST: {
    -          ada_log("HOST ", helpers::substring(url_data, input_position));
    -
    -          std::string_view host_view = helpers::substring(url_data, input_position);
    -          auto [location, found_colon] = helpers::get_host_delimiter_location(url.is_special(), host_view);
    -          input_position = (location != std::string_view::npos) ? input_position + location : input_size;
    -          // Otherwise, if c is U+003A (:) and insideBrackets is false, then:
    -          // Note: the 'found_colon' value is true if and only if a colon was encountered
    -          // while not inside brackets.
    -          if (found_colon) {
    -            // If buffer is the empty string, validation error, return failure.
    -            // Let host be the result of host parsing buffer with url is not special.
    -            ada_log("HOST parsing ", host_view);
    -            if(!url.parse_host(host_view)) { return url; }
    -            ada_log("HOST parsing results in ", url.host.has_value() ? "none" : url.host.value());
    -            // Set url’s host to host, buffer to the empty string, and state to port state.
    -            state = ada::state::PORT;
    -            input_position++;
    -          }
    -          // Otherwise, if one of the following is true:
    -          // - c is the EOF code point, U+002F (/), U+003F (?), or U+0023 (#)
    -          // - url is special and c is U+005C (\)
    -          // The get_host_delimiter_location function either brings us to
    -          // the colon outside of the bracket, or to one of those characters.
    -          else {
    +#include 
    +#include 
    +#include 
     
    -            // If url is special and host_view is the empty string, validation error, return failure.
    -            if (url.is_special() && host_view.empty()) {
    -              url.is_valid = false;
    -              return url;
    -            }
    +namespace ada {
     
    -            // Let host be the result of host parsing host_view with url is not special.
    -            if (host_view.empty()) {
    -              url.host = "";
    -            } else {
    -              if(!url.parse_host(host_view)) { return url; }
    -            }
    -            // Set url’s host to host, and state to path start state.
    -            state = ada::state::PATH_START;
    -          }
    +bool url::parse_opaque_host(std::string_view input) {
    +  ada_log("parse_opaque_host ", input, "[", input.size(), " bytes]");
    +  if (std::any_of(input.begin(), input.end(),
    +                  ada::unicode::is_forbidden_host_code_point)) {
    +    return is_valid = false;
    +  }
     
    -          break;
    -        }
    -        case ada::state::OPAQUE_PATH: {
    -          ada_log("OPAQUE_PATH ", helpers::substring(url_data, input_position));
    -          std::string_view view = helpers::substring(url_data, input_position);
    -          // If c is U+003F (?), then set url’s query to the empty string and state to query state.
    -          size_t location = view.find('?');
    -          if(location != std::string_view::npos) {
    -            view.remove_suffix(view.size() - location);
    -            state = ada::state::QUERY;
    -            input_position += location + 1;
    -          } else {
    -            input_position = input_size + 1;
    -          }
    -          url.has_opaque_path = true;
    -          url.path = unicode::percent_encode(view, character_sets::C0_CONTROL_PERCENT_ENCODE);
    -          break;
    -        }
    -        case ada::state::PORT: {
    -          ada_log("PORT ", helpers::substring(url_data, input_position));
    -          std::string_view port_view = helpers::substring(url_data, input_position);
    -          size_t consumed_bytes = url.parse_port(port_view, true);
    -          input_position += consumed_bytes;
    -          if(!url.is_valid) { return url; }
    -          state = state::PATH_START;
    -          [[fallthrough]];
    -        }
    -        case ada::state::PATH_START: {
    -          ada_log("PATH_START ", helpers::substring(url_data, input_position));
    +  // Return the result of running UTF-8 percent-encode on input using the C0
    +  // control percent-encode set.
    +  host = ada::unicode::percent_encode(
    +      input, ada::character_sets::C0_CONTROL_PERCENT_ENCODE);
    +  return true;
    +}
     
    -          // If url is special, then:
    -          if (url.is_special()) {
    -            // Set state to path state.
    -            state = ada::state::PATH;
    +bool url::parse_ipv4(std::string_view input) {
    +  ada_log("parse_ipv4 ", input, "[", input.size(), " bytes]");
    +  if (input.back() == '.') {
    +    input.remove_suffix(1);
    +  }
    +  size_t digit_count{0};
    +  int pure_decimal_count = 0;  // entries that are decimal
    +  std::string_view original_input =
    +      input;  // we might use this if pure_decimal_count == 4.
    +  uint64_t ipv4{0};
    +  // we could unroll for better performance?
    +  for (; (digit_count < 4) && !(input.empty()); digit_count++) {
    +    uint32_t
    +        segment_result{};  // If any number exceeds 32 bits, we have an error.
    +    bool is_hex = checkers::has_hex_prefix(input);
    +    if (is_hex && ((input.length() == 2) ||
    +                   ((input.length() > 2) && (input[2] == '.')))) {
    +      // special case
    +      segment_result = 0;
    +      input.remove_prefix(2);
    +    } else {
    +      std::from_chars_result r;
    +      if (is_hex) {
    +        r = std::from_chars(input.data() + 2, input.data() + input.size(),
    +                            segment_result, 16);
    +      } else if ((input.length() >= 2) && input[0] == '0' &&
    +                 checkers::is_digit(input[1])) {
    +        r = std::from_chars(input.data() + 1, input.data() + input.size(),
    +                            segment_result, 8);
    +      } else {
    +        pure_decimal_count++;
    +        r = std::from_chars(input.data(), input.data() + input.size(),
    +                            segment_result, 10);
    +      }
    +      if (r.ec != std::errc()) {
    +        return is_valid = false;
    +      }
    +      input.remove_prefix(r.ptr - input.data());
    +    }
    +    if (input.empty()) {
    +      // We have the last value.
    +      // At this stage, ipv4 contains digit_count*8 bits.
    +      // So we have 32-digit_count*8 bits left.
    +      if (segment_result > (uint64_t(1) << (32 - digit_count * 8))) {
    +        return is_valid = false;
    +      }
    +      ipv4 <<= (32 - digit_count * 8);
    +      ipv4 |= segment_result;
    +      goto final;
    +    } else {
    +      // There is more, so that the value must no be larger than 255
    +      // and we must have a '.'.
    +      if ((segment_result > 255) || (input[0] != '.')) {
    +        return is_valid = false;
    +      }
    +      ipv4 <<= 8;
    +      ipv4 |= segment_result;
    +      input.remove_prefix(1);  // remove '.'
    +    }
    +  }
    +  if ((digit_count != 4) || (!input.empty())) {
    +    return is_valid = false;
    +  }
    +final:
    +  // We could also check r.ptr to see where the parsing ended.
    +  if (pure_decimal_count == 4) {
    +    host = original_input;  // The original input was already all decimal and we
    +                            // validated it.
    +  } else {
    +    host = ada::serializers::ipv4(ipv4);  // We have to reserialize the address.
    +  }
    +  return true;
    +}
     
    -            // Optimization: Avoiding going into PATH state improves the performance of urls ending with /.
    -            if (input_position == input_size) {
    -              url.path = "/";
    -              return url;
    -            }
    -            // If c is neither U+002F (/) nor U+005C (\), then decrease pointer by 1.
    -            // We know that (input_position == input_size) is impossible here, because of the previous if-check.
    -            if ((url_data[input_position] != '/') && (url_data[input_position] != '\\')) {
    -              break;
    -            }
    -          }
    -          // Otherwise, if state override is not given and c is U+003F (?),
    -          // set url’s query to the empty string and state to query state.
    -          else if ((input_position != input_size) && (url_data[input_position] == '?')) {
    -            state = ada::state::QUERY;
    -          }
    -          // Otherwise, if c is not the EOF code point:
    -          else if (input_position != input_size) {
    -            // Set state to path state.
    -            state = ada::state::PATH;
    +bool url::parse_ipv6(std::string_view input) {
    +  ada_log("parse_ipv6 ", input, "[", input.size(), " bytes]");
     
    -            // If c is not U+002F (/), then decrease pointer by 1.
    -            if (url_data[input_position] != '/') {
    -              break;
    -            }
    -          }
    +  if (input.empty()) {
    +    return is_valid = false;
    +  }
    +  // Let address be a new IPv6 address whose IPv6 pieces are all 0.
    +  std::array address{};
     
    -          input_position++;
    -          break;
    -        }
    -        case ada::state::PATH: {
    -          std::string_view view = helpers::substring(url_data, input_position);
    -          ada_log("PATH ", helpers::substring(url_data, input_position));
    +  // Let pieceIndex be 0.
    +  int piece_index = 0;
     
    -          // Most time, we do not need percent encoding.
    -          // Furthermore, we can immediately locate the '?'.
    -          size_t locofquestionmark = view.find('?');
    -          if(locofquestionmark != std::string_view::npos) {
    -            state = ada::state::QUERY;
    -            view.remove_suffix(view.size()-locofquestionmark);
    -            input_position += locofquestionmark + 1;
    -          } else {
    -            input_position = input_size + 1;
    -          }
    -          if(!helpers::parse_prepared_path(view, url.get_scheme_type(), url.path)) { return url; }
    -          break;
    -        }
    -        case ada::state::FILE_SLASH: {
    -          ada_log("FILE_SLASH ", helpers::substring(url_data, input_position));
    +  // Let compress be null.
    +  std::optional compress{};
     
    -          // If c is U+002F (/) or U+005C (\), then:
    -          if ((input_position != input_size) && (url_data[input_position] == '/' || url_data[input_position] == '\\')) {
    -            ada_log("FILE_SLASH c is U+002F or U+005C");
    -            // Set state to file host state.
    -            state = ada::state::FILE_HOST;
    -            input_position++;
    -          } else {
    -            ada_log("FILE_SLASH otherwise");
    -            // If base is non-null and base’s scheme is "file", then:
    -            // Note: it is unsafe to do base_url->scheme unless you know that
    -            // base_url_has_value() is true.
    -            if (base_url != nullptr && base_url->get_scheme_type() == ada::scheme::type::FILE) {
    -              // Set url’s host to base’s host.
    -              url.host = base_url->host;
    +  // Let pointer be a pointer for input.
    +  std::string_view::iterator pointer = input.begin();
     
    -              // If the code point substring from pointer to the end of input does not start with
    -              // a Windows drive letter and base’s path[0] is a normalized Windows drive letter,
    -              // then append base’s path[0] to url’s path.
    -              if (!base_url->path.empty()) {
    -                if (!checkers::is_windows_drive_letter(helpers::substring(url_data, input_position))) {
    -                  std::string_view first_base_url_path = base_url->path;
    -                  first_base_url_path.remove_prefix(1);
    -                  size_t loc = first_base_url_path.find('/');
    -                  if(loc != std::string_view::npos) {
    -                    first_base_url_path.remove_suffix(first_base_url_path.size() - loc);
    -                  }
    -                  if (checkers::is_normalized_windows_drive_letter(first_base_url_path)) {
    -                    url.path += '/';
    -                    url.path += first_base_url_path;
    -                  }
    -                }
    -              }
    -            }
    +  // If c is U+003A (:), then:
    +  if (input[0] == ':') {
    +    // If remaining does not start with U+003A (:), validation error, return
    +    // failure.
    +    if (input.size() == 1 || input[1] != ':') {
    +      ada_log("parse_ipv6 starts with : but the rest does not start with :");
    +      return is_valid = false;
    +    }
     
    -            // Set state to path state, and decrease pointer by 1.
    -            state = ada::state::PATH;
    -          }
    +    // Increase pointer by 2.
    +    pointer += 2;
     
    -          break;
    -        }
    -        case ada::state::FILE_HOST: {
    -          std::string_view view = helpers::substring(url_data, input_position);
    -          ada_log("FILE_HOST ", helpers::substring(url_data, input_position));
    +    // Increase pieceIndex by 1 and then set compress to pieceIndex.
    +    compress = ++piece_index;
    +  }
     
    -          size_t location = view.find_first_of("/\\?");
    -          std::string_view file_host_buffer(view.data(), (location != std::string_view::npos) ? location : view.size());
    +  // While c is not the EOF code point:
    +  while (pointer != input.end()) {
    +    // If pieceIndex is 8, validation error, return failure.
    +    if (piece_index == 8) {
    +      ada_log("parse_ipv6 piece_index == 8");
    +      return is_valid = false;
    +    }
     
    -          if (checkers::is_windows_drive_letter(file_host_buffer)) {
    -            state = ada::state::PATH;
    -          } else if (file_host_buffer.empty()) {
    -            // Set url’s host to the empty string.
    -            url.host = "";
    -            // Set state to path start state.
    -            state = ada::state::PATH_START;
    -          } else {
    -            size_t consumed_bytes = file_host_buffer.size();
    -            input_position += consumed_bytes;
    -            // Let host be the result of host parsing buffer with url is not special.
    -            if(!url.parse_host(file_host_buffer)) { return url; }
    +    // If c is U+003A (:), then:
    +    if (*pointer == ':') {
    +      // If compress is non-null, validation error, return failure.
    +      if (compress.has_value()) {
    +        ada_log("parse_ipv6 compress is non-null");
    +        return is_valid = false;
    +      }
     
    -            // If host is "localhost", then set host to the empty string.
    -            if (url.host.has_value() && url.host.value() == "localhost") {
    -              url.host = "";
    -            }
    +      // Increase pointer and pieceIndex by 1, set compress to pieceIndex, and
    +      // then continue.
    +      pointer++;
    +      compress = ++piece_index;
    +      continue;
    +    }
     
    -            // Set buffer to the empty string and state to path start state.
    -            state = ada::state::PATH_START;
    -          }
    +    // Let value and length be 0.
    +    uint16_t value = 0, length = 0;
    +
    +    // While length is less than 4 and c is an ASCII hex digit,
    +    // set value to value × 0x10 + c interpreted as hexadecimal number, and
    +    // increase pointer and length by 1.
    +    while (length < 4 && pointer != input.end() &&
    +           unicode::is_ascii_hex_digit(*pointer)) {
    +      // https://stackoverflow.com/questions/39060852/why-does-the-addition-of-two-shorts-return-an-int
    +      value = uint16_t(value * 0x10 + unicode::convert_hex_to_binary(*pointer));
    +      pointer++;
    +      length++;
    +    }
     
    -          break;
    -        }
    -        case ada::state::FILE: {
    -          ada_log("FILE ", helpers::substring(url_data, input_position));
    -          std::string_view file_view = helpers::substring(url_data, input_position);
    +    // If c is U+002E (.), then:
    +    if (pointer != input.end() && *pointer == '.') {
    +      // If length is 0, validation error, return failure.
    +      if (length == 0) {
    +        ada_log("parse_ipv6 length is 0");
    +        return is_valid = false;
    +      }
     
    -          // Set url’s scheme to "file".
    -          url.set_scheme("file");
    +      // Decrease pointer by length.
    +      pointer -= length;
     
    -          // Set url’s host to the empty string.
    -          url.host = "";
    +      // If pieceIndex is greater than 6, validation error, return failure.
    +      if (piece_index > 6) {
    +        ada_log("parse_ipv6 piece_index > 6");
    +        return is_valid = false;
    +      }
    +
    +      // Let numbersSeen be 0.
    +      int numbers_seen = 0;
     
    -          // If c is U+002F (/) or U+005C (\), then:
    -          if (input_position != input_size && (url_data[input_position] == '/' || url_data[input_position] == '\\')) {
    -            ada_log("FILE c is U+002F or U+005C");
    -            // Set state to file slash state.
    -            state = ada::state::FILE_SLASH;
    +      // While c is not the EOF code point:
    +      while (pointer != input.end()) {
    +        // Let ipv4Piece be null.
    +        std::optional ipv4_piece{};
    +
    +        // If numbersSeen is greater than 0, then:
    +        if (numbers_seen > 0) {
    +          // If c is a U+002E (.) and numbersSeen is less than 4, then increase
    +          // pointer by 1.
    +          if (*pointer == '.' && numbers_seen < 4) {
    +            pointer++;
               }
    -          // Otherwise, if base is non-null and base’s scheme is "file":
    -          else if (base_url != nullptr && base_url->get_scheme_type() == ada::scheme::type::FILE) {
    -            // Set url’s host to base’s host, url’s path to a clone of base’s path, and url’s query to base’s query.
    -            ada_log("FILE base non-null");
    -            url.host = base_url->host;
    -            url.path = base_url->path;
    -            url.has_opaque_path = base_url->has_opaque_path;
    -            url.query = base_url->query;
    +          // Otherwise, validation error, return failure.
    +          else {
    +            ada_log("parse_ipv6 Otherwise, validation error, return failure");
    +            return is_valid = false;
    +          }
    +        }
     
    -            // If c is U+003F (?), then set url’s query to the empty string and state to query state.
    -            if (input_position != input_size && url_data[input_position] == '?') {
    -              state = ada::state::QUERY;
    -            }
    -            // Otherwise, if c is not the EOF code point:
    -            else if (input_position != input_size) {
    -              // Set url’s query to null.
    -              url.query = std::nullopt;
    -
    -              // If the code point substring from pointer to the end of input does not start with a
    -              // Windows drive letter, then shorten url’s path.
    -              if (!checkers::is_windows_drive_letter(file_view)) {
    -                helpers::shorten_path(url.path, url.get_scheme_type());
    -              }
    -              // Otherwise:
    -              else {
    -                // Set url’s path to an empty list.
    -                url.path.clear();
    -                url.has_opaque_path = true;
    -              }
    +        // If c is not an ASCII digit, validation error, return failure.
    +        if (pointer == input.end() || !checkers::is_digit(*pointer)) {
    +          ada_log(
    +              "parse_ipv6 If c is not an ASCII digit, validation error, return "
    +              "failure");
    +          return is_valid = false;
    +        }
     
    -              // Set state to path state and decrease pointer by 1.
    -              state = ada::state::PATH;
    -              break;
    -            }
    +        // While c is an ASCII digit:
    +        while (pointer != input.end() && checkers::is_digit(*pointer)) {
    +          // Let number be c interpreted as decimal number.
    +          int number = *pointer - '0';
    +
    +          // If ipv4Piece is null, then set ipv4Piece to number.
    +          if (!ipv4_piece.has_value()) {
    +            ipv4_piece = number;
               }
    -          // Otherwise, set state to path state, and decrease pointer by 1.
    +          // Otherwise, if ipv4Piece is 0, validation error, return failure.
    +          else if (ipv4_piece == 0) {
    +            ada_log("parse_ipv6 if ipv4Piece is 0, validation error");
    +            return is_valid = false;
    +          }
    +          // Otherwise, set ipv4Piece to ipv4Piece × 10 + number.
               else {
    -            ada_log("FILE go to path");
    -            state = ada::state::PATH;
    -            break;
    +            ipv4_piece = *ipv4_piece * 10 + number;
               }
     
    -          input_position++;
    -          break;
    +          // If ipv4Piece is greater than 255, validation error, return failure.
    +          if (ipv4_piece > 255) {
    +            ada_log("parse_ipv6 ipv4_piece > 255");
    +            return is_valid = false;
    +          }
    +
    +          // Increase pointer by 1.
    +          pointer++;
    +        }
    +
    +        // Set address[pieceIndex] to address[pieceIndex] × 0x100 + ipv4Piece.
    +        // https://stackoverflow.com/questions/39060852/why-does-the-addition-of-two-shorts-return-an-int
    +        address[piece_index] =
    +            uint16_t(address[piece_index] * 0x100 + *ipv4_piece);
    +
    +        // Increase numbersSeen by 1.
    +        numbers_seen++;
    +
    +        // If numbersSeen is 2 or 4, then increase pieceIndex by 1.
    +        if (numbers_seen == 2 || numbers_seen == 4) {
    +          piece_index++;
             }
    -        default:
    -          ada::unreachable();
           }
    +
    +      // If numbersSeen is not 4, validation error, return failure.
    +      if (numbers_seen != 4) {
    +        return is_valid = false;
    +      }
    +
    +      // Break.
    +      break;
         }
    -    ada_log("returning ", url.to_string());
    -    return url;
    +    // Otherwise, if c is U+003A (:):
    +    else if ((pointer != input.end()) && (*pointer == ':')) {
    +      // Increase pointer by 1.
    +      pointer++;
    +
    +      // If c is the EOF code point, validation error, return failure.
    +      if (pointer == input.end()) {
    +        ada_log(
    +            "parse_ipv6 If c is the EOF code point, validation error, return "
    +            "failure");
    +        return is_valid = false;
    +      }
    +    }
    +    // Otherwise, if c is not the EOF code point, validation error, return
    +    // failure.
    +    else if (pointer != input.end()) {
    +      ada_log(
    +          "parse_ipv6 Otherwise, if c is not the EOF code point, validation "
    +          "error, return failure");
    +      return is_valid = false;
    +    }
    +
    +    // Set address[pieceIndex] to value.
    +    address[piece_index] = value;
    +
    +    // Increase pieceIndex by 1.
    +    piece_index++;
       }
     
    -} // namespace ada::parser
    -/* end file src/parser.cpp */
    +  // If compress is non-null, then:
    +  if (compress.has_value()) {
    +    // Let swaps be pieceIndex − compress.
    +    int swaps = piece_index - *compress;
    +
    +    // Set pieceIndex to 7.
    +    piece_index = 7;
    +
    +    // While pieceIndex is not 0 and swaps is greater than 0,
    +    // swap address[pieceIndex] with address[compress + swaps − 1], and then
    +    // decrease both pieceIndex and swaps by 1.
    +    while (piece_index != 0 && swaps > 0) {
    +      std::swap(address[piece_index], address[*compress + swaps - 1]);
    +      piece_index--;
    +      swaps--;
    +    }
    +  }
    +  // Otherwise, if compress is null and pieceIndex is not 8, validation error,
    +  // return failure.
    +  else if (piece_index != 8) {
    +    ada_log(
    +        "parse_ipv6 if compress is null and pieceIndex is not 8, validation "
    +        "error, return failure");
    +    return is_valid = false;
    +  }
    +  host = ada::serializers::ipv6(address);
    +  ada_log("parse_ipv6 ", *host);
    +  return true;
    +}
    +
    +template 
    +ada_really_inline bool url::parse_scheme(const std::string_view input) {
    +  auto parsed_type = ada::scheme::get_scheme_type(input);
    +  bool is_input_special = (parsed_type != ada::scheme::NOT_SPECIAL);
    +  /**
    +   * In the common case, we will immediately recognize a special scheme (e.g.,
    +   *http, https), in which case, we can go really fast.
    +   **/
    +  if (is_input_special) {  // fast path!!!
    +    if (has_state_override) {
    +      // If url’s scheme is not a special scheme and buffer is a special scheme,
    +      // then return.
    +      if (is_special() != is_input_special) {
    +        return true;
    +      }
    +
    +      // If url includes credentials or has a non-null port, and buffer is
    +      // "file", then return.
    +      if ((includes_credentials() || port.has_value()) &&
    +          parsed_type == ada::scheme::type::FILE) {
    +        return true;
    +      }
    +
    +      // If url’s scheme is "file" and its host is an empty host, then return.
    +      // An empty host is the empty string.
    +      if (type == ada::scheme::type::FILE && host.has_value() &&
    +          host.value().empty()) {
    +        return true;
    +      }
    +    }
    +
    +    type = parsed_type;
    +
    +    if (has_state_override) {
    +      // This is uncommon.
    +      uint16_t urls_scheme_port = get_special_port();
    +
    +      if (urls_scheme_port) {
    +        // If url’s port is url’s scheme’s default port, then set url’s port to
    +        // null.
    +        if (port.has_value() && *port == urls_scheme_port) {
    +          port = std::nullopt;
    +        }
    +      }
    +    }
    +  } else {  // slow path
    +    std::string _buffer = std::string(input);
    +    // Next function is only valid if the input is ASCII and returns false
    +    // otherwise, but it seems that we always have ascii content so we do not
    +    // need to check the return value.
    +    // bool is_ascii =
    +    unicode::to_lower_ascii(_buffer.data(), _buffer.size());
    +
    +    if (has_state_override) {
    +      // If url’s scheme is a special scheme and buffer is not a special scheme,
    +      // then return. If url’s scheme is not a special scheme and buffer is a
    +      // special scheme, then return.
    +      if (is_special() != ada::scheme::is_special(_buffer)) {
    +        return true;
    +      }
    +
    +      // If url includes credentials or has a non-null port, and buffer is
    +      // "file", then return.
    +      if ((includes_credentials() || port.has_value()) && _buffer == "file") {
    +        return true;
    +      }
    +
    +      // If url’s scheme is "file" and its host is an empty host, then return.
    +      // An empty host is the empty string.
    +      if (type == ada::scheme::type::FILE && host.has_value() &&
    +          host.value().empty()) {
    +        return true;
    +      }
    +    }
    +
    +    set_scheme(std::move(_buffer));
    +
    +    if (has_state_override) {
    +      // This is uncommon.
    +      uint16_t urls_scheme_port = get_special_port();
    +
    +      if (urls_scheme_port) {
    +        // If url’s port is url’s scheme’s default port, then set url’s port to
    +        // null.
    +        if (port.has_value() && *port == urls_scheme_port) {
    +          port = std::nullopt;
    +        }
    +      }
    +    }
    +  }
    +
    +  return true;
    +}
    +
    +ada_really_inline bool url::parse_host(std::string_view input) {
    +  ada_log("parse_host ", input, "[", input.size(), " bytes]");
    +  if (input.empty()) {
    +    return is_valid = false;
    +  }  // technically unnecessary.
    +  // If input starts with U+005B ([), then:
    +  if (input[0] == '[') {
    +    // If input does not end with U+005D (]), validation error, return failure.
    +    if (input.back() != ']') {
    +      return is_valid = false;
    +    }
    +    ada_log("parse_host ipv6");
    +
    +    // Return the result of IPv6 parsing input with its leading U+005B ([) and
    +    // trailing U+005D (]) removed.
    +    input.remove_prefix(1);
    +    input.remove_suffix(1);
    +    return parse_ipv6(input);
    +  }
    +
    +  // If isNotSpecial is true, then return the result of opaque-host parsing
    +  // input.
    +  if (!is_special()) {
    +    return parse_opaque_host(input);
    +  }
    +  // Let domain be the result of running UTF-8 decode without BOM on the
    +  // percent-decoding of input. Let asciiDomain be the result of running domain
    +  // to ASCII with domain and false. The most common case is an ASCII input, in
    +  // which case we do not need to call the expensive 'to_ascii' if a few
    +  // conditions are met: no '%' and no 'xn-' subsequence.
    +  std::string buffer = std::string(input);
    +  // This next function checks that the result is ascii, but we are going to
    +  // to check anyhow with is_forbidden.
    +  // bool is_ascii =
    +  unicode::to_lower_ascii(buffer.data(), buffer.size());
    +  bool is_forbidden = unicode::contains_forbidden_domain_code_point(
    +      buffer.data(), buffer.size());
    +  if (is_forbidden == 0 && buffer.find("xn-") == std::string_view::npos) {
    +    // fast path
    +    host = std::move(buffer);
    +    if (checkers::is_ipv4(host.value())) {
    +      ada_log("parse_host fast path ipv4");
    +      return parse_ipv4(host.value());
    +    }
    +    ada_log("parse_host fast path ", *host);
    +    return true;
    +  }
    +  ada_log("parse_host calling to_ascii");
    +  is_valid = ada::unicode::to_ascii(host, input, input.find('%'));
    +  if (!is_valid) {
    +    ada_log("parse_host to_ascii returns false");
    +    return is_valid = false;
    +  }
    +
    +  if (std::any_of(host.value().begin(), host.value().end(),
    +                  ada::unicode::is_forbidden_domain_code_point)) {
    +    host = std::nullopt;
    +    return is_valid = false;
    +  }
    +
    +  // If asciiDomain ends in a number, then return the result of IPv4 parsing
    +  // asciiDomain.
    +  if (checkers::is_ipv4(host.value())) {
    +    ada_log("parse_host got ipv4", *host);
    +    return parse_ipv4(host.value());
    +  }
    +
    +  return true;
    +}
    +
    +ada_really_inline void url::parse_path(std::string_view input) {
    +  ada_log("parse_path ", input);
    +  std::string tmp_buffer;
    +  std::string_view internal_input;
    +  if (unicode::has_tabs_or_newline(input)) {
    +    tmp_buffer = input;
    +    // Optimization opportunity: Instead of copying and then pruning, we could
    +    // just directly build the string from user_input.
    +    helpers::remove_ascii_tab_or_newline(tmp_buffer);
    +    internal_input = tmp_buffer;
    +  } else {
    +    internal_input = input;
    +  }
    +
    +  // If url is special, then:
    +  if (is_special()) {
    +    if (internal_input.empty()) {
    +      path = "/";
    +    } else if ((internal_input[0] == '/') || (internal_input[0] == '\\')) {
    +      helpers::parse_prepared_path(internal_input.substr(1), type, path);
    +      return;
    +    } else {
    +      helpers::parse_prepared_path(internal_input, type, path);
    +      return;
    +    }
    +  } else if (!internal_input.empty()) {
    +    if (internal_input[0] == '/') {
    +      helpers::parse_prepared_path(internal_input.substr(1), type, path);
    +      return;
    +    } else {
    +      helpers::parse_prepared_path(internal_input, type, path);
    +      return;
    +    }
    +  } else {
    +    if (!host.has_value()) {
    +      path = "/";
    +    }
    +  }
    +  return;
    +}
    +
    +std::string url::to_string() const {
    +  if (!is_valid) {
    +    return "null";
    +  }
    +  std::string answer;
    +  auto back = std::back_insert_iterator(answer);
    +  answer.append("{\n");
    +  answer.append("\t\"protocol\":\"");
    +  helpers::encode_json(get_protocol(), back);
    +  answer.append("\",\n");
    +  if (includes_credentials()) {
    +    answer.append("\t\"username\":\"");
    +    helpers::encode_json(username, back);
    +    answer.append("\",\n");
    +    answer.append("\t\"password\":\"");
    +    helpers::encode_json(password, back);
    +    answer.append("\",\n");
    +  }
    +  if (host.has_value()) {
    +    answer.append("\t\"host\":\"");
    +    helpers::encode_json(host.value(), back);
    +    answer.append("\",\n");
    +  }
    +  if (port.has_value()) {
    +    answer.append("\t\"port\":\"");
    +    answer.append(std::to_string(port.value()));
    +    answer.append("\",\n");
    +  }
    +  answer.append("\t\"path\":\"");
    +  helpers::encode_json(path, back);
    +  answer.append("\",\n");
    +  answer.append("\t\"opaque path\":");
    +  answer.append((has_opaque_path ? "true" : "false"));
    +  if (base_search_has_value()) {
    +    answer.append(",\n");
    +    answer.append("\t\"query\":\"");
    +    helpers::encode_json(query.value(), back);
    +    answer.append("\"");
    +  }
    +  if (fragment.has_value()) {
    +    answer.append(",\n");
    +    answer.append("\t\"fragment\":\"");
    +    helpers::encode_json(fragment.value(), back);
    +    answer.append("\"");
    +  }
    +  answer.append("\n}");
    +  return answer;
    +}
    +
    +[[nodiscard]] bool url::has_valid_domain() const noexcept {
    +  if (!host.has_value()) {
    +    return false;
    +  }
    +  return checkers::verify_dns_length(host.value());
    +}
    +
    +}  // namespace ada
    +/* end file src/url.cpp */
    +/* begin file src/url-getters.cpp */
    +/**
    + * @file url-getters.cpp
    + * Includes all the getters of `ada::url`
    + */
    +
    +#include 
    +#include 
    +
    +namespace ada {
    +[[nodiscard]] std::string url::get_origin() const noexcept {
    +  if (is_special()) {
    +    // Return a new opaque origin.
    +    if (type == scheme::FILE) {
    +      return "null";
    +    }
    +    return ada::helpers::concat(get_protocol(), "//", get_host());
    +  }
    +
    +  if (non_special_scheme == "blob") {
    +    if (!path.empty()) {
    +      auto result = ada::parse(path);
    +      if (result && result->is_special()) {
    +        return ada::helpers::concat(result->get_protocol(), "//",
    +                                    result->get_host());
    +      }
    +    }
    +  }
    +
    +  // Return a new opaque origin.
    +  return "null";
    +}
    +
    +[[nodiscard]] std::string url::get_protocol() const noexcept {
    +  if (is_special()) {
    +    return helpers::concat(ada::scheme::details::is_special_list[type], ":");
    +  }
    +  // We only move the 'scheme' if it is non-special.
    +  return helpers::concat(non_special_scheme, ":");
    +}
    +
    +[[nodiscard]] std::string url::get_host() const noexcept {
    +  // If url’s host is null, then return the empty string.
    +  // If url’s port is null, return url’s host, serialized.
    +  // Return url’s host, serialized, followed by U+003A (:) and url’s port,
    +  // serialized.
    +  if (!host.has_value()) {
    +    return "";
    +  }
    +  if (port.has_value()) {
    +    return host.value() + ":" + get_port();
    +  }
    +  return host.value();
    +}
    +
    +[[nodiscard]] std::string url::get_hostname() const noexcept {
    +  return host.value_or("");
    +}
    +
    +[[nodiscard]] const std::string_view url::get_pathname() const noexcept {
    +  return path;
    +}
    +
    +[[nodiscard]] std::string url::get_search() const noexcept {
    +  // If this’s URL’s query is either null or the empty string, then return the
    +  // empty string. Return U+003F (?), followed by this’s URL’s query.
    +  return (!query.has_value() || (query.value().empty())) ? ""
    +                                                         : "?" + query.value();
    +}
    +
    +[[nodiscard]] const std::string& url::get_username() const noexcept {
    +  return username;
    +}
    +
    +[[nodiscard]] const std::string& url::get_password() const noexcept {
    +  return password;
    +}
    +
    +[[nodiscard]] std::string url::get_port() const noexcept {
    +  return port.has_value() ? std::to_string(port.value()) : "";
    +}
    +
    +[[nodiscard]] std::string url::get_hash() const noexcept {
    +  // If this’s URL’s fragment is either null or the empty string, then return
    +  // the empty string. Return U+0023 (#), followed by this’s URL’s fragment.
    +  return (!fragment.has_value() || (fragment.value().empty()))
    +             ? ""
    +             : "#" + fragment.value();
    +}
    +
    +}  // namespace ada
    +/* end file src/url-getters.cpp */
    +/* begin file src/url-setters.cpp */
    +/**
    + * @file url-setters.cpp
    + * Includes all the setters of `ada::url`
    + */
    +
    +#include 
    +#include 
    +
    +namespace ada {
    +
    +template 
    +bool url::set_host_or_hostname(const std::string_view input) {
    +  if (has_opaque_path) {
    +    return false;
    +  }
    +
    +  std::optional previous_host = host;
    +  std::optional previous_port = port;
    +
    +  size_t host_end_pos = input.find('#');
    +  std::string _host(input.data(), host_end_pos != std::string_view::npos
    +                                      ? host_end_pos
    +                                      : input.size());
    +  helpers::remove_ascii_tab_or_newline(_host);
    +  std::string_view new_host(_host);
    +
    +  // If url's scheme is "file", then set state to file host state, instead of
    +  // host state.
    +  if (type != ada::scheme::type::FILE) {
    +    std::string_view host_view(_host.data(), _host.length());
    +    auto [location, found_colon] =
    +        helpers::get_host_delimiter_location(is_special(), host_view);
    +
    +    // Otherwise, if c is U+003A (:) and insideBrackets is false, then:
    +    // Note: the 'found_colon' value is true if and only if a colon was
    +    // encountered while not inside brackets.
    +    if (found_colon) {
    +      if (override_hostname) {
    +        return false;
    +      }
    +      std::string_view buffer = new_host.substr(location + 1);
    +      if (!buffer.empty()) {
    +        set_port(buffer);
    +      }
    +    }
    +    // If url is special and host_view is the empty string, validation error,
    +    // return failure. Otherwise, if state override is given, host_view is the
    +    // empty string, and either url includes credentials or url’s port is
    +    // non-null, return.
    +    else if (host_view.empty() &&
    +             (is_special() || includes_credentials() || port.has_value())) {
    +      return false;
    +    }
    +
    +    // Let host be the result of host parsing host_view with url is not special.
    +    if (host_view.empty()) {
    +      host = "";
    +      return true;
    +    }
    +
    +    bool succeeded = parse_host(host_view);
    +    if (!succeeded) {
    +      host = previous_host;
    +      update_base_port(previous_port);
    +    }
    +    return succeeded;
    +  }
    +
    +  size_t location = new_host.find_first_of("/\\?");
    +  if (location != std::string_view::npos) {
    +    new_host.remove_suffix(new_host.length() - location);
    +  }
    +
    +  if (new_host.empty()) {
    +    // Set url’s host to the empty string.
    +    host = "";
    +  } else {
    +    // Let host be the result of host parsing buffer with url is not special.
    +    if (!parse_host(new_host)) {
    +      host = previous_host;
    +      update_base_port(previous_port);
    +      return false;
    +    }
    +
    +    // If host is "localhost", then set host to the empty string.
    +    if (host.has_value() && host.value() == "localhost") {
    +      host = "";
    +    }
    +  }
    +  return true;
    +}
    +
    +bool url::set_host(const std::string_view input) {
    +  return set_host_or_hostname(input);
    +}
    +
    +bool url::set_hostname(const std::string_view input) {
    +  return set_host_or_hostname(input);
    +}
    +
    +bool url::set_username(const std::string_view input) {
    +  if (cannot_have_credentials_or_port()) {
    +    return false;
    +  }
    +  username = ada::unicode::percent_encode(
    +      input, character_sets::USERINFO_PERCENT_ENCODE);
    +  return true;
    +}
    +
    +bool url::set_password(const std::string_view input) {
    +  if (cannot_have_credentials_or_port()) {
    +    return false;
    +  }
    +  password = ada::unicode::percent_encode(
    +      input, character_sets::USERINFO_PERCENT_ENCODE);
    +  return true;
    +}
    +
    +bool url::set_port(const std::string_view input) {
    +  if (cannot_have_credentials_or_port()) {
    +    return false;
    +  }
    +  std::string trimmed(input);
    +  helpers::remove_ascii_tab_or_newline(trimmed);
    +  if (trimmed.empty()) {
    +    port = std::nullopt;
    +    return true;
    +  }
    +  // Input should not start with control characters.
    +  if (ada::unicode::is_c0_control_or_space(trimmed.front())) {
    +    return false;
    +  }
    +  // Input should contain at least one ascii digit.
    +  if (input.find_first_of("0123456789") == std::string_view::npos) {
    +    return false;
    +  }
    +
    +  // Revert changes if parse_port fails.
    +  std::optional previous_port = port;
    +  parse_port(trimmed);
    +  if (is_valid) {
    +    return true;
    +  }
    +  port = previous_port;
    +  is_valid = true;
    +  return false;
    +}
    +
    +void url::set_hash(const std::string_view input) {
    +  if (input.empty()) {
    +    fragment = std::nullopt;
    +    helpers::strip_trailing_spaces_from_opaque_path(*this);
    +    return;
    +  }
    +
    +  std::string new_value;
    +  new_value = input[0] == '#' ? input.substr(1) : input;
    +  helpers::remove_ascii_tab_or_newline(new_value);
    +  fragment = unicode::percent_encode(
    +      new_value, ada::character_sets::FRAGMENT_PERCENT_ENCODE);
    +  return;
    +}
    +
    +void url::set_search(const std::string_view input) {
    +  if (input.empty()) {
    +    query = std::nullopt;
    +    helpers::strip_trailing_spaces_from_opaque_path(*this);
    +    return;
    +  }
    +
    +  std::string new_value;
    +  new_value = input[0] == '?' ? input.substr(1) : input;
    +  helpers::remove_ascii_tab_or_newline(new_value);
    +
    +  auto query_percent_encode_set =
    +      is_special() ? ada::character_sets::SPECIAL_QUERY_PERCENT_ENCODE
    +                   : ada::character_sets::QUERY_PERCENT_ENCODE;
    +
    +  query = ada::unicode::percent_encode(std::string_view(new_value),
    +                                       query_percent_encode_set);
    +}
    +
    +bool url::set_pathname(const std::string_view input) {
    +  if (has_opaque_path) {
    +    return false;
    +  }
    +  path = "";
    +  parse_path(input);
    +  return true;
    +}
    +
    +bool url::set_protocol(const std::string_view input) {
    +  std::string view(input);
    +  helpers::remove_ascii_tab_or_newline(view);
    +  if (view.empty()) {
    +    return true;
    +  }
    +
    +  // Schemes should start with alpha values.
    +  if (!checkers::is_alpha(view[0])) {
    +    return false;
    +  }
    +
    +  view.append(":");
    +
    +  std::string::iterator pointer =
    +      std::find_if_not(view.begin(), view.end(), unicode::is_alnum_plus);
    +
    +  if (pointer != view.end() && *pointer == ':') {
    +    return parse_scheme(
    +        std::string_view(view.data(), pointer - view.begin()));
    +  }
    +  return false;
    +}
    +
    +bool url::set_href(const std::string_view input) {
    +  ada::result out = ada::parse(input);
    +
    +  if (out) {
    +    username = out->username;
    +    password = out->password;
    +    host = out->host;
    +    port = out->port;
    +    path = out->path;
    +    query = out->query;
    +    fragment = out->fragment;
    +    type = out->type;
    +    non_special_scheme = out->non_special_scheme;
    +    has_opaque_path = out->has_opaque_path;
    +  }
    +
    +  return out.has_value();
    +}
    +
    +}  // namespace ada
    +/* end file src/url-setters.cpp */
    +/* begin file src/parser.cpp */
    +
    +#include 
    +#include 
    +
    +namespace ada::parser {
    +
    +template 
    +result_type parse_url(std::string_view user_input,
    +                      const result_type* base_url) {
    +  // We can specialize the implementation per type.
    +  // Important: result_type_is_ada_url is evaluated at *compile time*. This
    +  // means that doing if constexpr(result_type_is_ada_url) { something } else {
    +  // something else } is free (at runtime). This means that ada::url_aggregator
    +  // and ada::url **do not have to support the exact same API**.
    +  constexpr bool result_type_is_ada_url =
    +      std::is_same::value;
    +  constexpr bool result_type_is_ada_url_aggregator =
    +      std::is_same::value;
    +  static_assert(result_type_is_ada_url ||
    +                result_type_is_ada_url_aggregator);  // We don't support
    +                                                     // anything else for now.
    +
    +  ada_log("ada::parser::parse_url('", user_input, "' [", user_input.size(),
    +          " bytes],", (base_url != nullptr ? base_url->to_string() : "null"),
    +          ")");
    +
    +  ada::state state = ada::state::SCHEME_START;
    +  result_type url{};
    +
    +  // We refuse to parse URL strings that exceed 4GB. Such strings are almost
    +  // surely the result of a bug or are otherwise a security concern.
    +  if (user_input.size() >=
    +      std::string_view::size_type(std::numeric_limits::max)) {
    +    url.is_valid = false;
    +  }
    +
    +  // If we are provided with an invalid base, or the optional_url was invalid,
    +  // we must return.
    +  if (base_url != nullptr) {
    +    url.is_valid &= base_url->is_valid;
    +  }
    +  if (!url.is_valid) {
    +    return url;
    +  }
    +  if constexpr (result_type_is_ada_url_aggregator) {
    +    // Most of the time, we just need user_input.size().
    +    // In some instances, we may need a bit more.
    +    ///////////////////////////
    +    // This is *very* important. This line should be removed
    +    // hastily. There are principled reasons why reserve is important
    +    // for performance. If you have a benchmark with small inputs,
    +    // it may not matter, but in other instances, it could.
    +    ////
    +    // This rounds up to the next power of two.
    +    uint32_t reserve_capacity =
    +        (0xFFFFFFFF >> helpers::leading_zeroes(uint32_t(user_input.size()))) +
    +        1;
    +    url.reserve(reserve_capacity);
    +    //
    +    //
    +    //
    +  }
    +  std::string tmp_buffer;
    +  std::string_view internal_input;
    +  if (unicode::has_tabs_or_newline(user_input)) {
    +    tmp_buffer = user_input;
    +    // Optimization opportunity: Instead of copying and then pruning, we could
    +    // just directly build the string from user_input.
    +    helpers::remove_ascii_tab_or_newline(tmp_buffer);
    +    internal_input = tmp_buffer;
    +  } else {
    +    internal_input = user_input;
    +  }
    +
    +  // Leading and trailing control characters are uncommon and easy to deal with
    +  // (no performance concern).
    +  std::string_view url_data = internal_input;
    +  helpers::trim_c0_whitespace(url_data);
    +
    +  // Optimization opportunity. Most websites do not have fragment.
    +  std::optional fragment = helpers::prune_fragment(url_data);
    +  // We add it last so that an implementation like ada::url_aggregator
    +  // can append it last to its internal buffer, thus improving performance.
    +
    +  // Here url_data no longer has its fragment.
    +  // We are going to access the data from url_data (it is immutable).
    +  // At any given time, we are pointing at byte 'input_position' in url_data.
    +  // The input_position variable should range from 0 to input_size.
    +  // It is illegal to access url_data at input_size.
    +  size_t input_position = 0;
    +  const size_t input_size = url_data.size();
    +  // Keep running the following state machine by switching on state.
    +  // If after a run pointer points to the EOF code point, go to the next step.
    +  // Otherwise, increase pointer by 1 and continue with the state machine.
    +  // We never decrement input_position.
    +  while (input_position <= input_size) {
    +    ada_log("In parsing at ", input_position, " out of ", input_size,
    +            " in state ", ada::to_string(state));
    +    switch (state) {
    +      case ada::state::SCHEME_START: {
    +        ada_log("SCHEME_START ", helpers::substring(url_data, input_position));
    +        // If c is an ASCII alpha, append c, lowercased, to buffer, and set
    +        // state to scheme state.
    +        if ((input_position != input_size) &&
    +            checkers::is_alpha(url_data[input_position])) {
    +          state = ada::state::SCHEME;
    +          input_position++;
    +        } else {
    +          // Otherwise, if state override is not given, set state to no scheme
    +          // state and decrease pointer by 1.
    +          state = ada::state::NO_SCHEME;
    +        }
    +        break;
    +      }
    +      case ada::state::SCHEME: {
    +        ada_log("SCHEME ", helpers::substring(url_data, input_position));
    +        // If c is an ASCII alphanumeric, U+002B (+), U+002D (-), or U+002E (.),
    +        // append c, lowercased, to buffer.
    +        while ((input_position != input_size) &&
    +               (ada::unicode::is_alnum_plus(url_data[input_position]))) {
    +          input_position++;
    +        }
    +        // Otherwise, if c is U+003A (:), then:
    +        if ((input_position != input_size) &&
    +            (url_data[input_position] == ':')) {
    +          ada_log("SCHEME the scheme should be ",
    +                  url_data.substr(0, input_position));
    +          if constexpr (result_type_is_ada_url) {
    +            if (!url.parse_scheme(url_data.substr(0, input_position))) {
    +              return url;
    +            }
    +          } else {
    +            // we pass the colon along instead of painfully adding it back.
    +            if (!url.parse_scheme_with_colon(
    +                    url_data.substr(0, input_position + 1))) {
    +              return url;
    +            }
    +          }
    +          ada_log("SCHEME the scheme is ", url.get_protocol());
    +
    +          // If url’s scheme is "file", then:
    +          if (url.type == ada::scheme::type::FILE) {
    +            // Set state to file state.
    +            state = ada::state::FILE;
    +          }
    +          // Otherwise, if url is special, base is non-null, and base’s scheme
    +          // is url’s scheme: Note: Doing base_url->scheme is unsafe if base_url
    +          // != nullptr is false.
    +          else if (url.is_special() && base_url != nullptr &&
    +                   base_url->type == url.type) {
    +            // Set state to special relative or authority state.
    +            state = ada::state::SPECIAL_RELATIVE_OR_AUTHORITY;
    +          }
    +          // Otherwise, if url is special, set state to special authority
    +          // slashes state.
    +          else if (url.is_special()) {
    +            state = ada::state::SPECIAL_AUTHORITY_SLASHES;
    +          }
    +          // Otherwise, if remaining starts with an U+002F (/), set state to
    +          // path or authority state and increase pointer by 1.
    +          else if (input_position + 1 < input_size &&
    +                   url_data[input_position + 1] == '/') {
    +            state = ada::state::PATH_OR_AUTHORITY;
    +            input_position++;
    +          }
    +          // Otherwise, set url’s path to the empty string and set state to
    +          // opaque path state.
    +          else {
    +            state = ada::state::OPAQUE_PATH;
    +          }
    +        }
    +        // Otherwise, if state override is not given, set buffer to the empty
    +        // string, state to no scheme state, and start over (from the first code
    +        // point in input).
    +        else {
    +          state = ada::state::NO_SCHEME;
    +          input_position = 0;
    +          break;
    +        }
    +        input_position++;
    +        break;
    +      }
    +      case ada::state::NO_SCHEME: {
    +        ada_log("NO_SCHEME ", helpers::substring(url_data, input_position));
    +        // If base is null, or base has an opaque path and c is not U+0023 (#),
    +        // validation error, return failure.
    +        if (base_url == nullptr ||
    +            (base_url->has_opaque_path && !fragment.has_value())) {
    +          ada_log("NO_SCHEME validation error");
    +          url.is_valid = false;
    +          return url;
    +        }
    +        // Otherwise, if base has an opaque path and c is U+0023 (#),
    +        // set url’s scheme to base’s scheme, url’s path to base’s path, url’s
    +        // query to base’s query, and set state to fragment state.
    +        else if (base_url->has_opaque_path && fragment.has_value() &&
    +                 input_position == input_size) {
    +          ada_log("NO_SCHEME opaque base with fragment");
    +          url.copy_scheme(*base_url);
    +          url.has_opaque_path = base_url->has_opaque_path;
    +
    +          if constexpr (result_type_is_ada_url) {
    +            url.path = base_url->path;
    +            url.query = base_url->query;
    +          } else {
    +            url.update_base_pathname(base_url->get_pathname());
    +            url.update_base_search(base_url->get_search());
    +          }
    +          url.update_unencoded_base_hash(*fragment);
    +          return url;
    +        }
    +        // Otherwise, if base’s scheme is not "file", set state to relative
    +        // state and decrease pointer by 1.
    +        else if (base_url->type != ada::scheme::type::FILE) {
    +          ada_log("NO_SCHEME non-file relative path");
    +          state = ada::state::RELATIVE_SCHEME;
    +        }
    +        // Otherwise, set state to file state and decrease pointer by 1.
    +        else {
    +          ada_log("NO_SCHEME file base type");
    +          state = ada::state::FILE;
    +        }
    +        break;
    +      }
    +      case ada::state::AUTHORITY: {
    +        ada_log("AUTHORITY ", helpers::substring(url_data, input_position));
    +        // most URLs have no @. Having no @ tells us that we don't have to worry
    +        // about AUTHORITY. Of course, we could have @ and still not have to
    +        // worry about AUTHORITY.
    +        // TODO: Instead of just collecting a bool, collect the location of the
    +        // '@' and do something useful with it.
    +        // TODO: We could do various processing early on, using a single pass
    +        // over the string to collect information about it, e.g., telling us
    +        // whether there is a @ and if so, where (or how many).
    +        const bool contains_ampersand =
    +            (url_data.find('@', input_position) != std::string_view::npos);
    +
    +        if (!contains_ampersand) {
    +          state = ada::state::HOST;
    +          break;
    +        }
    +        bool at_sign_seen{false};
    +        bool password_token_seen{false};
    +        /**
    +         * We expect something of the sort...
    +         * https://user:pass@example.com:1234/foo/bar?baz#quux
    +         * --------^
    +         */
    +        do {
    +          std::string_view view = helpers::substring(url_data, input_position);
    +          // The delimiters are @, /, ? \\.
    +          size_t location =
    +              url.is_special() ? helpers::find_authority_delimiter_special(view)
    +                               : helpers::find_authority_delimiter(view);
    +          std::string_view authority_view(view.data(), location);
    +          size_t end_of_authority = input_position + authority_view.size();
    +          // If c is U+0040 (@), then:
    +          if ((end_of_authority != input_size) &&
    +              (url_data[end_of_authority] == '@')) {
    +            // If atSignSeen is true, then prepend "%40" to buffer.
    +            if (at_sign_seen) {
    +              if (password_token_seen) {
    +                if constexpr (result_type_is_ada_url) {
    +                  url.password += "%40";
    +                } else {
    +                  url.append_base_password("%40");
    +                }
    +              } else {
    +                if constexpr (result_type_is_ada_url) {
    +                  url.username += "%40";
    +                } else {
    +                  url.append_base_username("%40");
    +                }
    +              }
    +            }
    +
    +            at_sign_seen = true;
    +
    +            if (!password_token_seen) {
    +              size_t password_token_location = authority_view.find(':');
    +              password_token_seen =
    +                  password_token_location != std::string_view::npos;
    +
    +              if (!password_token_seen) {
    +                if constexpr (result_type_is_ada_url) {
    +                  url.username += unicode::percent_encode(
    +                      authority_view, character_sets::USERINFO_PERCENT_ENCODE);
    +                } else {
    +                  url.append_base_username(unicode::percent_encode(
    +                      authority_view, character_sets::USERINFO_PERCENT_ENCODE));
    +                }
    +              } else {
    +                if constexpr (result_type_is_ada_url) {
    +                  url.username += unicode::percent_encode(
    +                      authority_view.substr(0, password_token_location),
    +                      character_sets::USERINFO_PERCENT_ENCODE);
    +                  url.password += unicode::percent_encode(
    +                      authority_view.substr(password_token_location + 1),
    +                      character_sets::USERINFO_PERCENT_ENCODE);
    +                } else {
    +                  url.append_base_username(unicode::percent_encode(
    +                      authority_view.substr(0, password_token_location),
    +                      character_sets::USERINFO_PERCENT_ENCODE));
    +                  url.append_base_password(unicode::percent_encode(
    +                      authority_view.substr(password_token_location + 1),
    +                      character_sets::USERINFO_PERCENT_ENCODE));
    +                }
    +              }
    +            } else {
    +              if constexpr (result_type_is_ada_url) {
    +                url.password += unicode::percent_encode(
    +                    authority_view, character_sets::USERINFO_PERCENT_ENCODE);
    +              } else {
    +                url.append_base_password(unicode::percent_encode(
    +                    authority_view, character_sets::USERINFO_PERCENT_ENCODE));
    +              }
    +            }
    +          }
    +          // Otherwise, if one of the following is true:
    +          // - c is the EOF code point, U+002F (/), U+003F (?), or U+0023 (#)
    +          // - url is special and c is U+005C (\)
    +          else if (end_of_authority == input_size ||
    +                   url_data[end_of_authority] == '/' ||
    +                   url_data[end_of_authority] == '?' ||
    +                   (url.is_special() && url_data[end_of_authority] == '\\')) {
    +            // If atSignSeen is true and authority_view is the empty string,
    +            // validation error, return failure.
    +            if (at_sign_seen && authority_view.empty()) {
    +              url.is_valid = false;
    +              return url;
    +            }
    +            state = ada::state::HOST;
    +            break;
    +          }
    +          if (end_of_authority == input_size) {
    +            if (fragment.has_value()) {
    +              url.update_unencoded_base_hash(*fragment);
    +            }
    +            return url;
    +          }
    +          input_position = end_of_authority + 1;
    +        } while (true);
    +
    +        break;
    +      }
    +      case ada::state::SPECIAL_RELATIVE_OR_AUTHORITY: {
    +        ada_log("SPECIAL_RELATIVE_OR_AUTHORITY ",
    +                helpers::substring(url_data, input_position));
    +
    +        // If c is U+002F (/) and remaining starts with U+002F (/),
    +        // then set state to special authority ignore slashes state and increase
    +        // pointer by 1.
    +        std::string_view view = helpers::substring(url_data, input_position);
    +        if (ada::checkers::begins_with(view, "//")) {
    +          state = ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES;
    +          input_position += 2;
    +        } else {
    +          // Otherwise, validation error, set state to relative state and
    +          // decrease pointer by 1.
    +          state = ada::state::RELATIVE_SCHEME;
    +        }
    +
    +        break;
    +      }
    +      case ada::state::PATH_OR_AUTHORITY: {
    +        ada_log("PATH_OR_AUTHORITY ",
    +                helpers::substring(url_data, input_position));
    +
    +        // If c is U+002F (/), then set state to authority state.
    +        if ((input_position != input_size) &&
    +            (url_data[input_position] == '/')) {
    +          state = ada::state::AUTHORITY;
    +          input_position++;
    +        } else {
    +          // Otherwise, set state to path state, and decrease pointer by 1.
    +          state = ada::state::PATH;
    +        }
    +
    +        break;
    +      }
    +      case ada::state::RELATIVE_SCHEME: {
    +        ada_log("RELATIVE_SCHEME ",
    +                helpers::substring(url_data, input_position));
    +
    +        // Set url’s scheme to base’s scheme.
    +        url.copy_scheme(*base_url);
    +
    +        // If c is U+002F (/), then set state to relative slash state.
    +        if ((input_position != input_size) &&
    +            (url_data[input_position] == '/')) {
    +          ada_log(
    +              "RELATIVE_SCHEME if c is U+002F (/), then set state to relative "
    +              "slash state");
    +          state = ada::state::RELATIVE_SLASH;
    +        } else if (url.is_special() && (input_position != input_size) &&
    +                   (url_data[input_position] == '\\')) {
    +          // Otherwise, if url is special and c is U+005C (\), validation error,
    +          // set state to relative slash state.
    +          ada_log(
    +              "RELATIVE_SCHEME  if url is special and c is U+005C, validation "
    +              "error, set state to relative slash state");
    +          state = ada::state::RELATIVE_SLASH;
    +        } else {
    +          ada_log("RELATIVE_SCHEME otherwise");
    +          // Set url’s username to base’s username, url’s password to base’s
    +          // password, url’s host to base’s host, url’s port to base’s port,
    +          // url’s path to a clone of base’s path, and url’s query to base’s
    +          // query.
    +          if constexpr (result_type_is_ada_url) {
    +            url.username = base_url->username;
    +            url.password = base_url->password;
    +            url.host = base_url->host;
    +            url.port = base_url->port;
    +            url.path = base_url->path;
    +            url.query = base_url->query;
    +          } else {
    +            url.update_base_authority(base_url->get_href(),
    +                                      base_url->get_components());
    +            // TODO: Get rid of set_hostname and replace it with
    +            // update_base_hostname
    +            url.set_hostname(base_url->get_hostname());
    +            url.update_base_port(base_url->retrieve_base_port());
    +            url.update_base_pathname(base_url->get_pathname());
    +            url.update_base_search(base_url->get_search());
    +          }
    +
    +          url.has_opaque_path = base_url->has_opaque_path;
    +
    +          // If c is U+003F (?), then set url’s query to the empty string, and
    +          // state to query state.
    +          if ((input_position != input_size) &&
    +              (url_data[input_position] == '?')) {
    +            state = ada::state::QUERY;
    +          }
    +          // Otherwise, if c is not the EOF code point:
    +          else if (input_position != input_size) {
    +            // Set url’s query to null.
    +            url.clear_base_search();
    +            if constexpr (result_type_is_ada_url) {
    +              // Shorten url’s path.
    +              helpers::shorten_path(url.path, url.type);
    +            } else {
    +              std::string_view path = url.get_pathname();
    +              if (helpers::shorten_path(path, url.type)) {
    +                url.update_base_pathname(std::string(path));
    +              }
    +            }
    +            // Set state to path state and decrease pointer by 1.
    +            state = ada::state::PATH;
    +            break;
    +          }
    +        }
    +        input_position++;
    +        break;
    +      }
    +      case ada::state::RELATIVE_SLASH: {
    +        ada_log("RELATIVE_SLASH ",
    +                helpers::substring(url_data, input_position));
    +
    +        // If url is special and c is U+002F (/) or U+005C (\), then:
    +        if (url.is_special() && (input_position != input_size) &&
    +            (url_data[input_position] == '/' ||
    +             url_data[input_position] == '\\')) {
    +          // Set state to special authority ignore slashes state.
    +          state = ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES;
    +        }
    +        // Otherwise, if c is U+002F (/), then set state to authority state.
    +        else if ((input_position != input_size) &&
    +                 (url_data[input_position] == '/')) {
    +          state = ada::state::AUTHORITY;
    +        }
    +        // Otherwise, set
    +        // - url’s username to base’s username,
    +        // - url’s password to base’s password,
    +        // - url’s host to base’s host,
    +        // - url’s port to base’s port,
    +        // - state to path state, and then, decrease pointer by 1.
    +        else {
    +          if constexpr (result_type_is_ada_url) {
    +            url.username = base_url->username;
    +            url.password = base_url->password;
    +            url.host = base_url->host;
    +            url.port = base_url->port;
    +          } else {
    +            url.update_base_authority(base_url->get_href(),
    +                                      base_url->get_components());
    +            // TODO: Get rid of set_hostname and replace it with
    +            // update_base_hostname
    +            url.set_hostname(base_url->get_hostname());
    +            url.update_base_port(base_url->retrieve_base_port());
    +          }
    +          state = ada::state::PATH;
    +          break;
    +        }
    +
    +        input_position++;
    +        break;
    +      }
    +      case ada::state::SPECIAL_AUTHORITY_SLASHES: {
    +        ada_log("SPECIAL_AUTHORITY_SLASHES ",
    +                helpers::substring(url_data, input_position));
    +
    +        // If c is U+002F (/) and remaining starts with U+002F (/),
    +        // then set state to special authority ignore slashes state and increase
    +        // pointer by 1.
    +        state = ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES;
    +        std::string_view view = helpers::substring(url_data, input_position);
    +        if (ada::checkers::begins_with(view, "//")) {
    +          input_position += 2;
    +        }
    +
    +        [[fallthrough]];
    +      }
    +      case ada::state::SPECIAL_AUTHORITY_IGNORE_SLASHES: {
    +        ada_log("SPECIAL_AUTHORITY_IGNORE_SLASHES ",
    +                helpers::substring(url_data, input_position));
    +
    +        // If c is neither U+002F (/) nor U+005C (\), then set state to
    +        // authority state and decrease pointer by 1.
    +        while ((input_position != input_size) &&
    +               ((url_data[input_position] == '/') ||
    +                (url_data[input_position] == '\\'))) {
    +          input_position++;
    +        }
    +        state = ada::state::AUTHORITY;
    +
    +        break;
    +      }
    +      case ada::state::QUERY: {
    +        ada_log("QUERY ", helpers::substring(url_data, input_position));
    +        // Let queryPercentEncodeSet be the special-query percent-encode set if
    +        // url is special; otherwise the query percent-encode set.
    +        const uint8_t* query_percent_encode_set =
    +            url.is_special() ? ada::character_sets::SPECIAL_QUERY_PERCENT_ENCODE
    +                             : ada::character_sets::QUERY_PERCENT_ENCODE;
    +
    +        // Percent-encode after encoding, with encoding, buffer, and
    +        // queryPercentEncodeSet, and append the result to url’s query.
    +        url.update_base_search(helpers::substring(url_data, input_position),
    +                               query_percent_encode_set);
    +        ada_log("QUERY update_base_search completed ");
    +        if (fragment.has_value()) {
    +          url.update_unencoded_base_hash(*fragment);
    +        }
    +        return url;
    +      }
    +      case ada::state::HOST: {
    +        ada_log("HOST ", helpers::substring(url_data, input_position));
    +
    +        std::string_view host_view =
    +            helpers::substring(url_data, input_position);
    +        auto [location, found_colon] =
    +            helpers::get_host_delimiter_location(url.is_special(), host_view);
    +        input_position = (location != std::string_view::npos)
    +                             ? input_position + location
    +                             : input_size;
    +        // Otherwise, if c is U+003A (:) and insideBrackets is false, then:
    +        // Note: the 'found_colon' value is true if and only if a colon was
    +        // encountered while not inside brackets.
    +        if (found_colon) {
    +          // If buffer is the empty string, validation error, return failure.
    +          // Let host be the result of host parsing buffer with url is not
    +          // special.
    +          ada_log("HOST parsing ", host_view);
    +          if (!url.parse_host(host_view)) {
    +            return url;
    +          }
    +          ada_log("HOST parsing results in ", url.get_hostname());
    +          // Set url’s host to host, buffer to the empty string, and state to
    +          // port state.
    +          state = ada::state::PORT;
    +          input_position++;
    +        }
    +        // Otherwise, if one of the following is true:
    +        // - c is the EOF code point, U+002F (/), U+003F (?), or U+0023 (#)
    +        // - url is special and c is U+005C (\)
    +        // The get_host_delimiter_location function either brings us to
    +        // the colon outside of the bracket, or to one of those characters.
    +        else {
    +          // If url is special and host_view is the empty string, validation
    +          // error, return failure.
    +          if (url.is_special() && host_view.empty()) {
    +            url.is_valid = false;
    +            return url;
    +          }
    +          ada_log("HOST parsing ", host_view, " href=", url.get_href());
    +          // Let host be the result of host parsing host_view with url is not
    +          // special.
    +          if (host_view.empty()) {
    +            url.update_base_hostname("");
    +          } else if (!url.parse_host(host_view)) {
    +            return url;
    +          }
    +          ada_log("HOST parsing results in ", url.get_hostname(),
    +                  " href=", url.get_href());
    +
    +          // Set url’s host to host, and state to path start state.
    +          state = ada::state::PATH_START;
    +        }
    +
    +        break;
    +      }
    +      case ada::state::OPAQUE_PATH: {
    +        ada_log("OPAQUE_PATH ", helpers::substring(url_data, input_position));
    +        std::string_view view = helpers::substring(url_data, input_position);
    +        // If c is U+003F (?), then set url’s query to the empty string and
    +        // state to query state.
    +        size_t location = view.find('?');
    +        if (location != std::string_view::npos) {
    +          view.remove_suffix(view.size() - location);
    +          state = ada::state::QUERY;
    +          input_position += location + 1;
    +        } else {
    +          input_position = input_size + 1;
    +        }
    +        url.has_opaque_path = true;
    +        // This is a really unlikely scenario in real world. We should not seek
    +        // to optimize it.
    +        url.update_base_pathname(unicode::percent_encode(
    +            view, character_sets::C0_CONTROL_PERCENT_ENCODE));
    +        break;
    +      }
    +      case ada::state::PORT: {
    +        ada_log("PORT ", helpers::substring(url_data, input_position));
    +        std::string_view port_view =
    +            helpers::substring(url_data, input_position);
    +        size_t consumed_bytes = url.parse_port(port_view, true);
    +        input_position += consumed_bytes;
    +        if (!url.is_valid) {
    +          return url;
    +        }
    +        state = state::PATH_START;
    +        [[fallthrough]];
    +      }
    +      case ada::state::PATH_START: {
    +        ada_log("PATH_START ", helpers::substring(url_data, input_position));
    +
    +        // If url is special, then:
    +        if (url.is_special()) {
    +          // Set state to path state.
    +          state = ada::state::PATH;
    +
    +          // Optimization: Avoiding going into PATH state improves the
    +          // performance of urls ending with /.
    +          if (input_position == input_size) {
    +            url.update_base_pathname("/");
    +            if (fragment.has_value()) {
    +              url.update_unencoded_base_hash(*fragment);
    +            }
    +            return url;
    +          }
    +          // If c is neither U+002F (/) nor U+005C (\), then decrease pointer
    +          // by 1. We know that (input_position == input_size) is impossible
    +          // here, because of the previous if-check.
    +          if ((url_data[input_position] != '/') &&
    +              (url_data[input_position] != '\\')) {
    +            break;
    +          }
    +        }
    +        // Otherwise, if state override is not given and c is U+003F (?),
    +        // set url’s query to the empty string and state to query state.
    +        else if ((input_position != input_size) &&
    +                 (url_data[input_position] == '?')) {
    +          state = ada::state::QUERY;
    +        }
    +        // Otherwise, if c is not the EOF code point:
    +        else if (input_position != input_size) {
    +          // Set state to path state.
    +          state = ada::state::PATH;
    +
    +          // If c is not U+002F (/), then decrease pointer by 1.
    +          if (url_data[input_position] != '/') {
    +            break;
    +          }
    +        }
    +
    +        input_position++;
    +        break;
    +      }
    +      case ada::state::PATH: {
    +        std::string_view view = helpers::substring(url_data, input_position);
    +        ada_log("PATH ", helpers::substring(url_data, input_position));
    +
    +        // Most time, we do not need percent encoding.
    +        // Furthermore, we can immediately locate the '?'.
    +        size_t locofquestionmark = view.find('?');
    +        if (locofquestionmark != std::string_view::npos) {
    +          state = ada::state::QUERY;
    +          view.remove_suffix(view.size() - locofquestionmark);
    +          input_position += locofquestionmark + 1;
    +        } else {
    +          input_position = input_size + 1;
    +        }
    +        if constexpr (result_type_is_ada_url) {
    +          helpers::parse_prepared_path(view, url.type, url.path);
    +        } else {
    +          url.consume_prepared_path(view);
    +          ADA_ASSERT_TRUE(url.validate());
    +        }
    +        break;
    +      }
    +      case ada::state::FILE_SLASH: {
    +        ada_log("FILE_SLASH ", helpers::substring(url_data, input_position));
    +
    +        // If c is U+002F (/) or U+005C (\), then:
    +        if ((input_position != input_size) &&
    +            (url_data[input_position] == '/' ||
    +             url_data[input_position] == '\\')) {
    +          ada_log("FILE_SLASH c is U+002F or U+005C");
    +          // Set state to file host state.
    +          state = ada::state::FILE_HOST;
    +          input_position++;
    +        } else {
    +          ada_log("FILE_SLASH otherwise");
    +          // If base is non-null and base’s scheme is "file", then:
    +          // Note: it is unsafe to do base_url->scheme unless you know that
    +          // base_url_has_value() is true.
    +          if (base_url != nullptr &&
    +              base_url->type == ada::scheme::type::FILE) {
    +            // Set url’s host to base’s host.
    +            if constexpr (result_type_is_ada_url) {
    +              url.host = base_url->host;
    +            } else {
    +              // TODO: Optimization opportunity.
    +              url.set_host(base_url->get_host());
    +            }
    +            // If the code point substring from pointer to the end of input does
    +            // not start with a Windows drive letter and base’s path[0] is a
    +            // normalized Windows drive letter, then append base’s path[0] to
    +            // url’s path.
    +            if (!base_url->get_pathname().empty()) {
    +              if (!checkers::is_windows_drive_letter(
    +                      helpers::substring(url_data, input_position))) {
    +                std::string_view first_base_url_path =
    +                    base_url->get_pathname().substr(1);
    +                size_t loc = first_base_url_path.find('/');
    +                if (loc != std::string_view::npos) {
    +                  helpers::resize(first_base_url_path, loc);
    +                }
    +                if (checkers::is_normalized_windows_drive_letter(
    +                        first_base_url_path)) {
    +                  if constexpr (result_type_is_ada_url) {
    +                    url.path += '/';
    +                    url.path += first_base_url_path;
    +                  } else {
    +                    url.append_base_pathname(
    +                        helpers::concat("/", first_base_url_path));
    +                  }
    +                }
    +              }
    +            }
    +          }
    +
    +          // Set state to path state, and decrease pointer by 1.
    +          state = ada::state::PATH;
    +        }
    +
    +        break;
    +      }
    +      case ada::state::FILE_HOST: {
    +        std::string_view view = helpers::substring(url_data, input_position);
    +        ada_log("FILE_HOST ", helpers::substring(url_data, input_position));
    +
    +        size_t location = view.find_first_of("/\\?");
    +        std::string_view file_host_buffer(
    +            view.data(),
    +            (location != std::string_view::npos) ? location : view.size());
    +
    +        if (checkers::is_windows_drive_letter(file_host_buffer)) {
    +          state = ada::state::PATH;
    +        } else if (file_host_buffer.empty()) {
    +          // Set url’s host to the empty string.
    +          if constexpr (result_type_is_ada_url) {
    +            url.host = "";
    +          } else {
    +            url.update_base_hostname("");
    +          }
    +          // Set state to path start state.
    +          state = ada::state::PATH_START;
    +        } else {
    +          size_t consumed_bytes = file_host_buffer.size();
    +          input_position += consumed_bytes;
    +          // Let host be the result of host parsing buffer with url is not
    +          // special.
    +          if (!url.parse_host(file_host_buffer)) {
    +            return url;
    +          }
    +
    +          if constexpr (result_type_is_ada_url) {
    +            // If host is "localhost", then set host to the empty string.
    +            if (url.host.has_value() && url.host.value() == "localhost") {
    +              url.host = "";
    +            }
    +          } else {
    +            if (url.get_hostname() == "localhost") {
    +              url.update_base_hostname("");
    +            }
    +          }
    +
    +          // Set buffer to the empty string and state to path start state.
    +          state = ada::state::PATH_START;
    +        }
    +
    +        break;
    +      }
    +      case ada::state::FILE: {
    +        ada_log("FILE ", helpers::substring(url_data, input_position));
    +        std::string_view file_view =
    +            helpers::substring(url_data, input_position);
    +
    +        url.set_protocol_as_file();
    +        if constexpr (result_type_is_ada_url) {
    +          // Set url’s host to the empty string.
    +          url.host = "";
    +        } else {
    +          url.update_base_hostname("");
    +        }
    +        // If c is U+002F (/) or U+005C (\), then:
    +        if (input_position != input_size &&
    +            (url_data[input_position] == '/' ||
    +             url_data[input_position] == '\\')) {
    +          ada_log("FILE c is U+002F or U+005C");
    +          // Set state to file slash state.
    +          state = ada::state::FILE_SLASH;
    +        }
    +        // Otherwise, if base is non-null and base’s scheme is "file":
    +        else if (base_url != nullptr &&
    +                 base_url->type == ada::scheme::type::FILE) {
    +          // Set url’s host to base’s host, url’s path to a clone of base’s
    +          // path, and url’s query to base’s query.
    +          ada_log("FILE base non-null");
    +          if constexpr (result_type_is_ada_url) {
    +            url.host = base_url->host;
    +            url.path = base_url->path;
    +            url.query = base_url->query;
    +          } else {
    +            // TODO: Get rid of set_hostname and replace it with
    +            // update_base_hostname
    +            url.set_hostname(base_url->get_hostname());
    +            url.update_base_pathname(base_url->get_pathname());
    +            url.update_base_search(base_url->get_search());
    +          }
    +          url.has_opaque_path = base_url->has_opaque_path;
    +
    +          // If c is U+003F (?), then set url’s query to the empty string and
    +          // state to query state.
    +          if (input_position != input_size && url_data[input_position] == '?') {
    +            state = ada::state::QUERY;
    +          }
    +          // Otherwise, if c is not the EOF code point:
    +          else if (input_position != input_size) {
    +            // Set url’s query to null.
    +            url.clear_base_search();
    +
    +            // If the code point substring from pointer to the end of input does
    +            // not start with a Windows drive letter, then shorten url’s path.
    +            if (!checkers::is_windows_drive_letter(file_view)) {
    +              if constexpr (result_type_is_ada_url) {
    +                helpers::shorten_path(url.path, url.type);
    +              } else {
    +                std::string_view path = url.get_pathname();
    +                if (helpers::shorten_path(path, url.type)) {
    +                  url.update_base_pathname(std::string(path));
    +                }
    +              }
    +            }
    +            // Otherwise:
    +            else {
    +              // Set url’s path to an empty list.
    +              if constexpr (result_type_is_ada_url) {
    +                url.path.clear();
    +              } else {
    +                url.clear_base_pathname();
    +              }
    +              url.has_opaque_path = true;
    +            }
    +
    +            // Set state to path state and decrease pointer by 1.
    +            state = ada::state::PATH;
    +            break;
    +          }
    +        }
    +        // Otherwise, set state to path state, and decrease pointer by 1.
    +        else {
    +          ada_log("FILE go to path");
    +          state = ada::state::PATH;
    +          break;
    +        }
    +
    +        input_position++;
    +        break;
    +      }
    +      default:
    +        ada::unreachable();
    +    }
    +  }
    +  if (fragment.has_value()) {
    +    url.update_unencoded_base_hash(*fragment);
    +  }
    +  return url;
    +}
    +
    +template url parse_url(std::string_view user_input,
    +                            const url* base_url = nullptr);
    +template url_aggregator parse_url(
    +    std::string_view user_input, const url_aggregator* base_url = nullptr);
    +
    +}  // namespace ada::parser
    +/* end file src/parser.cpp */
    +/* begin file src/url_components.cpp */
    +
    +#include 
    +#include 
    +
    +namespace ada {
    +
    +bool url_components::check_offset_consistency() const noexcept {
    +  /**
    +   * https://user:pass@example.com:1234/foo/bar?baz#quux
    +   *       |     |    |          | ^^^^|       |   |
    +   *       |     |    |          | |   |       |   `----- hash_start
    +   *       |     |    |          | |   |       `--------- search_start
    +   *       |     |    |          | |   `----------------- pathname_start
    +   *       |     |    |          | `--------------------- port
    +   *       |     |    |          `----------------------- host_end
    +   *       |     |    `---------------------------------- host_start
    +   *       |     `--------------------------------------- username_end
    +   *       `--------------------------------------------- protocol_end
    +   */
    +  // These conditions can be made more strict.
    +  uint32_t index = 0;
    +
    +  if (protocol_end == url_components::omitted) {
    +    return false;
    +  }
    +  if (protocol_end < index) {
    +    return false;
    +  }
    +  index = protocol_end;
    +
    +  if (username_end == url_components::omitted) {
    +    return false;
    +  }
    +  if (username_end < index) {
    +    return false;
    +  }
    +  index = username_end;
    +
    +  if (host_start == url_components::omitted) {
    +    return false;
    +  }
    +  if (host_start < index) {
    +    return false;
    +  }
    +  index = host_start;
    +
    +  if (port != url_components::omitted) {
    +    if (port > 0xffff) {
    +      return false;
    +    }
    +    uint32_t port_length = helpers::fast_digit_count(port) + 1;
    +    if (index + port_length < index) {
    +      return false;
    +    }
    +    index += port_length;
    +  }
    +
    +  if (pathname_start == url_components::omitted) {
    +    return false;
    +  }
    +  if (pathname_start < index) {
    +    return false;
    +  }
    +  index = pathname_start;
    +
    +  if (search_start != url_components::omitted) {
    +    if (search_start < index) {
    +      return false;
    +    }
    +    index = search_start;
    +  }
    +
    +  if (hash_start != url_components::omitted) {
    +    if (hash_start < index) {
    +      return false;
    +    }
    +    index = hash_start;
    +  }
    +
    +  return true;
    +}
    +
    +std::string url_components::to_string() const {
    +  std::string answer;
    +  auto back = std::back_insert_iterator(answer);
    +  answer.append("{\n");
    +
    +  answer.append("\t\"protocol_end\":\"");
    +  helpers::encode_json(std::to_string(protocol_end), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"username_end\":\"");
    +  helpers::encode_json(std::to_string(username_end), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"host_start\":\"");
    +  helpers::encode_json(std::to_string(host_start), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"host_end\":\"");
    +  helpers::encode_json(std::to_string(host_end), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"port\":\"");
    +  helpers::encode_json(std::to_string(port), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"pathname_start\":\"");
    +  helpers::encode_json(std::to_string(pathname_start), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"search_start\":\"");
    +  helpers::encode_json(std::to_string(search_start), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"hash_start\":\"");
    +  helpers::encode_json(std::to_string(hash_start), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\n}");
    +  return answer;
    +}
    +
    +}  // namespace ada
    +/* end file src/url_components.cpp */
    +/* begin file src/url_aggregator.cpp */
    +
    +#include 
    +#include 
    +
    +namespace ada {
    +template 
    +[[nodiscard]] ada_really_inline bool url_aggregator::parse_scheme_with_colon(
    +    const std::string_view input_with_colon) {
    +  ada_log("url_aggregator::parse_scheme_with_colon ", input_with_colon);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input_with_colon, buffer));
    +  std::string_view input{input_with_colon};
    +  input.remove_suffix(1);
    +  auto parsed_type = ada::scheme::get_scheme_type(input);
    +  bool is_input_special = (parsed_type != ada::scheme::NOT_SPECIAL);
    +  /**
    +   * In the common case, we will immediately recognize a special scheme (e.g.,
    +   *http, https), in which case, we can go really fast.
    +   **/
    +  if (is_input_special) {  // fast path!!!
    +    if (has_state_override) {
    +      // If url’s scheme is not a special scheme and buffer is a special scheme,
    +      // then return.
    +      if (is_special() != is_input_special) {
    +        return true;
    +      }
    +
    +      // If url includes credentials or has a non-null port, and buffer is
    +      // "file", then return.
    +      if ((includes_credentials() ||
    +           components.port != url_components::omitted) &&
    +          parsed_type == ada::scheme::type::FILE) {
    +        return true;
    +      }
    +
    +      // If url’s scheme is "file" and its host is an empty host, then return.
    +      // An empty host is the empty string.
    +      if (type == ada::scheme::type::FILE &&
    +          components.host_start == components.host_end) {
    +        return true;
    +      }
    +    }
    +
    +    type = parsed_type;
    +    set_scheme_from_view_with_colon(input_with_colon);
    +
    +    if (has_state_override) {
    +      // This is uncommon.
    +      uint16_t urls_scheme_port = get_special_port();
    +
    +      // If url’s port is url’s scheme’s default port, then set url’s port to
    +      // null.
    +      if (components.port == urls_scheme_port) {
    +        clear_base_port();
    +      }
    +    }
    +  } else {  // slow path
    +    std::string _buffer = std::string(input);
    +    // Next function is only valid if the input is ASCII and returns false
    +    // otherwise, but it seems that we always have ascii content so we do not
    +    // need to check the return value.
    +    unicode::to_lower_ascii(_buffer.data(), _buffer.size());
    +
    +    if (has_state_override) {
    +      // If url’s scheme is a special scheme and buffer is not a special scheme,
    +      // then return. If url’s scheme is not a special scheme and buffer is a
    +      // special scheme, then return.
    +      if (is_special() != ada::scheme::is_special(_buffer)) {
    +        return true;
    +      }
    +
    +      // If url includes credentials or has a non-null port, and buffer is
    +      // "file", then return.
    +      if ((includes_credentials() ||
    +           components.port != url_components::omitted) &&
    +          _buffer == "file") {
    +        return true;
    +      }
    +
    +      // If url’s scheme is "file" and its host is an empty host, then return.
    +      // An empty host is the empty string.
    +      if (type == ada::scheme::type::FILE &&
    +          components.host_start == components.host_end) {
    +        return true;
    +      }
    +    }
    +
    +    set_scheme(_buffer);
    +
    +    if (has_state_override) {
    +      // This is uncommon.
    +      uint16_t urls_scheme_port = get_special_port();
    +
    +      // If url’s port is url’s scheme’s default port, then set url’s port to
    +      // null.
    +      if (components.port == urls_scheme_port) {
    +        clear_base_port();
    +      }
    +    }
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +inline void url_aggregator::copy_scheme(const url_aggregator& u) noexcept {
    +  ada_log("url_aggregator::copy_scheme ", u.buffer);
    +  ADA_ASSERT_TRUE(validate());
    +  // next line could overflow but unsigned arithmetic has well-defined
    +  // overflows.
    +  uint32_t new_difference = u.components.protocol_end - components.protocol_end;
    +  type = u.type;
    +  buffer.erase(0, components.protocol_end);
    +  buffer.insert(0, u.get_protocol());
    +  components.protocol_end = u.components.protocol_end;
    +
    +  // No need to update the components
    +  if (new_difference == 0) {
    +    return;
    +  }
    +
    +  // Update the rest of the components.
    +  components.username_end += new_difference;
    +  components.host_start += new_difference;
    +  components.host_end += new_difference;
    +  components.pathname_start += new_difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += new_difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += new_difference;
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +}
    +
    +inline void url_aggregator::set_scheme_from_view_with_colon(
    +    std::string_view new_scheme_with_colon) noexcept {
    +  ada_log("url_aggregator::set_scheme_from_view_with_colon ",
    +          new_scheme_with_colon);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!new_scheme_with_colon.empty() &&
    +                  new_scheme_with_colon.back() == ':');
    +  // next line could overflow but unsigned arithmetic has well-defined
    +  // overflows.
    +  uint32_t new_difference =
    +      uint32_t(new_scheme_with_colon.size()) - components.protocol_end;
    +
    +  if (buffer.empty()) {
    +    buffer.append(new_scheme_with_colon);
    +  } else {
    +    buffer.erase(0, components.protocol_end);
    +    buffer.insert(0, new_scheme_with_colon);
    +  }
    +  components.protocol_end += new_difference;
    +
    +  // Update the rest of the components.
    +  components.username_end += new_difference;
    +  components.host_start += new_difference;
    +  components.host_end += new_difference;
    +  components.pathname_start += new_difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += new_difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += new_difference;
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +}
    +
    +inline void url_aggregator::set_scheme(std::string_view new_scheme) noexcept {
    +  ada_log("url_aggregator::set_scheme ", new_scheme);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(new_scheme.empty() || new_scheme.back() != ':');
    +  // next line could overflow but unsigned arithmetic has well-defined
    +  // overflows.
    +  uint32_t new_difference =
    +      uint32_t(new_scheme.size()) - components.protocol_end + 1;
    +
    +  type = ada::scheme::get_scheme_type(new_scheme);
    +  if (buffer.empty()) {
    +    buffer.append(helpers::concat(new_scheme, ":"));
    +  } else {
    +    buffer.erase(0, components.protocol_end);
    +    buffer.insert(0, helpers::concat(new_scheme, ":"));
    +  }
    +  components.protocol_end = uint32_t(new_scheme.size() + 1);
    +
    +  // Update the rest of the components.
    +  components.username_end += new_difference;
    +  components.host_start += new_difference;
    +  components.host_end += new_difference;
    +  components.pathname_start += new_difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += new_difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += new_difference;
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +}
    +
    +bool url_aggregator::set_protocol(const std::string_view input) {
    +  ada_log("url_aggregator::set_protocol ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  std::string view(input);
    +  helpers::remove_ascii_tab_or_newline(view);
    +  if (view.empty()) {
    +    return true;
    +  }
    +
    +  // Schemes should start with alpha values.
    +  if (!checkers::is_alpha(view[0])) {
    +    return false;
    +  }
    +
    +  view.append(":");
    +
    +  std::string::iterator pointer =
    +      std::find_if_not(view.begin(), view.end(), unicode::is_alnum_plus);
    +
    +  if (pointer != view.end() && *pointer == ':') {
    +    return parse_scheme_with_colon(
    +        std::string_view(view.data(), pointer - view.begin() + 1));
    +  }
    +  return false;
    +}
    +
    +bool url_aggregator::set_username(const std::string_view input) {
    +  ada_log("url_aggregator::set_username '", input, "' ");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (cannot_have_credentials_or_port()) {
    +    return false;
    +  }
    +  size_t idx = ada::unicode::percent_encode_index(
    +      input, character_sets::USERINFO_PERCENT_ENCODE);
    +  if (idx == input.size()) {
    +    update_base_username(input);
    +  } else {
    +    // We only create a temporary string if we have to!
    +    update_base_username(ada::unicode::percent_encode(
    +        input, character_sets::USERINFO_PERCENT_ENCODE, idx));
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +bool url_aggregator::set_password(const std::string_view input) {
    +  ada_log("url_aggregator::set_password '", input, "'");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (cannot_have_credentials_or_port()) {
    +    return false;
    +  }
    +  size_t idx = ada::unicode::percent_encode_index(
    +      input, character_sets::USERINFO_PERCENT_ENCODE);
    +  if (idx == input.size()) {
    +    update_base_password(input);
    +  } else {
    +    // We only create a temporary string if we have to!
    +    update_base_password(ada::unicode::percent_encode(
    +        input, character_sets::USERINFO_PERCENT_ENCODE, idx));
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +bool url_aggregator::set_port(const std::string_view input) {
    +  ada_log("url_aggregator::set_port ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (cannot_have_credentials_or_port()) {
    +    return false;
    +  }
    +  std::string trimmed(input);
    +  helpers::remove_ascii_tab_or_newline(trimmed);
    +  if (trimmed.empty()) {
    +    clear_base_port();
    +    return true;
    +  }
    +  // Input should not start with control characters.
    +  if (ada::unicode::is_c0_control_or_space(trimmed.front())) {
    +    return false;
    +  }
    +  // Input should contain at least one ascii digit.
    +  if (input.find_first_of("0123456789") == std::string_view::npos) {
    +    return false;
    +  }
    +
    +  // Revert changes if parse_port fails.
    +  uint32_t previous_port = components.port;
    +  parse_port(trimmed);
    +  if (is_valid) {
    +    return true;
    +  }
    +  update_base_port(previous_port);
    +  is_valid = true;
    +  ADA_ASSERT_TRUE(validate());
    +  return false;
    +}
    +
    +bool url_aggregator::set_pathname(const std::string_view input) {
    +  ada_log("url_aggregator::set_pathname ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (has_opaque_path) {
    +    return false;
    +  }
    +  clear_base_pathname();
    +  parse_path(input);
    +  if (checkers::begins_with(input, "//") && !has_authority() &&
    +      !has_dash_dot()) {
    +    buffer.insert(components.pathname_start, "/.");
    +    components.pathname_start += 2;
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +ada_really_inline void url_aggregator::parse_path(std::string_view input) {
    +  ada_log("url_aggregator::parse_path ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  std::string tmp_buffer;
    +  std::string_view internal_input;
    +  if (unicode::has_tabs_or_newline(input)) {
    +    tmp_buffer = input;
    +    // Optimization opportunity: Instead of copying and then pruning, we could
    +    // just directly build the string from user_input.
    +    helpers::remove_ascii_tab_or_newline(tmp_buffer);
    +    internal_input = tmp_buffer;
    +  } else {
    +    internal_input = input;
    +  }
    +
    +  // If url is special, then:
    +  if (is_special()) {
    +    if (internal_input.empty()) {
    +      update_base_pathname("/");
    +    } else if ((internal_input[0] == '/') || (internal_input[0] == '\\')) {
    +      consume_prepared_path(internal_input.substr(1));
    +    } else {
    +      consume_prepared_path(internal_input);
    +    }
    +  } else if (!internal_input.empty()) {
    +    if (internal_input[0] == '/') {
    +      consume_prepared_path(internal_input.substr(1));
    +    } else {
    +      consume_prepared_path(internal_input);
    +    }
    +  } else {
    +    // Non-special URLs with an empty host can have their paths erased
    +    // Path-only URLs cannot have their paths erased
    +    if (components.host_start == components.host_end && !has_authority()) {
    +      update_base_pathname("/");
    +    }
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +}
    +
    +void url_aggregator::set_search(const std::string_view input) {
    +  ada_log("url_aggregator::set_search ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (input.empty()) {
    +    clear_base_search();
    +    helpers::strip_trailing_spaces_from_opaque_path(*this);
    +    return;
    +  }
    +
    +  std::string new_value;
    +  new_value = input[0] == '?' ? input.substr(1) : input;
    +  helpers::remove_ascii_tab_or_newline(new_value);
    +
    +  auto query_percent_encode_set =
    +      is_special() ? ada::character_sets::SPECIAL_QUERY_PERCENT_ENCODE
    +                   : ada::character_sets::QUERY_PERCENT_ENCODE;
    +
    +  update_base_search(new_value, query_percent_encode_set);
    +  ADA_ASSERT_TRUE(validate());
    +}
    +
    +void url_aggregator::set_hash(const std::string_view input) {
    +  ada_log("url_aggregator::set_hash ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (input.empty()) {
    +    if (components.hash_start != url_components::omitted) {
    +      buffer.resize(components.hash_start);
    +      components.hash_start = url_components::omitted;
    +    }
    +    helpers::strip_trailing_spaces_from_opaque_path(*this);
    +    return;
    +  }
    +
    +  std::string new_value;
    +  new_value = input[0] == '#' ? input.substr(1) : input;
    +  helpers::remove_ascii_tab_or_newline(new_value);
    +  update_unencoded_base_hash(new_value);
    +  ADA_ASSERT_TRUE(validate());
    +}
    +
    +bool url_aggregator::set_href(const std::string_view input) {
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  ada_log("url_aggregator::set_href ", input, "[", input.size(), " bytes]");
    +  ada::result out = ada::parse(input);
    +  ada_log("url_aggregator::set_href, success :", out.has_value());
    +
    +  if (out) {
    +    ada_log("url_aggregator::set_href, parsed ", out->to_string());
    +    // TODO: Figure out why the following line puts test to never finish.
    +    *this = *out;
    +  }
    +
    +  return out.has_value();
    +}
    +
    +ada_really_inline bool url_aggregator::parse_host(std::string_view input) {
    +  ada_log("url_aggregator:parse_host ", input, "[", input.size(), " bytes]");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (input.empty()) {
    +    return is_valid = false;
    +  }  // technically unnecessary.
    +  // If input starts with U+005B ([), then:
    +  if (input[0] == '[') {
    +    // If input does not end with U+005D (]), validation error, return failure.
    +    if (input.back() != ']') {
    +      return is_valid = false;
    +    }
    +    ada_log("parse_host ipv6");
    +
    +    // Return the result of IPv6 parsing input with its leading U+005B ([) and
    +    // trailing U+005D (]) removed.
    +    input.remove_prefix(1);
    +    input.remove_suffix(1);
    +    return parse_ipv6(input);
    +  }
    +
    +  // If isNotSpecial is true, then return the result of opaque-host parsing
    +  // input.
    +  if (!is_special()) {
    +    return parse_opaque_host(input);
    +  }
    +  // Let domain be the result of running UTF-8 decode without BOM on the
    +  // percent-decoding of input. Let asciiDomain be the result of running domain
    +  // to ASCII with domain and false. The most common case is an ASCII input, in
    +  // which case we do not need to call the expensive 'to_ascii' if a few
    +  // conditions are met: no '%' and no 'xn-' subsequence.
    +  std::string _buffer = std::string(input);
    +  // This next function checks that the result is ascii, but we are going to
    +  // to check anyhow with is_forbidden.
    +  // bool is_ascii =
    +  unicode::to_lower_ascii(_buffer.data(), _buffer.size());
    +  bool is_forbidden = unicode::contains_forbidden_domain_code_point(
    +      _buffer.data(), _buffer.size());
    +  if (is_forbidden == 0 && _buffer.find("xn-") == std::string_view::npos) {
    +    // fast path
    +    update_base_hostname(_buffer);
    +    if (checkers::is_ipv4(get_hostname())) {
    +      ada_log("parse_host fast path ipv4");
    +      return parse_ipv4(get_hostname());
    +    }
    +    ada_log("parse_host fast path ", get_hostname());
    +    return true;
    +  }
    +  ada_log("parse_host calling to_ascii");
    +  std::optional host = std::string(get_hostname());
    +  is_valid = ada::unicode::to_ascii(host, input, input.find('%'));
    +  if (!is_valid) {
    +    ada_log("parse_host to_ascii returns false");
    +    return is_valid = false;
    +  }
    +
    +  if (std::any_of(host.value().begin(), host.value().end(),
    +                  ada::unicode::is_forbidden_domain_code_point)) {
    +    return is_valid = false;
    +  }
    +
    +  // If asciiDomain ends in a number, then return the result of IPv4 parsing
    +  // asciiDomain.
    +  if (checkers::is_ipv4(host.value())) {
    +    ada_log("parse_host got ipv4", *host);
    +    return parse_ipv4(host.value());
    +  }
    +
    +  update_base_hostname(host.value());
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +template 
    +bool url_aggregator::set_host_or_hostname(const std::string_view input) {
    +  ada_log("url_aggregator::set_host_or_hostname ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (has_opaque_path) {
    +    return false;
    +  }
    +
    +  std::string previous_host = std::string(get_hostname());
    +  uint32_t previous_port = components.port;
    +
    +  size_t host_end_pos = input.find('#');
    +  std::string _host(input.data(), host_end_pos != std::string_view::npos
    +                                      ? host_end_pos
    +                                      : input.size());
    +  helpers::remove_ascii_tab_or_newline(_host);
    +  std::string_view new_host(_host);
    +
    +  // If url's scheme is "file", then set state to file host state, instead of
    +  // host state.
    +  if (type != ada::scheme::type::FILE) {
    +    std::string_view host_view(_host.data(), _host.length());
    +    auto [location, found_colon] =
    +        helpers::get_host_delimiter_location(is_special(), host_view);
    +
    +    // Otherwise, if c is U+003A (:) and insideBrackets is false, then:
    +    // Note: the 'found_colon' value is true if and only if a colon was
    +    // encountered while not inside brackets.
    +    if (found_colon) {
    +      if (override_hostname) {
    +        return false;
    +      }
    +      std::string_view sub_buffer = new_host.substr(location + 1);
    +      if (!sub_buffer.empty()) {
    +        set_port(sub_buffer);
    +      }
    +    }
    +    // If url is special and host_view is the empty string, validation error,
    +    // return failure. Otherwise, if state override is given, host_view is the
    +    // empty string, and either url includes credentials or url’s port is
    +    // non-null, return.
    +    else if (host_view.empty() &&
    +             (is_special() || includes_credentials() ||
    +              components.port != url_components::omitted)) {
    +      return false;
    +    }
    +
    +    // Let host be the result of host parsing host_view with url is not special.
    +    if (host_view.empty()) {
    +      if (has_hostname()) {
    +        clear_base_hostname();  // easy!
    +      } else if (has_dash_dot()) {
    +        add_authority_slashes_if_needed();
    +        delete_dash_dot();
    +      }
    +      return true;
    +    }
    +
    +    bool succeeded = parse_host(host_view);
    +    if (!succeeded) {
    +      update_base_hostname(previous_host);
    +      update_base_port(previous_port);
    +    } else if (has_dash_dot()) {
    +      // Should remove dash_dot from pathname
    +      delete_dash_dot();
    +    }
    +    return succeeded;
    +  }
    +
    +  size_t location = new_host.find_first_of("/\\?");
    +  if (location != std::string_view::npos) {
    +    new_host.remove_suffix(new_host.length() - location);
    +  }
    +
    +  if (new_host.empty()) {
    +    // Set url’s host to the empty string.
    +    clear_base_hostname();
    +  } else {
    +    // Let host be the result of host parsing buffer with url is not special.
    +    if (!parse_host(new_host)) {
    +      update_base_hostname(previous_host);
    +      update_base_port(previous_port);
    +      return false;
    +    }
    +
    +    // If host is "localhost", then set host to the empty string.
    +    if (helpers::substring(buffer, components.host_start,
    +                           components.host_end) == "localhost") {
    +      clear_base_hostname();
    +    }
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +bool url_aggregator::set_host(const std::string_view input) {
    +  ada_log("url_aggregator::set_host '", input, "'");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  return set_host_or_hostname(input);
    +}
    +
    +bool url_aggregator::set_hostname(const std::string_view input) {
    +  ada_log("url_aggregator::set_hostname '", input, "'");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  return set_host_or_hostname(input);
    +}
    +
    +[[nodiscard]] std::string url_aggregator::get_origin() const noexcept {
    +  ada_log("url_aggregator::get_origin");
    +  if (is_special()) {
    +    // Return a new opaque origin.
    +    if (type == scheme::FILE) {
    +      return "null";
    +    }
    +
    +    return helpers::concat(get_protocol(), "//", get_host());
    +  }
    +
    +  if (get_protocol() == "blob:") {
    +    std::string_view path = get_pathname();
    +    if (!path.empty()) {
    +      auto out = ada::parse(path);
    +      if (out && out->is_special()) {
    +        return helpers::concat(out->get_protocol(), "//", out->get_host());
    +      }
    +    }
    +  }
    +
    +  // Return a new opaque origin.
    +  return "null";
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_username() const noexcept {
    +  ada_log("url_aggregator::get_username");
    +  if (has_non_empty_username()) {
    +    return helpers::substring(buffer, components.protocol_end + 2,
    +                              components.username_end);
    +  }
    +  return "";
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_password() const noexcept {
    +  ada_log("url_aggregator::get_password");
    +  if (has_non_empty_password()) {
    +    return helpers::substring(buffer, components.username_end + 1,
    +                              components.host_start);
    +  }
    +  return "";
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_port() const noexcept {
    +  ada_log("url_aggregator::get_port");
    +  if (components.port == url_components::omitted) {
    +    return "";
    +  }
    +  return helpers::substring(buffer, components.host_end + 1,
    +                            components.pathname_start);
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_hash() const noexcept {
    +  ada_log("url_aggregator::get_hash");
    +  // If this’s URL’s fragment is either null or the empty string, then return
    +  // the empty string. Return U+0023 (#), followed by this’s URL’s fragment.
    +  if (components.hash_start == url_components::omitted) {
    +    return "";
    +  }
    +  if (buffer.size() - components.hash_start <= 1) {
    +    return "";
    +  }
    +  return helpers::substring(buffer, components.hash_start);
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_host() const noexcept {
    +  ada_log("url_aggregator::get_host");
    +  size_t start = components.host_start;
    +  if (buffer.size() > components.host_start &&
    +      buffer[components.host_start] == '@') {
    +    start++;
    +  }
    +  // if we have an empty host, then the space between components.host_end and
    +  // components.pathname_start may be occupied by /.
    +  if (start == components.host_end) {
    +    return std::string_view();
    +  }
    +  return helpers::substring(buffer, start, components.pathname_start);
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_hostname() const noexcept {
    +  ada_log("url_aggregator::get_hostname");
    +  size_t start = components.host_start;
    +  // So host_start is not where the host begins.
    +  if (buffer.size() > components.host_start &&
    +      buffer[components.host_start] == '@') {
    +    start++;
    +  }
    +  return helpers::substring(buffer, start, components.host_end);
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_pathname() const noexcept {
    +  ada_log("url_aggregator::get_pathname pathname_start = ",
    +          components.pathname_start, " buffer.size() = ", buffer.size(),
    +          " components.search_start = ", components.search_start,
    +          " components.hash_start = ", components.hash_start);
    +  uint32_t ending_index = uint32_t(buffer.size());
    +  if (components.search_start != url_components::omitted) {
    +    ending_index = components.search_start;
    +  } else if (components.hash_start != url_components::omitted) {
    +    ending_index = components.hash_start;
    +  }
    +  return helpers::substring(buffer, components.pathname_start, ending_index);
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_search() const noexcept {
    +  ada_log("url_aggregator::get_search");
    +  // If this’s URL’s query is either null or the empty string, then return the
    +  // empty string. Return U+003F (?), followed by this’s URL’s query.
    +  if (components.search_start == url_components::omitted) {
    +    return "";
    +  }
    +  uint32_t ending_index = uint32_t(buffer.size());
    +  if (components.hash_start != url_components::omitted) {
    +    ending_index = components.hash_start;
    +  }
    +  if (ending_index - components.search_start <= 1) {
    +    return "";
    +  }
    +  return helpers::substring(buffer, components.search_start, ending_index);
    +}
    +
    +[[nodiscard]] std::string_view url_aggregator::get_protocol() const noexcept {
    +  ada_log("url_aggregator::get_protocol");
    +  return helpers::substring(buffer, 0, components.protocol_end);
    +}
    +
    +std::string ada::url_aggregator::to_string() const {
    +  ada_log("url_aggregator::to_string buffer:", buffer, "[", buffer.size(),
    +          " bytes]");
    +  if (!is_valid) {
    +    return "null";
    +  }
    +
    +  std::string answer;
    +  auto back = std::back_insert_iterator(answer);
    +  answer.append("{\n");
    +
    +  answer.append("\t\"buffer\":\"");
    +  helpers::encode_json(buffer, back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"protocol\":\"");
    +  helpers::encode_json(get_protocol(), back);
    +  answer.append("\",\n");
    +
    +  if (includes_credentials()) {
    +    answer.append("\t\"username\":\"");
    +    helpers::encode_json(get_username(), back);
    +    answer.append("\",\n");
    +    answer.append("\t\"password\":\"");
    +    helpers::encode_json(get_password(), back);
    +    answer.append("\",\n");
    +  }
    +
    +  answer.append("\t\"host\":\"");
    +  helpers::encode_json(get_host(), back);
    +  answer.append("\",\n");
    +
    +  answer.append("\t\"path\":\"");
    +  helpers::encode_json(get_pathname(), back);
    +  answer.append("\",\n");
    +  answer.append("\t\"opaque path\":");
    +  answer.append((has_opaque_path ? "true" : "false"));
    +  answer.append(",\n");
    +
    +  if (components.search_start != url_components::omitted) {
    +    answer.append("\t\"query\":\"");
    +    helpers::encode_json(get_search(), back);
    +    answer.append("\",\n");
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    answer.append("\t\"fragment\":\"");
    +    helpers::encode_json(get_hash(), back);
    +    answer.append("\",\n");
    +  }
    +
    +  auto convert_offset_to_string = [](uint32_t offset) -> std::string {
    +    if (offset == url_components::omitted) {
    +      return "null";
    +    } else {
    +      return std::to_string(offset);
    +    }
    +  };
    +
    +  answer.append("\t\"protocol_end\":");
    +  answer.append(convert_offset_to_string(components.protocol_end));
    +  answer.append(",\n");
    +
    +  answer.append("\t\"username_end\":");
    +  answer.append(convert_offset_to_string(components.username_end));
    +  answer.append(",\n");
    +
    +  answer.append("\t\"host_start\":");
    +  answer.append(convert_offset_to_string(components.host_start));
    +  answer.append(",\n");
    +
    +  answer.append("\t\"host_end\":");
    +  answer.append(convert_offset_to_string(components.host_end));
    +  answer.append(",\n");
    +
    +  answer.append("\t\"port\":");
    +  answer.append(convert_offset_to_string(components.port));
    +  answer.append(",\n");
    +
    +  answer.append("\t\"pathname_start\":");
    +  answer.append(convert_offset_to_string(components.pathname_start));
    +  answer.append(",\n");
    +
    +  answer.append("\t\"search_start\":");
    +  answer.append(convert_offset_to_string(components.search_start));
    +  answer.append(",\n");
    +
    +  answer.append("\t\"hash_start\":");
    +  answer.append(convert_offset_to_string(components.hash_start));
    +  answer.append("\n}");
    +
    +  return answer;
    +}
    +
    +[[nodiscard]] bool url_aggregator::has_valid_domain() const noexcept {
    +  if (components.host_start == components.host_end) {
    +    return false;
    +  }
    +  return checkers::verify_dns_length(get_hostname());
    +}
    +
    +bool url_aggregator::parse_ipv4(std::string_view input) {
    +  ada_log("parse_ipv4 ", input, "[", input.size(),
    +          " bytes], overlaps with buffer: ",
    +          helpers::overlaps(input, buffer) ? "yes" : "no");
    +  ADA_ASSERT_TRUE(validate());
    +  const bool trailing_dot = (input.back() == '.');
    +  if (trailing_dot) {
    +    input.remove_suffix(1);
    +  }
    +  size_t digit_count{0};
    +  int pure_decimal_count = 0;  // entries that are decimal
    +  uint64_t ipv4{0};
    +  // we could unroll for better performance?
    +  for (; (digit_count < 4) && !(input.empty()); digit_count++) {
    +    uint32_t
    +        segment_result{};  // If any number exceeds 32 bits, we have an error.
    +    bool is_hex = checkers::has_hex_prefix(input);
    +    if (is_hex && ((input.length() == 2) ||
    +                   ((input.length() > 2) && (input[2] == '.')))) {
    +      // special case
    +      segment_result = 0;
    +      input.remove_prefix(2);
    +    } else {
    +      std::from_chars_result r;
    +      if (is_hex) {
    +        r = std::from_chars(input.data() + 2, input.data() + input.size(),
    +                            segment_result, 16);
    +      } else if ((input.length() >= 2) && input[0] == '0' &&
    +                 checkers::is_digit(input[1])) {
    +        r = std::from_chars(input.data() + 1, input.data() + input.size(),
    +                            segment_result, 8);
    +      } else {
    +        pure_decimal_count++;
    +        r = std::from_chars(input.data(), input.data() + input.size(),
    +                            segment_result, 10);
    +      }
    +      if (r.ec != std::errc()) {
    +        return is_valid = false;
    +      }
    +      input.remove_prefix(r.ptr - input.data());
    +    }
    +    if (input.empty()) {
    +      // We have the last value.
    +      // At this stage, ipv4 contains digit_count*8 bits.
    +      // So we have 32-digit_count*8 bits left.
    +      if (segment_result > (uint64_t(1) << (32 - digit_count * 8))) {
    +        return is_valid = false;
    +      }
    +      ipv4 <<= (32 - digit_count * 8);
    +      ipv4 |= segment_result;
    +      goto final;
    +    } else {
    +      // There is more, so that the value must no be larger than 255
    +      // and we must have a '.'.
    +      if ((segment_result > 255) || (input[0] != '.')) {
    +        return is_valid = false;
    +      }
    +      ipv4 <<= 8;
    +      ipv4 |= segment_result;
    +      input.remove_prefix(1);  // remove '.'
    +    }
    +  }
    +  if ((digit_count != 4) || (!input.empty())) {
    +    return is_valid = false;
    +  }
    +final:
    +  ada_log("url_aggregator::parse_ipv4 completed ", get_href(),
    +          " host: ", get_host());
    +
    +  // We could also check r.ptr to see where the parsing ended.
    +  if (pure_decimal_count == 4 && !trailing_dot) {
    +    // The original input was already all decimal and we validated it. So we
    +    // don't need to do anything.
    +  } else {
    +    // Optimization opportunity: Get rid of unnecessary string return in ipv4
    +    // serializer.
    +    // TODO: This is likely a bug because it goes back update_base_hostname, not
    +    // what we want to do.
    +    update_base_hostname(
    +        ada::serializers::ipv4(ipv4));  // We have to reserialize the address.
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +bool url_aggregator::parse_ipv6(std::string_view input) {
    +  // TODO: Find a way to merge parse_ipv6 with url.cpp implementation.
    +  ada_log("parse_ipv6 ", input, "[", input.size(), " bytes]");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (input.empty()) {
    +    return is_valid = false;
    +  }
    +  // Let address be a new IPv6 address whose IPv6 pieces are all 0.
    +  std::array address{};
    +
    +  // Let pieceIndex be 0.
    +  int piece_index = 0;
    +
    +  // Let compress be null.
    +  std::optional compress{};
    +
    +  // Let pointer be a pointer for input.
    +  std::string_view::iterator pointer = input.begin();
    +
    +  // If c is U+003A (:), then:
    +  if (input[0] == ':') {
    +    // If remaining does not start with U+003A (:), validation error, return
    +    // failure.
    +    if (input.size() == 1 || input[1] != ':') {
    +      ada_log("parse_ipv6 starts with : but the rest does not start with :");
    +      return is_valid = false;
    +    }
    +
    +    // Increase pointer by 2.
    +    pointer += 2;
    +
    +    // Increase pieceIndex by 1 and then set compress to pieceIndex.
    +    compress = ++piece_index;
    +  }
    +
    +  // While c is not the EOF code point:
    +  while (pointer != input.end()) {
    +    // If pieceIndex is 8, validation error, return failure.
    +    if (piece_index == 8) {
    +      ada_log("parse_ipv6 piece_index == 8");
    +      return is_valid = false;
    +    }
    +
    +    // If c is U+003A (:), then:
    +    if (*pointer == ':') {
    +      // If compress is non-null, validation error, return failure.
    +      if (compress.has_value()) {
    +        ada_log("parse_ipv6 compress is non-null");
    +        return is_valid = false;
    +      }
    +
    +      // Increase pointer and pieceIndex by 1, set compress to pieceIndex, and
    +      // then continue.
    +      pointer++;
    +      compress = ++piece_index;
    +      continue;
    +    }
    +
    +    // Let value and length be 0.
    +    uint16_t value = 0, length = 0;
    +
    +    // While length is less than 4 and c is an ASCII hex digit,
    +    // set value to value × 0x10 + c interpreted as hexadecimal number, and
    +    // increase pointer and length by 1.
    +    while (length < 4 && pointer != input.end() &&
    +           unicode::is_ascii_hex_digit(*pointer)) {
    +      // https://stackoverflow.com/questions/39060852/why-does-the-addition-of-two-shorts-return-an-int
    +      value = uint16_t(value * 0x10 + unicode::convert_hex_to_binary(*pointer));
    +      pointer++;
    +      length++;
    +    }
    +
    +    // If c is U+002E (.), then:
    +    if (pointer != input.end() && *pointer == '.') {
    +      // If length is 0, validation error, return failure.
    +      if (length == 0) {
    +        ada_log("parse_ipv6 length is 0");
    +        return is_valid = false;
    +      }
    +
    +      // Decrease pointer by length.
    +      pointer -= length;
    +
    +      // If pieceIndex is greater than 6, validation error, return failure.
    +      if (piece_index > 6) {
    +        ada_log("parse_ipv6 piece_index > 6");
    +        return is_valid = false;
    +      }
    +
    +      // Let numbersSeen be 0.
    +      int numbers_seen = 0;
    +
    +      // While c is not the EOF code point:
    +      while (pointer != input.end()) {
    +        // Let ipv4Piece be null.
    +        std::optional ipv4_piece{};
    +
    +        // If numbersSeen is greater than 0, then:
    +        if (numbers_seen > 0) {
    +          // If c is a U+002E (.) and numbersSeen is less than 4, then increase
    +          // pointer by 1.
    +          if (*pointer == '.' && numbers_seen < 4) {
    +            pointer++;
    +          } else {
    +            // Otherwise, validation error, return failure.
    +            ada_log("parse_ipv6 Otherwise, validation error, return failure");
    +            return is_valid = false;
    +          }
    +        }
    +
    +        // If c is not an ASCII digit, validation error, return failure.
    +        if (pointer == input.end() || !checkers::is_digit(*pointer)) {
    +          ada_log(
    +              "parse_ipv6 If c is not an ASCII digit, validation error, return "
    +              "failure");
    +          return is_valid = false;
    +        }
    +
    +        // While c is an ASCII digit:
    +        while (pointer != input.end() && checkers::is_digit(*pointer)) {
    +          // Let number be c interpreted as decimal number.
    +          int number = *pointer - '0';
    +
    +          // If ipv4Piece is null, then set ipv4Piece to number.
    +          if (!ipv4_piece.has_value()) {
    +            ipv4_piece = number;
    +          }
    +          // Otherwise, if ipv4Piece is 0, validation error, return failure.
    +          else if (ipv4_piece == 0) {
    +            ada_log("parse_ipv6 if ipv4Piece is 0, validation error");
    +            return is_valid = false;
    +          }
    +          // Otherwise, set ipv4Piece to ipv4Piece × 10 + number.
    +          else {
    +            ipv4_piece = *ipv4_piece * 10 + number;
    +          }
    +
    +          // If ipv4Piece is greater than 255, validation error, return failure.
    +          if (ipv4_piece > 255) {
    +            ada_log("parse_ipv6 ipv4_piece > 255");
    +            return is_valid = false;
    +          }
    +
    +          // Increase pointer by 1.
    +          pointer++;
    +        }
    +
    +        // Set address[pieceIndex] to address[pieceIndex] × 0x100 + ipv4Piece.
    +        // https://stackoverflow.com/questions/39060852/why-does-the-addition-of-two-shorts-return-an-int
    +        address[piece_index] =
    +            uint16_t(address[piece_index] * 0x100 + *ipv4_piece);
    +
    +        // Increase numbersSeen by 1.
    +        numbers_seen++;
    +
    +        // If numbersSeen is 2 or 4, then increase pieceIndex by 1.
    +        if (numbers_seen == 2 || numbers_seen == 4) {
    +          piece_index++;
    +        }
    +      }
    +
    +      // If numbersSeen is not 4, validation error, return failure.
    +      if (numbers_seen != 4) {
    +        return is_valid = false;
    +      }
    +
    +      // Break.
    +      break;
    +    }
    +    // Otherwise, if c is U+003A (:):
    +    else if ((pointer != input.end()) && (*pointer == ':')) {
    +      // Increase pointer by 1.
    +      pointer++;
    +
    +      // If c is the EOF code point, validation error, return failure.
    +      if (pointer == input.end()) {
    +        ada_log(
    +            "parse_ipv6 If c is the EOF code point, validation error, return "
    +            "failure");
    +        return is_valid = false;
    +      }
    +    }
    +    // Otherwise, if c is not the EOF code point, validation error, return
    +    // failure.
    +    else if (pointer != input.end()) {
    +      ada_log(
    +          "parse_ipv6 Otherwise, if c is not the EOF code point, validation "
    +          "error, return failure");
    +      return is_valid = false;
    +    }
    +
    +    // Set address[pieceIndex] to value.
    +    address[piece_index] = value;
    +
    +    // Increase pieceIndex by 1.
    +    piece_index++;
    +  }
    +
    +  // If compress is non-null, then:
    +  if (compress.has_value()) {
    +    // Let swaps be pieceIndex − compress.
    +    int swaps = piece_index - *compress;
    +
    +    // Set pieceIndex to 7.
    +    piece_index = 7;
    +
    +    // While pieceIndex is not 0 and swaps is greater than 0,
    +    // swap address[pieceIndex] with address[compress + swaps − 1], and then
    +    // decrease both pieceIndex and swaps by 1.
    +    while (piece_index != 0 && swaps > 0) {
    +      std::swap(address[piece_index], address[*compress + swaps - 1]);
    +      piece_index--;
    +      swaps--;
    +    }
    +  }
    +  // Otherwise, if compress is null and pieceIndex is not 8, validation error,
    +  // return failure.
    +  else if (piece_index != 8) {
    +    ada_log(
    +        "parse_ipv6 if compress is null and pieceIndex is not 8, validation "
    +        "error, return failure");
    +    return is_valid = false;
    +  }
    +  // TODO: Optimization opportunity: Get rid of unnecessary string creation.
    +  // TODO: This is likely a bug because it goes back update_base_hostname, not
    +  // what we want to do.
    +  update_base_hostname(ada::serializers::ipv6(address));
    +  ada_log("parse_ipv6 ", get_hostname());
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +bool url_aggregator::parse_opaque_host(std::string_view input) {
    +  ada_log("parse_opaque_host ", input, "[", input.size(), " bytes]");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (std::any_of(input.begin(), input.end(),
    +                  ada::unicode::is_forbidden_host_code_point)) {
    +    return is_valid = false;
    +  }
    +
    +  // Return the result of running UTF-8 percent-encode on input using the C0
    +  // control percent-encode set.
    +  size_t idx = ada::unicode::percent_encode_index(
    +      input, character_sets::C0_CONTROL_PERCENT_ENCODE);
    +  if (idx == input.size()) {
    +    update_base_hostname(input);
    +  } else {
    +    // We only create a temporary string if we need to.
    +    update_base_hostname(ada::unicode::percent_encode(
    +        input, character_sets::C0_CONTROL_PERCENT_ENCODE, idx));
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  return true;
    +}
    +
    +std::string url_aggregator::to_diagram() const {
    +  if (!is_valid) {
    +    return "invalid";
    +  }
    +  std::string answer;
    +  answer.append(buffer);
    +  answer.append(" [");
    +  answer.append(std::to_string(buffer.size()));
    +  answer.append(" bytes]");
    +  answer.append("\n");
    +  // first line
    +  std::string line1;
    +  line1.resize(buffer.size(), ' ');
    +  if (components.hash_start != url_components::omitted) {
    +    line1[components.hash_start] = '|';
    +  }
    +  if (components.search_start != url_components::omitted) {
    +    line1[components.search_start] = '|';
    +  }
    +  if (components.pathname_start != buffer.size()) {
    +    line1[components.pathname_start] = '|';
    +  }
    +  if (components.host_end != buffer.size()) {
    +    line1[components.host_end] = '|';
    +  }
    +  if (components.host_start != buffer.size()) {
    +    line1[components.host_start] = '|';
    +  }
    +  if (components.username_end != buffer.size()) {
    +    line1[components.username_end] = '|';
    +  }
    +  if (components.protocol_end != buffer.size()) {
    +    line1[components.protocol_end] = '|';
    +  }
    +  answer.append(line1);
    +  answer.append("\n");
    +
    +  std::string line2 = line1;
    +  if (components.hash_start != url_components::omitted) {
    +    line2[components.hash_start] = '`';
    +    line1[components.hash_start] = ' ';
    +
    +    for (size_t i = components.hash_start + 1; i < line2.size(); i++) {
    +      line2[i] = '-';
    +    }
    +    line2.append(" hash_start");
    +    answer.append(line2);
    +    answer.append("\n");
    +  }
    +
    +  std::string line3 = line1;
    +  if (components.search_start != url_components::omitted) {
    +    line3[components.search_start] = '`';
    +    line1[components.search_start] = ' ';
    +
    +    for (size_t i = components.search_start + 1; i < line3.size(); i++) {
    +      line3[i] = '-';
    +    }
    +    line3.append(" search_start ");
    +    line3.append(std::to_string(components.search_start));
    +    answer.append(line3);
    +    answer.append("\n");
    +  }
    +
    +  std::string line4 = line1;
    +  if (components.pathname_start != buffer.size()) {
    +    line4[components.pathname_start] = '`';
    +    line1[components.pathname_start] = ' ';
    +    for (size_t i = components.pathname_start + 1; i < line4.size(); i++) {
    +      line4[i] = '-';
    +    }
    +    line4.append(" pathname_start ");
    +    line4.append(std::to_string(components.pathname_start));
    +    answer.append(line4);
    +    answer.append("\n");
    +  }
    +
    +  std::string line5 = line1;
    +  if (components.host_end != buffer.size()) {
    +    line5[components.host_end] = '`';
    +    line1[components.host_end] = ' ';
    +
    +    for (size_t i = components.host_end + 1; i < line5.size(); i++) {
    +      line5[i] = '-';
    +    }
    +    line5.append(" host_end ");
    +    line5.append(std::to_string(components.host_end));
    +    answer.append(line5);
    +    answer.append("\n");
    +  }
    +
    +  std::string line6 = line1;
    +  if (components.host_start != buffer.size()) {
    +    line6[components.host_start] = '`';
    +    line1[components.host_start] = ' ';
    +
    +    for (size_t i = components.host_start + 1; i < line6.size(); i++) {
    +      line6[i] = '-';
    +    }
    +    line6.append(" host_start ");
    +    line6.append(std::to_string(components.host_start));
    +    answer.append(line6);
    +    answer.append("\n");
    +  }
    +
    +  std::string line7 = line1;
    +  if (components.username_end != buffer.size()) {
    +    line7[components.username_end] = '`';
    +    line1[components.username_end] = ' ';
    +
    +    for (size_t i = components.username_end + 1; i < line7.size(); i++) {
    +      line7[i] = '-';
    +    }
    +    line7.append(" username_end ");
    +    line7.append(std::to_string(components.username_end));
    +    answer.append(line7);
    +    answer.append("\n");
    +  }
    +
    +  std::string line8 = line1;
    +  if (components.protocol_end != buffer.size()) {
    +    line8[components.protocol_end] = '`';
    +    line1[components.protocol_end] = ' ';
    +
    +    for (size_t i = components.protocol_end + 1; i < line8.size(); i++) {
    +      line8[i] = '-';
    +    }
    +    line8.append(" protocol_end ");
    +    line8.append(std::to_string(components.protocol_end));
    +    answer.append(line8);
    +    answer.append("\n");
    +  }
    +
    +  if (components.hash_start == url_components::omitted) {
    +    answer.append("note: hash omitted\n");
    +  }
    +  if (components.search_start == url_components::omitted) {
    +    answer.append("note: search omitted\n");
    +  }
    +  if (components.protocol_end > buffer.size()) {
    +    answer.append("warning: protocol_end overflows\n");
    +  }
    +  if (components.username_end > buffer.size()) {
    +    answer.append("warning: username_end overflows\n");
    +  }
    +  if (components.host_start > buffer.size()) {
    +    answer.append("warning: host_start overflows\n");
    +  }
    +  if (components.host_end > buffer.size()) {
    +    answer.append("warning: host_end overflows\n");
    +  }
    +  if (components.pathname_start > buffer.size()) {
    +    answer.append("warning: pathname_start overflows\n");
    +  }
    +  return answer;
    +}
    +
    +bool url_aggregator::validate() const noexcept {
    +  if (!is_valid) {
    +    return true;
    +  }
    +  if (!components.check_offset_consistency()) {
    +    ada_log("url_aggregator::validate inconsistent components \n",
    +            to_diagram());
    +    return false;
    +  }
    +  // We have a credible components struct, but let us investivate more
    +  // carefully:
    +  /**
    +   * https://user:pass@example.com:1234/foo/bar?baz#quux
    +   *       |     |    |          | ^^^^|       |   |
    +   *       |     |    |          | |   |       |   `----- hash_start
    +   *       |     |    |          | |   |       `--------- search_start
    +   *       |     |    |          | |   `----------------- pathname_start
    +   *       |     |    |          | `--------------------- port
    +   *       |     |    |          `----------------------- host_end
    +   *       |     |    `---------------------------------- host_start
    +   *       |     `--------------------------------------- username_end
    +   *       `--------------------------------------------- protocol_end
    +   */
    +  if (components.protocol_end == url_components::omitted) {
    +    ada_log("url_aggregator::validate omitted protocol_end \n", to_diagram());
    +    return false;
    +  }
    +  if (components.username_end == url_components::omitted) {
    +    ada_log("url_aggregator::validate omitted username_end \n", to_diagram());
    +    return false;
    +  }
    +  if (components.host_start == url_components::omitted) {
    +    ada_log("url_aggregator::validate omitted host_start \n", to_diagram());
    +    return false;
    +  }
    +  if (components.host_end == url_components::omitted) {
    +    ada_log("url_aggregator::validate omitted host_end \n", to_diagram());
    +    return false;
    +  }
    +  if (components.pathname_start == url_components::omitted) {
    +    ada_log("url_aggregator::validate omitted pathname_start \n", to_diagram());
    +    return false;
    +  }
    +
    +  if (components.protocol_end > buffer.size()) {
    +    ada_log("url_aggregator::validate protocol_end overflow \n", to_diagram());
    +    return false;
    +  }
    +  if (components.username_end > buffer.size()) {
    +    ada_log("url_aggregator::validate username_end overflow \n", to_diagram());
    +    return false;
    +  }
    +  if (components.host_start > buffer.size()) {
    +    ada_log("url_aggregator::validate host_start overflow \n", to_diagram());
    +    return false;
    +  }
    +  if (components.host_end > buffer.size()) {
    +    ada_log("url_aggregator::validate host_end overflow \n", to_diagram());
    +    return false;
    +  }
    +  if (components.pathname_start > buffer.size()) {
    +    ada_log("url_aggregator::validate pathname_start overflow \n",
    +            to_diagram());
    +    return false;
    +  }
    +
    +  if (components.protocol_end > 0) {
    +    if (buffer[components.protocol_end - 1] != ':') {
    +      ada_log(
    +          "url_aggregator::validate missing : at the end of the protocol \n",
    +          to_diagram());
    +      return false;
    +    }
    +  }
    +
    +  if (components.username_end != buffer.size() &&
    +      components.username_end > components.protocol_end + 2) {
    +    if (buffer[components.username_end] != ':' &&
    +        buffer[components.username_end] != '@') {
    +      ada_log(
    +          "url_aggregator::validate missing : or @ at the end of the username "
    +          "\n",
    +          to_diagram());
    +      return false;
    +    }
    +  }
    +
    +  if (components.host_start != buffer.size()) {
    +    if (components.host_start > components.username_end) {
    +      if (buffer[components.host_start] != '@') {
    +        ada_log(
    +            "url_aggregator::validate missing @ at the end of the password \n",
    +            to_diagram());
    +        return false;
    +      }
    +    } else if (components.host_start == components.username_end &&
    +               components.host_end > components.host_start) {
    +      if (components.host_start == components.protocol_end + 2) {
    +        if (buffer[components.protocol_end] != '/' ||
    +            buffer[components.protocol_end + 1] != '/') {
    +          ada_log(
    +              "url_aggregator::validate missing // between protocol and host "
    +              "\n",
    +              to_diagram());
    +          return false;
    +        }
    +      } else {
    +        if (components.host_start > components.protocol_end &&
    +            buffer[components.host_start] != '@') {
    +          ada_log(
    +              "url_aggregator::validate missing @ at the end of the username "
    +              "\n",
    +              to_diagram());
    +          return false;
    +        }
    +      }
    +    } else {
    +      if (components.host_end != components.host_start) {
    +        ada_log("url_aggregator::validate expected omitted host \n",
    +                to_diagram());
    +        return false;
    +      }
    +    }
    +  }
    +  if (components.host_end != buffer.size() &&
    +      components.pathname_start > components.host_end) {
    +    if (components.pathname_start == components.host_end + 2 &&
    +        buffer[components.host_end] == '/' &&
    +        buffer[components.host_end + 1] == '.') {
    +      if (components.pathname_start + 1 >= buffer.size() ||
    +          buffer[components.pathname_start] != '/' ||
    +          buffer[components.pathname_start + 1] != '/') {
    +        ada_log(
    +            "url_aggregator::validate expected the path to begin with // \n",
    +            to_diagram());
    +        return false;
    +      }
    +    } else if (buffer[components.host_end] != ':') {
    +      ada_log("url_aggregator::validate missing : at the port \n",
    +              to_diagram());
    +      return false;
    +    }
    +  }
    +  if (components.pathname_start != buffer.size() &&
    +      components.pathname_start < components.search_start &&
    +      components.pathname_start < components.hash_start && !has_opaque_path) {
    +    if (buffer[components.pathname_start] != '/') {
    +      ada_log("url_aggregator::validate missing / at the path \n",
    +              to_diagram());
    +      return false;
    +    }
    +  }
    +  if (components.search_start != url_components::omitted) {
    +    if (buffer[components.search_start] != '?') {
    +      ada_log("url_aggregator::validate missing ? at the search \n",
    +              to_diagram());
    +      return false;
    +    }
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    if (buffer[components.hash_start] != '#') {
    +      ada_log("url_aggregator::validate missing # at the hash \n",
    +              to_diagram());
    +      return false;
    +    }
    +  }
    +
    +  return true;
    +}
    +
    +void url_aggregator::delete_dash_dot() {
    +  ada_log("url_aggregator::delete_dash_dot");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(has_dash_dot());
    +  buffer.erase(components.host_end, 2);
    +  components.pathname_start -= 2;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start -= 2;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start -= 2;
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!has_dash_dot());
    +}
    +
    +inline void url_aggregator::consume_prepared_path(std::string_view input) {
    +  ada_log("url_aggregator::consume_prepared_path ", input);
    +  /***
    +   * This is largely duplicated code from helpers::parse_prepared_path, which is
    +   * unfortunate. This particular function is nearly identical, except that it
    +   * is a method on url_aggregator. The idea is that the trivial path (which is
    +   * very common) merely appends to the buffer. This is the same trivial path as
    +   * with helpers::parse_prepared_path, except that we have the additional check
    +   * for is_at_path(). Otherwise, we grab a copy of the current path and we
    +   * modify it, and then insert it back into the buffer.
    +   */
    +  uint8_t accumulator = checkers::path_signature(input);
    +  // Let us first detect a trivial case.
    +  // If it is special, we check that we have no dot, no %,  no \ and no
    +  // character needing percent encoding. Otherwise, we check that we have no %,
    +  // no dot, and no character needing percent encoding.
    +  constexpr uint8_t need_encoding = 1;
    +  constexpr uint8_t backslash_char = 2;
    +  constexpr uint8_t dot_char = 4;
    +  constexpr uint8_t percent_char = 8;
    +  bool special = type != ada::scheme::NOT_SPECIAL;
    +  bool may_need_slow_file_handling = (type == ada::scheme::type::FILE &&
    +                                      checkers::is_windows_drive_letter(input));
    +  bool trivial_path =
    +      (special ? (accumulator == 0)
    +               : ((accumulator & (need_encoding | dot_char | percent_char)) ==
    +                  0)) &&
    +      (!may_need_slow_file_handling);
    +  if (accumulator == dot_char && !may_need_slow_file_handling) {
    +    // '4' means that we have at least one dot, but nothing that requires
    +    // percent encoding or decoding. The only part that is not trivial is
    +    // that we may have single dots and double dots path segments.
    +    // If we have such segments, then we either have a path that begins
    +    // with '.' (easy to check), or we have the sequence './'.
    +    // Note: input cannot be empty, it must at least contain one character ('.')
    +    // Note: we know that '\' is not present.
    +    if (input[0] != '.') {
    +      size_t slashdot = input.find("/.");
    +      if (slashdot == std::string_view::npos) {  // common case
    +        trivial_path = true;
    +      } else {  // uncommon
    +        // only three cases matter: /./, /.. or a final /
    +        trivial_path =
    +            !(slashdot + 2 == input.size() || input[slashdot + 2] == '.' ||
    +              input[slashdot + 2] == '/');
    +      }
    +    }
    +  }
    +  if (trivial_path && is_at_path()) {
    +    ada_log("parse_path trivial");
    +    buffer += '/';
    +    buffer += input;
    +    return;
    +  }
    +  std::string path = std::string(get_pathname());
    +  // We are going to need to look a bit at the path, but let us see if we can
    +  // ignore percent encoding *and* backslashes *and* percent characters.
    +  // Except for the trivial case, this is likely to capture 99% of paths out
    +  // there.
    +  bool fast_path =
    +      (special &&
    +       (accumulator & (need_encoding | backslash_char | percent_char)) == 0) &&
    +      (type != ada::scheme::type::FILE);
    +  if (fast_path) {
    +    ada_log("parse_prepared_path fast");
    +    // Here we don't need to worry about \ or percent encoding.
    +    // We also do not have a file protocol. We might have dots, however,
    +    // but dots must as appear as '.', and they cannot be encoded because
    +    // the symbol '%' is not present.
    +    size_t previous_location = 0;  // We start at 0.
    +    do {
    +      size_t new_location = input.find('/', previous_location);
    +      // std::string_view path_view = input;
    +      //  We process the last segment separately:
    +      if (new_location == std::string_view::npos) {
    +        std::string_view path_view = input.substr(previous_location);
    +        if (path_view == "..") {  // The path ends with ..
    +          // e.g., if you receive ".." with an empty path, you go to "/".
    +          if (path.empty()) {
    +            path = '/';
    +            update_base_pathname(path);
    +            return;
    +          }
    +          // Fast case where we have nothing to do:
    +          if (path.back() == '/') {
    +            update_base_pathname(path);
    +            return;
    +          }
    +          // If you have the path "/joe/myfriend",
    +          // then you delete 'myfriend'.
    +          path.resize(path.rfind('/') + 1);
    +          update_base_pathname(path);
    +          return;
    +        }
    +        path += '/';
    +        if (path_view != ".") {
    +          path.append(path_view);
    +        }
    +        update_base_pathname(path);
    +        return;
    +      } else {
    +        // This is a non-final segment.
    +        std::string_view path_view =
    +            input.substr(previous_location, new_location - previous_location);
    +        previous_location = new_location + 1;
    +        if (path_view == "..") {
    +          if (!path.empty()) {
    +            path.erase(path.rfind('/'));
    +          }
    +        } else if (path_view != ".") {
    +          path += '/';
    +          path.append(path_view);
    +        }
    +      }
    +    } while (true);
    +  } else {
    +    ada_log("parse_path slow");
    +    // we have reached the general case
    +    bool needs_percent_encoding = (accumulator & 1);
    +    std::string path_buffer_tmp;
    +    do {
    +      size_t location = (special && (accumulator & 2))
    +                            ? input.find_first_of("/\\")
    +                            : input.find('/');
    +      std::string_view path_view = input;
    +      if (location != std::string_view::npos) {
    +        path_view.remove_suffix(path_view.size() - location);
    +        input.remove_prefix(location + 1);
    +      }
    +      // path_buffer is either path_view or it might point at a percent encoded
    +      // temporary string.
    +      std::string_view path_buffer =
    +          (needs_percent_encoding &&
    +           ada::unicode::percent_encode(
    +               path_view, character_sets::PATH_PERCENT_ENCODE, path_buffer_tmp))
    +              ? path_buffer_tmp
    +              : path_view;
    +      if (unicode::is_double_dot_path_segment(path_buffer)) {
    +        helpers::shorten_path(path, type);
    +        if (location == std::string_view::npos) {
    +          path += '/';
    +        }
    +      } else if (unicode::is_single_dot_path_segment(path_buffer) &&
    +                 (location == std::string_view::npos)) {
    +        path += '/';
    +      }
    +      // Otherwise, if path_buffer is not a single-dot path segment, then:
    +      else if (!unicode::is_single_dot_path_segment(path_buffer)) {
    +        // If url’s scheme is "file", url’s path is empty, and path_buffer is a
    +        // Windows drive letter, then replace the second code point in
    +        // path_buffer with U+003A (:).
    +        if (type == ada::scheme::type::FILE && path.empty() &&
    +            checkers::is_windows_drive_letter(path_buffer)) {
    +          path += '/';
    +          path += path_buffer[0];
    +          path += ':';
    +          path_buffer.remove_prefix(2);
    +          path.append(path_buffer);
    +        } else {
    +          // Append path_buffer to url’s path.
    +          path += '/';
    +          path.append(path_buffer);
    +        }
    +      }
    +      if (location == std::string_view::npos) {
    +        update_base_pathname(path);
    +        return;
    +      }
    +    } while (true);
    +  }
    +}
    +}  // namespace ada
    +/* end file src/url_aggregator.cpp */
     /* end file src/ada.cpp */
    diff --git a/deps/ada/ada.h b/deps/ada/ada.h
    index 9916f41fd23b28..db24fb969c6489 100644
    --- a/deps/ada/ada.h
    +++ b/deps/ada/ada.h
    @@ -1,5 +1,4 @@
    -/* auto-generated on 2023-02-26 15:07:41 -0500. Do not edit! */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada.h
    +/* auto-generated on 2023-03-30 17:00:48 -0400. Do not edit! */
     /* begin file include/ada.h */
     /**
      * @file ada.h
    @@ -8,7 +7,144 @@
     #ifndef ADA_H
     #define ADA_H
     
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/character_sets-inl.h
    +/* begin file include/ada/ada_idna.h */
    +/* auto-generated on 2023-03-28 11:03:13 -0400. Do not edit! */
    +/* begin file include/idna.h */
    +#ifndef ADA_IDNA_H
    +#define ADA_IDNA_H
    +
    +/* begin file include/ada/idna/unicode_transcoding.h */
    +#ifndef ADA_IDNA_UNICODE_TRANSCODING_H
    +#define ADA_IDNA_UNICODE_TRANSCODING_H
    +
    +#include 
    +#include 
    +
    +namespace ada::idna {
    +
    +size_t utf8_to_utf32(const char* buf, size_t len, char32_t* utf32_output);
    +
    +size_t utf8_length_from_utf32(const char32_t* buf, size_t len);
    +
    +size_t utf32_length_from_utf8(const char* buf, size_t len);
    +
    +size_t utf32_to_utf8(const char32_t* buf, size_t len, char* utf8_output);
    +
    +}  // namespace ada::idna
    +
    +#endif  // ADA_IDNA_UNICODE_TRANSCODING_H
    +/* end file include/ada/idna/unicode_transcoding.h */
    +/* begin file include/ada/idna/mapping.h */
    +#ifndef ADA_IDNA_MAPPING_H
    +#define ADA_IDNA_MAPPING_H
    +
    +#include 
    +#include 
    +namespace ada::idna {
    +
    +// If the input is ascii, then the mapping is just -> lower case.
    +void ascii_map(char* input, size_t length);
    +// check whether an ascii string needs mapping
    +bool ascii_has_upper_case(char* input, size_t length);
    +// Map the characters according to IDNA, returning the empty string on error.
    +std::u32string map(std::u32string_view input);
    +
    +}  // namespace ada::idna
    +
    +#endif
    +/* end file include/ada/idna/mapping.h */
    +/* begin file include/ada/idna/normalization.h */
    +#ifndef ADA_IDNA_NORMALIZATION_H
    +#define ADA_IDNA_NORMALIZATION_H
    +
    +#include 
    +#include 
    +namespace ada::idna {
    +
    +// Normalize the characters according to IDNA (Unicode Normalization Form C).
    +void normalize(std::u32string& input);
    +
    +}  // namespace ada::idna
    +#endif
    +/* end file include/ada/idna/normalization.h */
    +/* begin file include/ada/idna/punycode.h */
    +#ifndef ADA_IDNA_PUNYCODE_H
    +#define ADA_IDNA_PUNYCODE_H
    +
    +#include 
    +#include 
    +namespace ada::idna {
    +
    +bool punycode_to_utf32(std::string_view input, std::u32string& out);
    +bool verify_punycode(std::string_view input);
    +bool utf32_to_punycode(std::u32string_view input, std::string& out);
    +
    +}  // namespace ada::idna
    +
    +#endif  // ADA_IDNA_PUNYCODE_H
    +/* end file include/ada/idna/punycode.h */
    +/* begin file include/ada/idna/validity.h */
    +#ifndef ADA_IDNA_VALIDITY_H
    +#define ADA_IDNA_VALIDITY_H
    +
    +#include 
    +#include 
    +
    +namespace ada::idna {
    +
    +/**
    + * @see https://www.unicode.org/reports/tr46/#Validity_Criteria
    + */
    +bool is_label_valid(const std::u32string_view label);
    +
    +}  // namespace ada::idna
    +
    +#endif  // ADA_IDNA_VALIDITY_H
    +/* end file include/ada/idna/validity.h */
    +/* begin file include/ada/idna/to_ascii.h */
    +#ifndef ADA_IDNA_TO_ASCII_H
    +#define ADA_IDNA_TO_ASCII_H
    +
    +#include 
    +#include 
    +
    +namespace ada::idna {
    +// Converts a domain (e.g., www.google.com) possibly containing international
    +// characters to an ascii domain (with punycode). It will not do percent
    +// decoding: percent decoding should be done prior to calling this function. We
    +// do not remove tabs and spaces, they should have been removed prior to calling
    +// this function. We also do not trim control characters. We also assume that
    +// the input is not empty. We return "" on error. For now.
    +std::string to_ascii(std::string_view ut8_string);
    +
    +bool constexpr begins_with(std::u32string_view view,
    +                           std::u32string_view prefix);
    +bool constexpr begins_with(std::string_view view, std::string_view prefix);
    +
    +bool constexpr is_ascii(std::u32string_view view);
    +bool constexpr is_ascii(std::string_view view);
    +
    +std::string from_ascii_to_ascii(std::string_view ut8_string);
    +
    +}  // namespace ada::idna
    +
    +#endif  // ADA_IDNA_TO_ASCII_H
    +/* end file include/ada/idna/to_ascii.h */
    +/* begin file include/ada/idna/to_unicode.h */
    +
    +#ifndef ADA_IDNA_TO_UNICODE_H
    +#define ADA_IDNA_TO_UNICODE_H
    +
    +namespace ada::idna {
    +std::string to_unicode(std::string_view input);
    +}  // namespace ada::idna
    +
    +#endif  // ADA_IDNA_TO_UNICODE_H
    +/* end file include/ada/idna/to_unicode.h */
    +
    +#endif
    +/* end file include/idna.h */
    +/* end file include/ada/ada_idna.h */
     /* begin file include/ada/character_sets-inl.h */
     /**
      * @file character_sets-inl.h
    @@ -19,7 +155,6 @@
     #ifndef ADA_CHARACTER_SETS_INL_H
     #define ADA_CHARACTER_SETS_INL_H
     
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/character_sets.h
     /* begin file include/ada/character_sets.h */
     /**
      * @file character_sets.h
    @@ -30,7 +165,6 @@
     #ifndef ADA_CHARACTER_SETS_H
     #define ADA_CHARACTER_SETS_H
     
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/common_defs.h
     /* begin file include/ada/common_defs.h */
     /**
      * @file common_defs.h
    @@ -52,19 +186,21 @@
     #else
     // just regular visual studio (best guess)
     #define ADA_REGULAR_VISUAL_STUDIO 1
    -#endif // __clang__
    -#endif // _MSC_VER
    -
    +#endif  // __clang__
    +#endif  // _MSC_VER
     
     #if defined(__GNUC__)
    -  // Marks a block with a name so that MCA analysis can see it.
    -  #define ADA_BEGIN_DEBUG_BLOCK(name) __asm volatile("# LLVM-MCA-BEGIN " #name);
    -  #define ADA_END_DEBUG_BLOCK(name) __asm volatile("# LLVM-MCA-END " #name);
    -  #define ADA_DEBUG_BLOCK(name, block) BEGIN_DEBUG_BLOCK(name); block; END_DEBUG_BLOCK(name);
    +// Marks a block with a name so that MCA analysis can see it.
    +#define ADA_BEGIN_DEBUG_BLOCK(name) __asm volatile("# LLVM-MCA-BEGIN " #name);
    +#define ADA_END_DEBUG_BLOCK(name) __asm volatile("# LLVM-MCA-END " #name);
    +#define ADA_DEBUG_BLOCK(name, block) \
    +  BEGIN_DEBUG_BLOCK(name);           \
    +  block;                             \
    +  END_DEBUG_BLOCK(name);
     #else
    -  #define ADA_BEGIN_DEBUG_BLOCK(name)
    -  #define ADA_END_DEBUG_BLOCK(name)
    -  #define ADA_DEBUG_BLOCK(name, block)
    +#define ADA_BEGIN_DEBUG_BLOCK(name)
    +#define ADA_END_DEBUG_BLOCK(name)
    +#define ADA_DEBUG_BLOCK(name, block)
     #endif
     
     // Align to N-byte boundary
    @@ -75,105 +211,119 @@
     
     #if defined(ADA_REGULAR_VISUAL_STUDIO)
     
    -  #define ada_really_inline __forceinline
    -  #define ada_never_inline __declspec(noinline)
    -
    -  #define ada_unused
    -  #define ada_warn_unused
    -
    -  #ifndef ada_likely
    -  #define ada_likely(x) x
    -  #endif
    -  #ifndef ada_unlikely
    -  #define ada_unlikely(x) x
    -  #endif
    -
    -  #define ADA_PUSH_DISABLE_WARNINGS __pragma(warning( push ))
    -  #define ADA_PUSH_DISABLE_ALL_WARNINGS __pragma(warning( push, 0 ))
    -  #define ADA_DISABLE_VS_WARNING(WARNING_NUMBER) __pragma(warning( disable : WARNING_NUMBER ))
    -  // Get rid of Intellisense-only warnings (Code Analysis)
    -  // Though __has_include is C++17, it is supported in Visual Studio 2017 or better (_MSC_VER>=1910).
    -  #ifdef __has_include
    -  #if __has_include()
    -  #include 
    -  #define ADA_DISABLE_UNDESIRED_WARNINGS ADA_DISABLE_VS_WARNING(ALL_CPPCORECHECK_WARNINGS)
    -  #endif
    -  #endif
    -
    -  #ifndef ADA_DISABLE_UNDESIRED_WARNINGS
    -  #define ADA_DISABLE_UNDESIRED_WARNINGS
    -  #endif
    -
    -  #define ADA_DISABLE_DEPRECATED_WARNING ADA_DISABLE_VS_WARNING(4996)
    -  #define ADA_DISABLE_STRICT_OVERFLOW_WARNING
    -  #define ADA_POP_DISABLE_WARNINGS __pragma(warning( pop ))
    -
    -#else // ADA_REGULAR_VISUAL_STUDIO
    -
    -  #define ada_really_inline inline __attribute__((always_inline))
    -  #define ada_never_inline inline __attribute__((noinline))
    -
    -  #define ada_unused __attribute__((unused))
    -  #define ada_warn_unused __attribute__((warn_unused_result))
    -
    -  #ifndef ada_likely
    -  #define ada_likely(x) __builtin_expect(!!(x), 1)
    -  #endif
    -  #ifndef ada_unlikely
    -  #define ada_unlikely(x) __builtin_expect(!!(x), 0)
    -  #endif
    -
    -  #define ADA_PUSH_DISABLE_WARNINGS _Pragma("GCC diagnostic push")
    -  // gcc doesn't seem to disable all warnings with all and extra, add warnings here as necessary
    -  #define ADA_PUSH_DISABLE_ALL_WARNINGS ADA_PUSH_DISABLE_WARNINGS \
    -    ADA_DISABLE_GCC_WARNING(-Weffc++) \
    -    ADA_DISABLE_GCC_WARNING(-Wall) \
    -    ADA_DISABLE_GCC_WARNING(-Wconversion) \
    -    ADA_DISABLE_GCC_WARNING(-Wextra) \
    -    ADA_DISABLE_GCC_WARNING(-Wattributes) \
    -    ADA_DISABLE_GCC_WARNING(-Wimplicit-fallthrough) \
    -    ADA_DISABLE_GCC_WARNING(-Wnon-virtual-dtor) \
    -    ADA_DISABLE_GCC_WARNING(-Wreturn-type) \
    -    ADA_DISABLE_GCC_WARNING(-Wshadow) \
    -    ADA_DISABLE_GCC_WARNING(-Wunused-parameter) \
    -    ADA_DISABLE_GCC_WARNING(-Wunused-variable)
    -  #define ADA_PRAGMA(P) _Pragma(#P)
    -  #define ADA_DISABLE_GCC_WARNING(WARNING) ADA_PRAGMA(GCC diagnostic ignored #WARNING)
    -  #if defined(ADA_CLANG_VISUAL_STUDIO)
    -  #define ADA_DISABLE_UNDESIRED_WARNINGS ADA_DISABLE_GCC_WARNING(-Wmicrosoft-include)
    -  #else
    -  #define ADA_DISABLE_UNDESIRED_WARNINGS
    -  #endif
    -  #define ADA_DISABLE_DEPRECATED_WARNING ADA_DISABLE_GCC_WARNING(-Wdeprecated-declarations)
    -  #define ADA_DISABLE_STRICT_OVERFLOW_WARNING ADA_DISABLE_GCC_WARNING(-Wstrict-overflow)
    -  #define ADA_POP_DISABLE_WARNINGS _Pragma("GCC diagnostic pop")
    -
    -#endif // MSC_VER
    +#define ada_really_inline __forceinline
    +#define ada_never_inline __declspec(noinline)
    +
    +#define ada_unused
    +#define ada_warn_unused
    +
    +#ifndef ada_likely
    +#define ada_likely(x) x
    +#endif
    +#ifndef ada_unlikely
    +#define ada_unlikely(x) x
    +#endif
    +
    +#define ADA_PUSH_DISABLE_WARNINGS __pragma(warning(push))
    +#define ADA_PUSH_DISABLE_ALL_WARNINGS __pragma(warning(push, 0))
    +#define ADA_DISABLE_VS_WARNING(WARNING_NUMBER) \
    +  __pragma(warning(disable : WARNING_NUMBER))
    +// Get rid of Intellisense-only warnings (Code Analysis)
    +// Though __has_include is C++17, it is supported in Visual Studio 2017 or
    +// better (_MSC_VER>=1910).
    +#ifdef __has_include
    +#if __has_include()
    +#include 
    +#define ADA_DISABLE_UNDESIRED_WARNINGS \
    +  ADA_DISABLE_VS_WARNING(ALL_CPPCORECHECK_WARNINGS)
    +#endif
    +#endif
    +
    +#ifndef ADA_DISABLE_UNDESIRED_WARNINGS
    +#define ADA_DISABLE_UNDESIRED_WARNINGS
    +#endif
    +
    +#define ADA_DISABLE_DEPRECATED_WARNING ADA_DISABLE_VS_WARNING(4996)
    +#define ADA_DISABLE_STRICT_OVERFLOW_WARNING
    +#define ADA_POP_DISABLE_WARNINGS __pragma(warning(pop))
    +
    +#else  // ADA_REGULAR_VISUAL_STUDIO
    +
    +#define ada_really_inline inline __attribute__((always_inline))
    +#define ada_never_inline inline __attribute__((noinline))
    +
    +#define ada_unused __attribute__((unused))
    +#define ada_warn_unused __attribute__((warn_unused_result))
    +
    +#ifndef ada_likely
    +#define ada_likely(x) __builtin_expect(!!(x), 1)
    +#endif
    +#ifndef ada_unlikely
    +#define ada_unlikely(x) __builtin_expect(!!(x), 0)
    +#endif
    +
    +#define ADA_PUSH_DISABLE_WARNINGS _Pragma("GCC diagnostic push")
    +// gcc doesn't seem to disable all warnings with all and extra, add warnings
    +// here as necessary
    +#define ADA_PUSH_DISABLE_ALL_WARNINGS               \
    +  ADA_PUSH_DISABLE_WARNINGS                         \
    +  ADA_DISABLE_GCC_WARNING("-Weffc++")               \
    +  ADA_DISABLE_GCC_WARNING("-Wall")                  \
    +  ADA_DISABLE_GCC_WARNING("-Wconversion")           \
    +  ADA_DISABLE_GCC_WARNING("-Wextra")                \
    +  ADA_DISABLE_GCC_WARNING("-Wattributes")           \
    +  ADA_DISABLE_GCC_WARNING("-Wimplicit-fallthrough") \
    +  ADA_DISABLE_GCC_WARNING("-Wnon-virtual-dtor")     \
    +  ADA_DISABLE_GCC_WARNING("-Wreturn-type")          \
    +  ADA_DISABLE_GCC_WARNING("-Wshadow")               \
    +  ADA_DISABLE_GCC_WARNING("-Wunused-parameter")     \
    +  ADA_DISABLE_GCC_WARNING("-Wunused-variable")
    +#define ADA_PRAGMA(P) _Pragma(#P)
    +#define ADA_DISABLE_GCC_WARNING(WARNING) \
    +  ADA_PRAGMA(GCC diagnostic ignored WARNING)
    +#if defined(ADA_CLANG_VISUAL_STUDIO)
    +#define ADA_DISABLE_UNDESIRED_WARNINGS \
    +  ADA_DISABLE_GCC_WARNING("-Wmicrosoft-include")
    +#else
    +#define ADA_DISABLE_UNDESIRED_WARNINGS
    +#endif
    +#define ADA_DISABLE_DEPRECATED_WARNING \
    +  ADA_DISABLE_GCC_WARNING("-Wdeprecated-declarations")
    +#define ADA_DISABLE_STRICT_OVERFLOW_WARNING \
    +  ADA_DISABLE_GCC_WARNING("-Wstrict-overflow")
    +#define ADA_POP_DISABLE_WARNINGS _Pragma("GCC diagnostic pop")
    +
    +#endif  // MSC_VER
     
     #if defined(ADA_VISUAL_STUDIO)
    -    /**
    -     * It does not matter here whether you are using
    -     * the regular visual studio or clang under visual
    -     * studio.
    -     */
    -    #if ADA_USING_LIBRARY
    -    #define ADA_DLLIMPORTEXPORT __declspec(dllimport)
    -    #else
    -    #define ADA_DLLIMPORTEXPORT __declspec(dllexport)
    -    #endif
    +/**
    + * It does not matter here whether you are using
    + * the regular visual studio or clang under visual
    + * studio.
    + */
    +#if ADA_USING_LIBRARY
    +#define ADA_DLLIMPORTEXPORT __declspec(dllimport)
    +#else
    +#define ADA_DLLIMPORTEXPORT __declspec(dllexport)
    +#endif
     #else
    -    #define ADA_DLLIMPORTEXPORT
    +#define ADA_DLLIMPORTEXPORT
     #endif
     
     /// If EXPR is an error, returns it.
    -#define ADA_TRY(EXPR) { auto _err = (EXPR); if (_err) { return _err; } }
    +#define ADA_TRY(EXPR)   \
    +  {                     \
    +    auto _err = (EXPR); \
    +    if (_err) {         \
    +      return _err;      \
    +    }                   \
    +  }
     
     // __has_cpp_attribute is part of C++20
     #if !defined(__has_cpp_attribute)
     #define __has_cpp_attribute(x) 0
     #endif
     
    -
     #if __has_cpp_attribute(gnu::noinline)
     #define ADA_ATTRIBUTE_NOINLINE [[gnu::noinline]]
     #else
    @@ -181,23 +331,21 @@
     #endif
     
     namespace ada {
    -  [[noreturn]] inline void unreachable() {
    +[[noreturn]] inline void unreachable() {
     #ifdef __GNUC__
    -    __builtin_unreachable();
    +  __builtin_unreachable();
     #elif defined(_MSC_VER)
    -    __assume(false);
    +  __assume(false);
     #else
     #endif
    -  }
     }
    -
    -
    +}  // namespace ada
     
     #if defined(__GNUC__) && !defined(__clang__)
     #if __GNUC__ <= 8
     #define ADA_OLD_GCC 1
    -#endif //  __GNUC__ <= 8
    -#endif // defined(__GNUC__) && !defined(__clang__)
    +#endif  //  __GNUC__ <= 8
    +#endif  // defined(__GNUC__) && !defined(__clang__)
     
     #if ADA_OLD_GCC
     #define ada_constexpr
    @@ -205,56 +353,107 @@ namespace ada {
     #define ada_constexpr constexpr
     #endif
     
    - #if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
    - #define ADA_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
    - #elif defined(_WIN32)
    - #define ADA_IS_BIG_ENDIAN 0
    - #else
    - #if defined(__APPLE__) || defined(__FreeBSD__) // defined __BYTE_ORDER__ && defined __ORDER_BIG_ENDIAN__
    - #include 
    - #elif defined(sun) || defined(__sun) // defined(__APPLE__) || defined(__FreeBSD__)
    - #include 
    - #else  // defined(__APPLE__) || defined(__FreeBSD__)
    -
    - #ifdef __has_include
    - #if __has_include()
    - #include 
    - #endif //__has_include()
    - #endif //__has_include
    -
    - #endif // defined(__APPLE__) || defined(__FreeBSD__)
    -
    -
    - #ifndef !defined(__BYTE_ORDER__) || !defined(__ORDER_LITTLE_ENDIAN__)
    - #define ADA_IS_BIG_ENDIAN 0
    - #endif
    -
    - #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    - #define ADA_IS_BIG_ENDIAN 0
    - #else // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    - #define ADA_IS_BIG_ENDIAN 1
    - #endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    -
    - #endif // defined __BYTE_ORDER__ && defined __ORDER_BIG_ENDIAN__
    -
    -
    -#ifndef ADA_HAS_ICU
    -#if __has_include()
    -#define ADA_HAS_ICU 1
    +#if defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
    +#define ADA_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
    +#elif defined(_WIN32)
    +#define ADA_IS_BIG_ENDIAN 0
     #else
    -#define ADA_HAS_ICU 0
    -#endif // __has_include()
    -#endif // ADA_HAS_ICU
    -
    -#if ADA_HAS_ICU
    -#include 
    -#include 
    -#include 
    -#endif // ADA_HAS_ICU
    +#if defined(__APPLE__) || \
    +    defined(__FreeBSD__)  // defined __BYTE_ORDER__ && defined
    +                          // __ORDER_BIG_ENDIAN__
    +#include 
    +#elif defined(sun) || \
    +    defined(__sun)  // defined(__APPLE__) || defined(__FreeBSD__)
    +#include 
    +#else  // defined(__APPLE__) || defined(__FreeBSD__)
    +
    +#ifdef __has_include
    +#if __has_include()
    +#include 
    +#endif  //__has_include()
    +#endif  //__has_include
    +
    +#endif  // defined(__APPLE__) || defined(__FreeBSD__)
    +
    +#ifndef !defined(__BYTE_ORDER__) || !defined(__ORDER_LITTLE_ENDIAN__)
    +#define ADA_IS_BIG_ENDIAN 0
    +#endif
     
    -#define ADA_WINDOWS_TO_ASCII_FALLBACK 0 // we never use anything but ICU. No fallback.
    +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    +#define ADA_IS_BIG_ENDIAN 0
    +#else  // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    +#define ADA_IS_BIG_ENDIAN 1
    +#endif  // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
    +
    +#endif  // defined __BYTE_ORDER__ && defined __ORDER_BIG_ENDIAN__
    +
    +// Unless the programmer has already set ADA_DEVELOPMENT_CHECKS,
    +// we want to set it under debug builds. We detect a debug build
    +// under Visual Studio when the _DEBUG macro is set. Under the other
    +// compilers, we use the fact that they define __OPTIMIZE__ whenever
    +// they allow optimizations.
    +// It is possible that this could miss some cases where ADA_DEVELOPMENT_CHECKS
    +// is helpful, but the programmer can set the macro ADA_DEVELOPMENT_CHECKS.
    +// It could also wrongly set ADA_DEVELOPMENT_CHECKS (e.g., if the programmer
    +// sets _DEBUG in a release build under Visual Studio, or if some compiler fails
    +// to set the __OPTIMIZE__ macro).
    +#if !defined(ADA_DEVELOPMENT_CHECKS) && !defined(NDEBUG)
    +#ifdef _MSC_VER
    +// Visual Studio seems to set _DEBUG for debug builds.
    +#ifdef _DEBUG
    +#define ADA_DEVELOPMENT_CHECKS 1
    +#endif  // _DEBUG
    +#else   // _MSC_VER
    +// All other compilers appear to set __OPTIMIZE__ to a positive integer
    +// when the compiler is optimizing.
    +#ifndef __OPTIMIZE__
    +#define ADA_DEVELOPMENT_CHECKS 1
    +#endif  // __OPTIMIZE__
    +#endif  // _MSC_VER
    +#endif  // SIMDJSON_DEVELOPMENT_CHECKS
    +
    +#define ADA_STR(x) #x
    +
    +#if ADA_DEVELOPMENT_CHECKS
    +#define ADA_REQUIRE(EXPR) \
    +  {                       \
    +    if (!(EXPR) { abort(); }) }
    +
    +#define ADA_FAIL(MESSAGE)                            \
    +  do {                                               \
    +    std::cerr << "FAIL: " << (MESSAGE) << std::endl; \
    +    abort();                                         \
    +  } while (0);
    +#define ADA_ASSERT_EQUAL(LHS, RHS, MESSAGE)                                    \
    +  do {                                                                         \
    +    if (LHS != RHS) {                                                          \
    +      std::cerr << "Mismatch: '" << LHS << "' - '" << RHS << "'" << std::endl; \
    +      ADA_FAIL(MESSAGE);                                                       \
    +    }                                                                          \
    +  } while (0);
    +#define ADA_ASSERT_TRUE(COND)                                               \
    +  do {                                                                      \
    +    if (!(COND)) {                                                          \
    +      std::cerr << "Assert at line " << __LINE__ << " of file " << __FILE__ \
    +                << std::endl;                                               \
    +      ADA_FAIL(ADA_STR(COND));                                              \
    +    }                                                                       \
    +  } while (0);
    +#else
    +#define ADA_FAIL(MESSAGE)
    +#define ADA_ASSERT_EQUAL(LHS, RHS, MESSAGE)
    +#define ADA_ASSERT_TRUE(COND)
    +#endif
     
    -#endif // ADA_COMMON_DEFS_H
    +#ifdef ADA_VISUAL_STUDIO
    +#define ADA_ASSUME(COND) __assume(COND)
    +#else
    +#define ADA_ASSUME(COND)                  \
    +  do {                                    \
    +    if (!(COND)) __builtin_unreachable(); \
    +  } while (0)
    +#endif
    +#endif  // ADA_COMMON_DEFS_H
     /* end file include/ada/common_defs.h */
     #include 
     
    @@ -263,148 +462,81 @@ namespace ada {
      * @brief Includes the definitions for unicode character sets.
      */
     namespace ada::character_sets {
    -  ada_really_inline bool bit_at(const uint8_t a[], const uint8_t i);
    -} // namespace ada::character_sets
    +ada_really_inline bool bit_at(const uint8_t a[], const uint8_t i);
    +}  // namespace ada::character_sets
     
    -#endif // ADA_CHARACTER_SETS_H
    +#endif  // ADA_CHARACTER_SETS_H
     /* end file include/ada/character_sets.h */
     
     namespace ada::character_sets {
     
    -  constexpr char hex[1024] =
    -      "%00\0%01\0%02\0%03\0%04\0%05\0%06\0%07\0"
    -      "%08\0%09\0%0A\0%0B\0%0C\0%0D\0%0E\0%0F\0"
    -      "%10\0%11\0%12\0%13\0%14\0%15\0%16\0%17\0"
    -      "%18\0%19\0%1A\0%1B\0%1C\0%1D\0%1E\0%1F\0"
    -      "%20\0%21\0%22\0%23\0%24\0%25\0%26\0%27\0"
    -      "%28\0%29\0%2A\0%2B\0%2C\0%2D\0%2E\0%2F\0"
    -      "%30\0%31\0%32\0%33\0%34\0%35\0%36\0%37\0"
    -      "%38\0%39\0%3A\0%3B\0%3C\0%3D\0%3E\0%3F\0"
    -      "%40\0%41\0%42\0%43\0%44\0%45\0%46\0%47\0"
    -      "%48\0%49\0%4A\0%4B\0%4C\0%4D\0%4E\0%4F\0"
    -      "%50\0%51\0%52\0%53\0%54\0%55\0%56\0%57\0"
    -      "%58\0%59\0%5A\0%5B\0%5C\0%5D\0%5E\0%5F\0"
    -      "%60\0%61\0%62\0%63\0%64\0%65\0%66\0%67\0"
    -      "%68\0%69\0%6A\0%6B\0%6C\0%6D\0%6E\0%6F\0"
    -      "%70\0%71\0%72\0%73\0%74\0%75\0%76\0%77\0"
    -      "%78\0%79\0%7A\0%7B\0%7C\0%7D\0%7E\0%7F\0"
    -      "%80\0%81\0%82\0%83\0%84\0%85\0%86\0%87\0"
    -      "%88\0%89\0%8A\0%8B\0%8C\0%8D\0%8E\0%8F\0"
    -      "%90\0%91\0%92\0%93\0%94\0%95\0%96\0%97\0"
    -      "%98\0%99\0%9A\0%9B\0%9C\0%9D\0%9E\0%9F\0"
    -      "%A0\0%A1\0%A2\0%A3\0%A4\0%A5\0%A6\0%A7\0"
    -      "%A8\0%A9\0%AA\0%AB\0%AC\0%AD\0%AE\0%AF\0"
    -      "%B0\0%B1\0%B2\0%B3\0%B4\0%B5\0%B6\0%B7\0"
    -      "%B8\0%B9\0%BA\0%BB\0%BC\0%BD\0%BE\0%BF\0"
    -      "%C0\0%C1\0%C2\0%C3\0%C4\0%C5\0%C6\0%C7\0"
    -      "%C8\0%C9\0%CA\0%CB\0%CC\0%CD\0%CE\0%CF\0"
    -      "%D0\0%D1\0%D2\0%D3\0%D4\0%D5\0%D6\0%D7\0"
    -      "%D8\0%D9\0%DA\0%DB\0%DC\0%DD\0%DE\0%DF\0"
    -      "%E0\0%E1\0%E2\0%E3\0%E4\0%E5\0%E6\0%E7\0"
    -      "%E8\0%E9\0%EA\0%EB\0%EC\0%ED\0%EE\0%EF\0"
    -      "%F0\0%F1\0%F2\0%F3\0%F4\0%F5\0%F6\0%F7\0"
    -      "%F8\0%F9\0%FA\0%FB\0%FC\0%FD\0%FE\0%FF";
    -
    -  constexpr uint8_t C0_CONTROL_PERCENT_ENCODE[32] = {
    -      // 00     01     02     03     04     05     06     07
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 08     09     0A     0B     0C     0D     0E     0F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 10     11     12     13     14     15     16     17
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 18     19     1A     1B     1C     1D     1E     1F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 20     21     22     23     24     25     26     27
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 28     29     2A     2B     2C     2D     2E     2F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 30     31     32     33     34     35     36     37
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 38     39     3A     3B     3C     3D     3E     3F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 40     41     42     43     44     45     46     47
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 48     49     4A     4B     4C     4D     4E     4F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 50     51     52     53     54     55     56     57
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 58     59     5A     5B     5C     5D     5E     5F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 60     61     62     63     64     65     66     67
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 68     69     6A     6B     6C     6D     6E     6F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 70     71     72     73     74     75     76     77
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 78     79     7A     7B     7C     7D     7E     7F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
    -      // 80     81     82     83     84     85     86     87
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 88     89     8A     8B     8C     8D     8E     8F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 90     91     92     93     94     95     96     97
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 98     99     9A     9B     9C     9D     9E     9F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // A0     A1     A2     A3     A4     A5     A6     A7
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // A8     A9     AA     AB     AC     AD     AE     AF
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // B0     B1     B2     B3     B4     B5     B6     B7
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // B8     B9     BA     BB     BC     BD     BE     BF
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // C0     C1     C2     C3     C4     C5     C6     C7
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // C8     C9     CA     CB     CC     CD     CE     CF
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // D0     D1     D2     D3     D4     D5     D6     D7
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // D8     D9     DA     DB     DC     DD     DE     DF
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // E0     E1     E2     E3     E4     E5     E6     E7
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // E8     E9     EA     EB     EC     ED     EE     EF
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // F0     F1     F2     F3     F4     F5     F6     F7
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // F8     F9     FA     FB     FC     FD     FE     FF
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
    -    };
    -
    -  constexpr uint8_t SPECIAL_QUERY_PERCENT_ENCODE[32] = {
    -      // 00     01     02     03     04     05     06     07
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 08     09     0A     0B     0C     0D     0E     0F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 10     11     12     13     14     15     16     17
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 18     19     1A     1B     1C     1D     1E     1F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 20     21     22     23     24     25     26     27
    -      0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x80,
    -      // 28     29     2A     2B     2C     2D     2E     2F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 30     31     32     33     34     35     36     37
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 38     39     3A     3B     3C     3D     3E     3F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
    -      // 40     41     42     43     44     45     46     47
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 48     49     4A     4B     4C     4D     4E     4F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 50     51     52     53     54     55     56     57
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 58     59     5A     5B     5C     5D     5E     5F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 60     61     62     63     64     65     66     67
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 68     69     6A     6B     6C     6D     6E     6F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 70     71     72     73     74     75     76     77
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 78     79     7A     7B     7C     7D     7E     7F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
    +constexpr char hex[1024] =
    +    "%00\0%01\0%02\0%03\0%04\0%05\0%06\0%07\0"
    +    "%08\0%09\0%0A\0%0B\0%0C\0%0D\0%0E\0%0F\0"
    +    "%10\0%11\0%12\0%13\0%14\0%15\0%16\0%17\0"
    +    "%18\0%19\0%1A\0%1B\0%1C\0%1D\0%1E\0%1F\0"
    +    "%20\0%21\0%22\0%23\0%24\0%25\0%26\0%27\0"
    +    "%28\0%29\0%2A\0%2B\0%2C\0%2D\0%2E\0%2F\0"
    +    "%30\0%31\0%32\0%33\0%34\0%35\0%36\0%37\0"
    +    "%38\0%39\0%3A\0%3B\0%3C\0%3D\0%3E\0%3F\0"
    +    "%40\0%41\0%42\0%43\0%44\0%45\0%46\0%47\0"
    +    "%48\0%49\0%4A\0%4B\0%4C\0%4D\0%4E\0%4F\0"
    +    "%50\0%51\0%52\0%53\0%54\0%55\0%56\0%57\0"
    +    "%58\0%59\0%5A\0%5B\0%5C\0%5D\0%5E\0%5F\0"
    +    "%60\0%61\0%62\0%63\0%64\0%65\0%66\0%67\0"
    +    "%68\0%69\0%6A\0%6B\0%6C\0%6D\0%6E\0%6F\0"
    +    "%70\0%71\0%72\0%73\0%74\0%75\0%76\0%77\0"
    +    "%78\0%79\0%7A\0%7B\0%7C\0%7D\0%7E\0%7F\0"
    +    "%80\0%81\0%82\0%83\0%84\0%85\0%86\0%87\0"
    +    "%88\0%89\0%8A\0%8B\0%8C\0%8D\0%8E\0%8F\0"
    +    "%90\0%91\0%92\0%93\0%94\0%95\0%96\0%97\0"
    +    "%98\0%99\0%9A\0%9B\0%9C\0%9D\0%9E\0%9F\0"
    +    "%A0\0%A1\0%A2\0%A3\0%A4\0%A5\0%A6\0%A7\0"
    +    "%A8\0%A9\0%AA\0%AB\0%AC\0%AD\0%AE\0%AF\0"
    +    "%B0\0%B1\0%B2\0%B3\0%B4\0%B5\0%B6\0%B7\0"
    +    "%B8\0%B9\0%BA\0%BB\0%BC\0%BD\0%BE\0%BF\0"
    +    "%C0\0%C1\0%C2\0%C3\0%C4\0%C5\0%C6\0%C7\0"
    +    "%C8\0%C9\0%CA\0%CB\0%CC\0%CD\0%CE\0%CF\0"
    +    "%D0\0%D1\0%D2\0%D3\0%D4\0%D5\0%D6\0%D7\0"
    +    "%D8\0%D9\0%DA\0%DB\0%DC\0%DD\0%DE\0%DF\0"
    +    "%E0\0%E1\0%E2\0%E3\0%E4\0%E5\0%E6\0%E7\0"
    +    "%E8\0%E9\0%EA\0%EB\0%EC\0%ED\0%EE\0%EF\0"
    +    "%F0\0%F1\0%F2\0%F3\0%F4\0%F5\0%F6\0%F7\0"
    +    "%F8\0%F9\0%FA\0%FB\0%FC\0%FD\0%FE\0%FF";
    +
    +constexpr uint8_t C0_CONTROL_PERCENT_ENCODE[32] = {
    +    // 00     01     02     03     04     05     06     07
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 08     09     0A     0B     0C     0D     0E     0F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 10     11     12     13     14     15     16     17
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 18     19     1A     1B     1C     1D     1E     1F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 20     21     22     23     24     25     26     27
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 28     29     2A     2B     2C     2D     2E     2F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 30     31     32     33     34     35     36     37
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 38     39     3A     3B     3C     3D     3E     3F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 40     41     42     43     44     45     46     47
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 48     49     4A     4B     4C     4D     4E     4F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 50     51     52     53     54     55     56     57
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 58     59     5A     5B     5C     5D     5E     5F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 60     61     62     63     64     65     66     67
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 68     69     6A     6B     6C     6D     6E     6F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 70     71     72     73     74     75     76     77
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 78     79     7A     7B     7C     7D     7E     7F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
         // 80     81     82     83     84     85     86     87
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // 88     89     8A     8B     8C     8D     8E     8F
    @@ -436,42 +568,41 @@ namespace ada::character_sets {
         // F0     F1     F2     F3     F4     F5     F6     F7
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // F8     F9     FA     FB     FC     FD     FE     FF
    -    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
    -    };
    -
    -  constexpr uint8_t QUERY_PERCENT_ENCODE[32] = {
    -      // 00     01     02     03     04     05     06     07
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 08     09     0A     0B     0C     0D     0E     0F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 10     11     12     13     14     15     16     17
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 18     19     1A     1B     1C     1D     1E     1F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 20     21     22     23     24     25     26     27
    -      0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 28     29     2A     2B     2C     2D     2E     2F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 30     31     32     33     34     35     36     37
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 38     39     3A     3B     3C     3D     3E     3F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
    -      // 40     41     42     43     44     45     46     47
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 48     49     4A     4B     4C     4D     4E     4F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 50     51     52     53     54     55     56     57
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 58     59     5A     5B     5C     5D     5E     5F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 60     61     62     63     64     65     66     67
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 68     69     6A     6B     6C     6D     6E     6F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 70     71     72     73     74     75     76     77
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 78     79     7A     7B     7C     7D     7E     7F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
    +
    +constexpr uint8_t SPECIAL_QUERY_PERCENT_ENCODE[32] = {
    +    // 00     01     02     03     04     05     06     07
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 08     09     0A     0B     0C     0D     0E     0F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 10     11     12     13     14     15     16     17
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 18     19     1A     1B     1C     1D     1E     1F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 20     21     22     23     24     25     26     27
    +    0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x80,
    +    // 28     29     2A     2B     2C     2D     2E     2F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 30     31     32     33     34     35     36     37
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 38     39     3A     3B     3C     3D     3E     3F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
    +    // 40     41     42     43     44     45     46     47
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 48     49     4A     4B     4C     4D     4E     4F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 50     51     52     53     54     55     56     57
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 58     59     5A     5B     5C     5D     5E     5F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 60     61     62     63     64     65     66     67
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 68     69     6A     6B     6C     6D     6E     6F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 70     71     72     73     74     75     76     77
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 78     79     7A     7B     7C     7D     7E     7F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
         // 80     81     82     83     84     85     86     87
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // 88     89     8A     8B     8C     8D     8E     8F
    @@ -503,42 +634,41 @@ namespace ada::character_sets {
         // F0     F1     F2     F3     F4     F5     F6     F7
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // F8     F9     FA     FB     FC     FD     FE     FF
    -    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
    -    };
    -
    -  constexpr uint8_t FRAGMENT_PERCENT_ENCODE[32] = {
    -      // 00     01     02     03     04     05     06     07
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 08     09     0A     0B     0C     0D     0E     0F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 10     11     12     13     14     15     16     17
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 18     19     1A     1B     1C     1D     1E     1F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 20     21     22     23     24     25     26     27
    -      0x01 | 0x00 | 0x04 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 28     29     2A     2B     2C     2D     2E     2F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 30     31     32     33     34     35     36     37
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 38     39     3A     3B     3C     3D     3E     3F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
    -      // 40     41     42     43     44     45     46     47
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 48     49     4A     4B     4C     4D     4E     4F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 50     51     52     53     54     55     56     57
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 58     59     5A     5B     5C     5D     5E     5F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 60     61     62     63     64     65     66     67
    -      0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 68     69     6A     6B     6C     6D     6E     6F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 70     71     72     73     74     75     76     77
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 78     79     7A     7B     7C     7D     7E     7F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
    +
    +constexpr uint8_t QUERY_PERCENT_ENCODE[32] = {
    +    // 00     01     02     03     04     05     06     07
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 08     09     0A     0B     0C     0D     0E     0F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 10     11     12     13     14     15     16     17
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 18     19     1A     1B     1C     1D     1E     1F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 20     21     22     23     24     25     26     27
    +    0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 28     29     2A     2B     2C     2D     2E     2F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 30     31     32     33     34     35     36     37
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 38     39     3A     3B     3C     3D     3E     3F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
    +    // 40     41     42     43     44     45     46     47
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 48     49     4A     4B     4C     4D     4E     4F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 50     51     52     53     54     55     56     57
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 58     59     5A     5B     5C     5D     5E     5F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 60     61     62     63     64     65     66     67
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 68     69     6A     6B     6C     6D     6E     6F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 70     71     72     73     74     75     76     77
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 78     79     7A     7B     7C     7D     7E     7F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
         // 80     81     82     83     84     85     86     87
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // 88     89     8A     8B     8C     8D     8E     8F
    @@ -570,42 +700,41 @@ namespace ada::character_sets {
         // F0     F1     F2     F3     F4     F5     F6     F7
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // F8     F9     FA     FB     FC     FD     FE     FF
    -    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
    -    };
    -
    -  constexpr uint8_t USERINFO_PERCENT_ENCODE[32] = {
    -      // 00     01     02     03     04     05     06     07
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 08     09     0A     0B     0C     0D     0E     0F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 10     11     12     13     14     15     16     17
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 18     19     1A     1B     1C     1D     1E     1F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 20     21     22     23     24     25     26     27
    -      0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 28     29     2A     2B     2C     2D     2E     2F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
    -      // 30     31     32     33     34     35     36     37
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 38     39     3A     3B     3C     3D     3E     3F
    -      0x00 | 0x00 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 40     41     42     43     44     45     46     47
    -      0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 48     49     4A     4B     4C     4D     4E     4F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 50     51     52     53     54     55     56     57
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 58     59     5A     5B     5C     5D     5E     5F
    -      0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x20 | 0x40 | 0x00,
    -      // 60     61     62     63     64     65     66     67
    -      0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 68     69     6A     6B     6C     6D     6E     6F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 70     71     72     73     74     75     76     77
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 78     79     7A     7B     7C     7D     7E     7F
    -      0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x20 | 0x00 | 0x80,
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
    +
    +constexpr uint8_t FRAGMENT_PERCENT_ENCODE[32] = {
    +    // 00     01     02     03     04     05     06     07
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 08     09     0A     0B     0C     0D     0E     0F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 10     11     12     13     14     15     16     17
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 18     19     1A     1B     1C     1D     1E     1F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 20     21     22     23     24     25     26     27
    +    0x01 | 0x00 | 0x04 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 28     29     2A     2B     2C     2D     2E     2F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 30     31     32     33     34     35     36     37
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 38     39     3A     3B     3C     3D     3E     3F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x00,
    +    // 40     41     42     43     44     45     46     47
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 48     49     4A     4B     4C     4D     4E     4F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 50     51     52     53     54     55     56     57
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 58     59     5A     5B     5C     5D     5E     5F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 60     61     62     63     64     65     66     67
    +    0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 68     69     6A     6B     6C     6D     6E     6F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 70     71     72     73     74     75     76     77
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 78     79     7A     7B     7C     7D     7E     7F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
         // 80     81     82     83     84     85     86     87
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // 88     89     8A     8B     8C     8D     8E     8F
    @@ -637,42 +766,41 @@ namespace ada::character_sets {
         // F0     F1     F2     F3     F4     F5     F6     F7
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // F8     F9     FA     FB     FC     FD     FE     FF
    -    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
    -    };
    -
    -  constexpr uint8_t PATH_PERCENT_ENCODE[32] = {
    -      // 00     01     02     03     04     05     06     07
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 08     09     0A     0B     0C     0D     0E     0F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 10     11     12     13     14     15     16     17
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 18     19     1A     1B     1C     1D     1E     1F
    -      0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    -      // 20     21     22     23     24     25     26     27
    -      0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 28     29     2A     2B     2C     2D     2E     2F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 30     31     32     33     34     35     36     37
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 38     39     3A     3B     3C     3D     3E     3F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x80,
    -      // 40     41     42     43     44     45     46     47
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 48     49     4A     4B     4C     4D     4E     4F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 50     51     52     53     54     55     56     57
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 58     59     5A     5B     5C     5D     5E     5F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 60     61     62     63     64     65     66     67
    -      0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 68     69     6A     6B     6C     6D     6E     6F
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 70     71     72     73     74     75     76     77
    -      0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    -      // 78     79     7A     7B     7C     7D     7E     7F
    -      0x00 | 0x00 | 0x00 | 0x08 | 0x00 | 0x20 | 0x00 | 0x80,
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
    +
    +constexpr uint8_t USERINFO_PERCENT_ENCODE[32] = {
    +    // 00     01     02     03     04     05     06     07
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 08     09     0A     0B     0C     0D     0E     0F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 10     11     12     13     14     15     16     17
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 18     19     1A     1B     1C     1D     1E     1F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 20     21     22     23     24     25     26     27
    +    0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 28     29     2A     2B     2C     2D     2E     2F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x80,
    +    // 30     31     32     33     34     35     36     37
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 38     39     3A     3B     3C     3D     3E     3F
    +    0x00 | 0x00 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 40     41     42     43     44     45     46     47
    +    0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 48     49     4A     4B     4C     4D     4E     4F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 50     51     52     53     54     55     56     57
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 58     59     5A     5B     5C     5D     5E     5F
    +    0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x20 | 0x40 | 0x00,
    +    // 60     61     62     63     64     65     66     67
    +    0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 68     69     6A     6B     6C     6D     6E     6F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 70     71     72     73     74     75     76     77
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 78     79     7A     7B     7C     7D     7E     7F
    +    0x00 | 0x00 | 0x00 | 0x08 | 0x10 | 0x20 | 0x00 | 0x80,
         // 80     81     82     83     84     85     86     87
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // 88     89     8A     8B     8C     8D     8E     8F
    @@ -704,18 +832,82 @@ namespace ada::character_sets {
         // F0     F1     F2     F3     F4     F5     F6     F7
         0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
         // F8     F9     FA     FB     FC     FD     FE     FF
    -    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80
    -    };
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
     
    -  ada_really_inline bool bit_at(const uint8_t a[], const uint8_t i) {
    -    return !!(a[i >> 3] & (1 << (i & 7)));
    -  }
    +constexpr uint8_t PATH_PERCENT_ENCODE[32] = {
    +    // 00     01     02     03     04     05     06     07
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 08     09     0A     0B     0C     0D     0E     0F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 10     11     12     13     14     15     16     17
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 18     19     1A     1B     1C     1D     1E     1F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 20     21     22     23     24     25     26     27
    +    0x01 | 0x00 | 0x04 | 0x08 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 28     29     2A     2B     2C     2D     2E     2F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 30     31     32     33     34     35     36     37
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 38     39     3A     3B     3C     3D     3E     3F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x10 | 0x00 | 0x40 | 0x80,
    +    // 40     41     42     43     44     45     46     47
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 48     49     4A     4B     4C     4D     4E     4F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 50     51     52     53     54     55     56     57
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 58     59     5A     5B     5C     5D     5E     5F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 60     61     62     63     64     65     66     67
    +    0x01 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 68     69     6A     6B     6C     6D     6E     6F
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 70     71     72     73     74     75     76     77
    +    0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00 | 0x00,
    +    // 78     79     7A     7B     7C     7D     7E     7F
    +    0x00 | 0x00 | 0x00 | 0x08 | 0x00 | 0x20 | 0x00 | 0x80,
    +    // 80     81     82     83     84     85     86     87
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 88     89     8A     8B     8C     8D     8E     8F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 90     91     92     93     94     95     96     97
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // 98     99     9A     9B     9C     9D     9E     9F
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // A0     A1     A2     A3     A4     A5     A6     A7
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // A8     A9     AA     AB     AC     AD     AE     AF
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // B0     B1     B2     B3     B4     B5     B6     B7
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // B8     B9     BA     BB     BC     BD     BE     BF
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // C0     C1     C2     C3     C4     C5     C6     C7
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // C8     C9     CA     CB     CC     CD     CE     CF
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // D0     D1     D2     D3     D4     D5     D6     D7
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // D8     D9     DA     DB     DC     DD     DE     DF
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // E0     E1     E2     E3     E4     E5     E6     E7
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // E8     E9     EA     EB     EC     ED     EE     EF
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // F0     F1     F2     F3     F4     F5     F6     F7
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80,
    +    // F8     F9     FA     FB     FC     FD     FE     FF
    +    0x01 | 0x02 | 0x04 | 0x08 | 0x10 | 0x20 | 0x40 | 0x80};
     
    -} // namespace ada::character_sets
    +ada_really_inline bool bit_at(const uint8_t a[], const uint8_t i) {
    +  return !!(a[i >> 3] & (1 << (i & 7)));
    +}
    +
    +}  // namespace ada::character_sets
     
    -#endif // ADA_CHARACTER_SETS_H
    +#endif  // ADA_CHARACTER_SETS_H
     /* end file include/ada/character_sets-inl.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/checkers-inl.h
     /* begin file include/ada/checkers-inl.h */
     /**
      * @file checkers-inl.h
    @@ -730,47 +922,58 @@ namespace ada::character_sets {
     
     namespace ada::checkers {
     
    -  inline bool has_hex_prefix_unsafe(std::string_view input) {
    -    // This is actualy efficient code, see has_hex_prefix for the assembly.
    -    uint32_t value_one = 1;
    -    bool is_little_endian = (reinterpret_cast(&value_one)[0] == 1);
    -    uint16_t word0x{};
    -    std::memcpy(&word0x, "0x", 2); // we would use bit_cast in C++20 and the function could be constexpr.
    -    uint16_t two_first_bytes{};
    -    std::memcpy(&two_first_bytes, input.data(),2);
    -    if(is_little_endian) { two_first_bytes |= 0x2000; } else { two_first_bytes |= 0x020; }
    -    return two_first_bytes == word0x;
    -  }
    +inline bool has_hex_prefix_unsafe(std::string_view input) {
    +  // This is actualy efficient code, see has_hex_prefix for the assembly.
    +  uint32_t value_one = 1;
    +  bool is_little_endian = (reinterpret_cast(&value_one)[0] == 1);
    +  uint16_t word0x{};
    +  std::memcpy(&word0x, "0x", 2);  // we would use bit_cast in C++20 and the
    +                                  // function could be constexpr.
    +  uint16_t two_first_bytes{};
    +  std::memcpy(&two_first_bytes, input.data(), 2);
    +  if (is_little_endian) {
    +    two_first_bytes |= 0x2000;
    +  } else {
    +    two_first_bytes |= 0x020;
    +  }
    +  return two_first_bytes == word0x;
    +}
     
    -  inline bool has_hex_prefix(std::string_view input) {
    -    return input.size() >=2 && has_hex_prefix_unsafe(input);
    -  }
    +inline bool has_hex_prefix(std::string_view input) {
    +  return input.size() >= 2 && has_hex_prefix_unsafe(input);
    +}
     
    -  constexpr bool is_digit(char x) noexcept { return (x >= '0') & (x <= '9'); }
    +constexpr bool is_digit(char x) noexcept { return (x >= '0') & (x <= '9'); }
     
    -  constexpr char to_lower(char x) noexcept { return (x | 0x20); }
    +constexpr char to_lower(char x) noexcept { return (x | 0x20); }
     
    -  constexpr bool is_alpha(char x) noexcept { return (to_lower(x) >= 'a') && (to_lower(x) <= 'z'); }
    +constexpr bool is_alpha(char x) noexcept {
    +  return (to_lower(x) >= 'a') && (to_lower(x) <= 'z');
    +}
     
    -  inline constexpr bool is_windows_drive_letter(std::string_view input) noexcept {
    -    return input.size() >= 2 && (is_alpha(input[0]) && ((input[1] == ':') || (input[1] == '|')))
    -      && ((input.size() == 2) || (input[2] == '/' || input[2] == '\\' || input[2] == '?' || input[2] == '#'));
    -  }
    +inline constexpr bool is_windows_drive_letter(std::string_view input) noexcept {
    +  return input.size() >= 2 &&
    +         (is_alpha(input[0]) && ((input[1] == ':') || (input[1] == '|'))) &&
    +         ((input.size() == 2) || (input[2] == '/' || input[2] == '\\' ||
    +                                  input[2] == '?' || input[2] == '#'));
    +}
     
    -  inline constexpr bool is_normalized_windows_drive_letter(std::string_view input) noexcept {
    -    return input.size() >= 2 && (is_alpha(input[0]) && (input[1] == ':'));
    -  }
    +inline constexpr bool is_normalized_windows_drive_letter(
    +    std::string_view input) noexcept {
    +  return input.size() >= 2 && (is_alpha(input[0]) && (input[1] == ':'));
    +}
     
    -  ada_really_inline constexpr bool begins_with(std::string_view view, std::string_view prefix) {
    -    // in C++20, you have view.begins_with(prefix)
    -    return view.size() >= prefix.size() && (view.substr(0, prefix.size()) == prefix);
    -  }
    +ada_really_inline constexpr bool begins_with(std::string_view view,
    +                                             std::string_view prefix) {
    +  // in C++20, you have view.begins_with(prefix)
    +  return view.size() >= prefix.size() &&
    +         (view.substr(0, prefix.size()) == prefix);
    +}
     
    -} // namespace ada::checkers
    +}  // namespace ada::checkers
     
    -#endif //ADA_CHECKERS_H
    +#endif  // ADA_CHECKERS_H
     /* end file include/ada/checkers-inl.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/log.h
     /* begin file include/ada/log.h */
     /**
      * @file log.h
    @@ -795,33 +998,33 @@ namespace ada {
     template 
     ada_really_inline void inner_log([[maybe_unused]] T t) {
     #if ADA_LOGGING
    -    std::cout << t << std::endl;
    +  std::cout << t << std::endl;
     #endif
     }
     
    -
     /**
      * Private function used for logging messages.
      * @private
      */
    -template
    -ada_really_inline void inner_log([[maybe_unused]] T t, [[maybe_unused]] Args... args) {
    +template 
    +ada_really_inline void inner_log([[maybe_unused]] T t,
    +                                 [[maybe_unused]] Args... args) {
     #if ADA_LOGGING
    -    std::cout << t;
    -    inner_log(args...) ;
    +  std::cout << t;
    +  inner_log(args...);
     #endif
     }
     
    -
     /**
      * Log a message.
      * @private
      */
    -template
    -ada_really_inline void log([[maybe_unused]] T t, [[maybe_unused]] Args... args) {
    +template 
    +ada_really_inline void log([[maybe_unused]] T t,
    +                           [[maybe_unused]] Args... args) {
     #if ADA_LOGGING
    -    std::cout << "ADA_LOG: " << t;
    -    inner_log(args...) ;
    +  std::cout << "ADA_LOG: " << t;
    +  inner_log(args...);
     #endif
     }
     
    @@ -829,29 +1032,28 @@ ada_really_inline void log([[maybe_unused]] T t, [[maybe_unused]] Args... args)
      * Log a message.
      * @private
      */
    -template
    +template 
     ada_really_inline void log([[maybe_unused]] T t) {
     #if ADA_LOGGING
    -    std::cout << "ADA_LOG: " <<  t << std::endl;
    +  std::cout << "ADA_LOG: " << t << std::endl;
     #endif
    -
    -}
     }
    +}  // namespace ada
     
     #if ADA_LOGGING
     
     #ifndef ada_log
    -#define ada_log(...) do { \
    +#define ada_log(...)       \
    +  do {                     \
         ada::log(__VA_ARGS__); \
    -} while(0)
    -#endif // ada_log
    +  } while (0)
    +#endif  // ada_log
     #else
     #define ada_log(...)
    -#endif // ADA_LOGGING
    +#endif  // ADA_LOGGING
     
    -#endif // ADA_LOG_H
    +#endif  // ADA_LOG_H
     /* end file include/ada/log.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/encoding_type.h
     /* begin file include/ada/encoding_type.h */
     /**
      * @file encoding_type.h
    @@ -864,28 +1066,27 @@ ada_really_inline void log([[maybe_unused]] T t) {
     
     namespace ada {
     
    -  /**
    -   * This specification defines three encodings with the same names as encoding schemes defined
    -   * in the Unicode standard: UTF-8, UTF-16LE, and UTF-16BE.
    -   *
    -   * @see https://encoding.spec.whatwg.org/#encodings
    -   */
    -  enum class encoding_type {
    -    UTF8,
    -    UTF_16LE,
    -    UTF_16BE,
    -  };
    +/**
    + * This specification defines three encodings with the same names as encoding
    + * schemes defined in the Unicode standard: UTF-8, UTF-16LE, and UTF-16BE.
    + *
    + * @see https://encoding.spec.whatwg.org/#encodings
    + */
    +enum class encoding_type {
    +  UTF8,
    +  UTF_16LE,
    +  UTF_16BE,
    +};
     
    -  /**
    -   * Convert a encoding_type to string.
    -   */
    -  ada_warn_unused std::string to_string(encoding_type type);
    +/**
    + * Convert a encoding_type to string.
    + */
    +ada_warn_unused std::string to_string(encoding_type type);
     
    -} // ada namespace
    +}  // namespace ada
     
    -#endif // ADA_ENCODING_TYPE_H
    +#endif  // ADA_ENCODING_TYPE_H
     /* end file include/ada/encoding_type.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/helpers.h
     /* begin file include/ada/helpers.h */
     /**
      * @file helpers.h
    @@ -894,7 +1095,6 @@ namespace ada {
     #ifndef ADA_HELPERS_H
     #define ADA_HELPERS_H
     
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/url.h
     /* begin file include/ada/url.h */
     /**
      * @file url.h
    @@ -903,7 +1103,6 @@ namespace ada {
     #ifndef ADA_URL_H
     #define ADA_URL_H
     
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/checkers.h
     /* begin file include/ada/checkers.h */
     /**
      * @file checkers.h
    @@ -922,85 +1121,96 @@ namespace ada {
      */
     namespace ada::checkers {
     
    -  /**
    -   * Assuming that x is an ASCII letter, this function returns the lower case equivalent.
    -   * @details More likely to be inlined by the compiler and constexpr.
    -   */
    -  constexpr char to_lower(char x) noexcept;
    +/**
    + * Assuming that x is an ASCII letter, this function returns the lower case
    + * equivalent.
    + * @details More likely to be inlined by the compiler and constexpr.
    + */
    +constexpr char to_lower(char x) noexcept;
     
    -  /**
    -   * Returns true if the character is an ASCII letter. Equivalent to std::isalpha but
    -   * more likely to be inlined by the compiler.
    -   *
    -   * @attention std::isalpha is not constexpr generally.
    -   */
    -  constexpr bool is_alpha(char x) noexcept;
    +/**
    + * Returns true if the character is an ASCII letter. Equivalent to std::isalpha
    + * but more likely to be inlined by the compiler.
    + *
    + * @attention std::isalpha is not constexpr generally.
    + */
    +constexpr bool is_alpha(char x) noexcept;
     
    -  /**
    -   * Check whether a string starts with 0x or 0X. The function is only
    -   * safe if input.size() >=2.
    -   *
    -   * @see has_hex_prefix
    -   */
    -  inline bool has_hex_prefix_unsafe(std::string_view input);
    -  /**
    -   * Check whether a string starts with 0x or 0X.
    -   */
    -  inline bool has_hex_prefix(std::string_view input);
    +/**
    + * Check whether a string starts with 0x or 0X. The function is only
    + * safe if input.size() >=2.
    + *
    + * @see has_hex_prefix
    + */
    +inline bool has_hex_prefix_unsafe(std::string_view input);
    +/**
    + * Check whether a string starts with 0x or 0X.
    + */
    +inline bool has_hex_prefix(std::string_view input);
     
    -  /**
    -   * Check whether x is an ASCII digit. More likely to be inlined than std::isdigit.
    -   */
    -  constexpr bool is_digit(char x) noexcept;
    +/**
    + * Check whether x is an ASCII digit. More likely to be inlined than
    + * std::isdigit.
    + */
    +constexpr bool is_digit(char x) noexcept;
     
    -  /**
    -   * @details A string starts with a Windows drive letter if all of the following are true:
    -   *
    -   *   - its length is greater than or equal to 2
    -   *   - its first two code points are a Windows drive letter
    -   *   - its length is 2 or its third code point is U+002F (/), U+005C (\), U+003F (?), or U+0023 (#).
    -   *
    -   * https://url.spec.whatwg.org/#start-with-a-windows-drive-letter
    -   */
    -  inline constexpr bool is_windows_drive_letter(std::string_view input) noexcept;
    +/**
    + * @details A string starts with a Windows drive letter if all of the following
    + * are true:
    + *
    + *   - its length is greater than or equal to 2
    + *   - its first two code points are a Windows drive letter
    + *   - its length is 2 or its third code point is U+002F (/), U+005C (\), U+003F
    + * (?), or U+0023 (#).
    + *
    + * https://url.spec.whatwg.org/#start-with-a-windows-drive-letter
    + */
    +inline constexpr bool is_windows_drive_letter(std::string_view input) noexcept;
     
    -  /**
    -   * @details A normalized Windows drive letter is a Windows drive letter of which the second code point is U+003A (:).
    -   */
    -  inline constexpr bool is_normalized_windows_drive_letter(std::string_view input) noexcept;
    +/**
    + * @details A normalized Windows drive letter is a Windows drive letter of which
    + * the second code point is U+003A (:).
    + */
    +inline constexpr bool is_normalized_windows_drive_letter(
    +    std::string_view input) noexcept;
     
    -  /**
    -   * @warning Will be removed when Ada supports C++20.
    -   */
    -  ada_really_inline constexpr bool begins_with(std::string_view view, std::string_view prefix);
    +/**
    + * @warning Will be removed when Ada supports C++20.
    + */
    +ada_really_inline constexpr bool begins_with(std::string_view view,
    +                                             std::string_view prefix);
     
    -  /**
    -   * Returns true if an input is an ipv4 address.
    -   */
    -  ada_really_inline ada_constexpr bool is_ipv4(std::string_view view) noexcept;
    +/**
    + * Returns true if an input is an ipv4 address.
    + */
    +ada_really_inline ada_constexpr bool is_ipv4(std::string_view view) noexcept;
     
    -  /**
    -   * Returns a bitset. If the first bit is set, then at least one character needs
    -   * percent encoding. If the second bit is set, a \\ is found. If the third bit is set
    -   * then we have a dot. If the fourth bit is set, then we have a percent character.
    -   */
    -  ada_really_inline constexpr uint8_t path_signature(std::string_view input) noexcept;
    +/**
    + * Returns a bitset. If the first bit is set, then at least one character needs
    + * percent encoding. If the second bit is set, a \\ is found. If the third bit
    + * is set then we have a dot. If the fourth bit is set, then we have a percent
    + * character.
    + */
    +ada_really_inline constexpr uint8_t path_signature(
    +    std::string_view input) noexcept;
     
    -  /** 
    -   * Returns true if the length of the domain name and its labels are according to the specifications.
    -   * The length of the domain must be 255 octets (253 characters not including the last 2 which are the empty
    -   * label reserved at the end). When the empty label is included (a dot at the end), the domain name can have
    -   * 254 characters. The length of a label must be at least 1 and at most 63 characters.
    -   * @see section 3.1. of https://www.rfc-editor.org/rfc/rfc1034
    -   * @see https://www.unicode.org/reports/tr46/#ToASCII
    -  */
    -  ada_really_inline constexpr bool verify_dns_length(std::string_view input) noexcept;
    +/**
    + * Returns true if the length of the domain name and its labels are according to
    + * the specifications. The length of the domain must be 255 octets (253
    + * characters not including the last 2 which are the empty label reserved at the
    + * end). When the empty label is included (a dot at the end), the domain name
    + * can have 254 characters. The length of a label must be at least 1 and at most
    + * 63 characters.
    + * @see section 3.1. of https://www.rfc-editor.org/rfc/rfc1034
    + * @see https://www.unicode.org/reports/tr46/#ToASCII
    + */
    +ada_really_inline constexpr bool verify_dns_length(
    +    std::string_view input) noexcept;
     
    -} // namespace ada::checkers
    +}  // namespace ada::checkers
     
    -#endif //ADA_CHECKERS_H
    +#endif  // ADA_CHECKERS_H
     /* end file include/ada/checkers.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/scheme.h
     /* begin file include/ada/scheme.h */
     /**
      * @file scheme.h
    @@ -1020,59 +1230,65 @@ namespace ada::checkers {
      */
     namespace ada::scheme {
     
    -  /**
    -   * Type of the scheme as an enum.
    -   * Using strings to represent a scheme type is not ideal because
    -   * checking for types involves string comparisons. It is faster to use
    -   * a simple integer.
    -   */
    -  enum type {
    -    HTTP = 0,
    -    NOT_SPECIAL = 1,
    -    HTTPS = 2,
    -    WS = 3,
    -    FTP = 4,
    -    WSS = 5,
    -    FILE = 6
    -  };
    -
    -  /**
    -   * A special scheme is an ASCII string that is listed in the first column of the following table.
    -   * The default port for a special scheme is listed in the second column on the same row.
    -   * The default port for any other ASCII string is null.
    -   *
    -   * @see https://url.spec.whatwg.org/#url-miscellaneous
    -   * @param scheme
    -   * @return If scheme is a special scheme
    -   */
    -  ada_really_inline constexpr bool is_special(std::string_view scheme);
    +/**
    + * Type of the scheme as an enum.
    + * Using strings to represent a scheme type is not ideal because
    + * checking for types involves string comparisons. It is faster to use
    + * a simple integer.
    + * In C++11, we are allowed to specify the underlying type of the enum.
    + * We pick an 8-bit integer (which allows up to 256 types). Specifying the
    + * type of the enum may help integration with other systems if the type
    + * variable is exposed (since its value will not depend on the compiler).
    + */
    +enum type : uint8_t {
    +  HTTP = 0,
    +  NOT_SPECIAL = 1,
    +  HTTPS = 2,
    +  WS = 3,
    +  FTP = 4,
    +  WSS = 5,
    +  FILE = 6
    +};
     
    -  /**
    -   * A special scheme is an ASCII string that is listed in the first column of the following table.
    -   * The default port for a special scheme is listed in the second column on the same row.
    -   * The default port for any other ASCII string is null.
    -   *
    -   * @see https://url.spec.whatwg.org/#url-miscellaneous
    -   * @param scheme
    -   * @return The special port
    -   */
    -  constexpr uint16_t get_special_port(std::string_view scheme) noexcept;
    +/**
    + * A special scheme is an ASCII string that is listed in the first column of the
    + * following table. The default port for a special scheme is listed in the
    + * second column on the same row. The default port for any other ASCII string is
    + * null.
    + *
    + * @see https://url.spec.whatwg.org/#url-miscellaneous
    + * @param scheme
    + * @return If scheme is a special scheme
    + */
    +ada_really_inline constexpr bool is_special(std::string_view scheme);
     
    -  /**
    -   * Returns the port number of a special scheme.
    -   * @see https://url.spec.whatwg.org/#special-scheme
    -   */
    -  constexpr uint16_t get_special_port(ada::scheme::type type) noexcept;
    -  /**
    -   * Returns the scheme of an input, or NOT_SPECIAL if it's not a special scheme defined by the spec.
    -   */
    -  constexpr ada::scheme::type get_scheme_type(std::string_view scheme) noexcept;
    +/**
    + * A special scheme is an ASCII string that is listed in the first column of the
    + * following table. The default port for a special scheme is listed in the
    + * second column on the same row. The default port for any other ASCII string is
    + * null.
    + *
    + * @see https://url.spec.whatwg.org/#url-miscellaneous
    + * @param scheme
    + * @return The special port
    + */
    +constexpr uint16_t get_special_port(std::string_view scheme) noexcept;
     
    -} // namespace ada::serializers
    +/**
    + * Returns the port number of a special scheme.
    + * @see https://url.spec.whatwg.org/#special-scheme
    + */
    +constexpr uint16_t get_special_port(ada::scheme::type type) noexcept;
    +/**
    + * Returns the scheme of an input, or NOT_SPECIAL if it's not a special scheme
    + * defined by the spec.
    + */
    +constexpr ada::scheme::type get_scheme_type(std::string_view scheme) noexcept;
     
    -#endif // ADA_SCHEME_H
    +}  // namespace ada::scheme
    +
    +#endif  // ADA_SCHEME_H
     /* end file include/ada/scheme.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/serializers.h
     /* begin file include/ada/serializers.h */
     /**
      * @file serializers.h
    @@ -1092,30 +1308,33 @@ namespace ada::scheme {
      */
     namespace ada::serializers {
     
    -  /**
    -   * Finds and returns the longest sequence of 0 values in a ipv6 input.
    -   */
    -  void find_longest_sequence_of_ipv6_pieces(const std::array& address, size_t& compress, size_t& compress_length) noexcept;
    +/**
    + * Finds and returns the longest sequence of 0 values in a ipv6 input.
    + */
    +void find_longest_sequence_of_ipv6_pieces(
    +    const std::array& address, size_t& compress,
    +    size_t& compress_length) noexcept;
     
    -  /**
    -   * Serializes an ipv6 address.
    -   * @details An IPv6 address is a 128-bit unsigned integer that identifies a network address.
    -   * @see https://url.spec.whatwg.org/#concept-ipv6-serializer
    -   */
    -  std::string ipv6(const std::array& address) noexcept;
    +/**
    + * Serializes an ipv6 address.
    + * @details An IPv6 address is a 128-bit unsigned integer that identifies a
    + * network address.
    + * @see https://url.spec.whatwg.org/#concept-ipv6-serializer
    + */
    +std::string ipv6(const std::array& address) noexcept;
     
    -  /**
    -   * Serializes an ipv4 address.
    -   * @details An IPv4 address is a 32-bit unsigned integer that identifies a network address.
    -   * @see https://url.spec.whatwg.org/#concept-ipv4-serializer
    -   */
    -  std::string ipv4(const uint64_t address) noexcept;
    +/**
    + * Serializes an ipv4 address.
    + * @details An IPv4 address is a 32-bit unsigned integer that identifies a
    + * network address.
    + * @see https://url.spec.whatwg.org/#concept-ipv4-serializer
    + */
    +std::string ipv4(const uint64_t address) noexcept;
     
    -} // namespace ada::serializers
    +}  // namespace ada::serializers
     
    -#endif // ADA_SERIALIZERS_H
    +#endif  // ADA_SERIALIZERS_H
     /* end file include/ada/serializers.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/unicode.h
     /* begin file include/ada/unicode.h */
     /**
      * @file unicode.h
    @@ -1124,6 +1343,7 @@ namespace ada::serializers {
     #ifndef ADA_UNICODE_H
     #define ADA_UNICODE_H
     
    +
     #include 
     #include 
     
    @@ -1133,3228 +1353,5148 @@ namespace ada::serializers {
      */
     namespace ada::unicode {
     
    -  /**
    -   * We receive a UTF-8 string representing a domain name.
    -   * If the string is percent encoded, we apply percent decoding.
    -   *
    -   * Given a domain, we need to identify its labels.
    -   * They are separated by label-separators:
    -   *
    -   * U+002E ( . ) FULL STOP
    -   * U+FF0E ( . ) FULLWIDTH FULL STOP
    -   * U+3002 ( 。 ) IDEOGRAPHIC FULL STOP
    -   * U+FF61 ( 。 ) HALFWIDTH IDEOGRAPHIC FULL STOP
    -   *
    -   * They are all mapped to U+002E.
    -   *
    -   * We process each label into a string that should not exceed 63 octets.
    -   * If the string is already punycode (starts with "xn--"), then we must
    -   * scan it to look for unallowed code points.
    -   * Otherwise, if the string is not pure ASCII, we need to transcode it
    -   * to punycode by following RFC 3454 which requires us to
    -   * - Map characters  (see section 3),
    -   * - Normalize (see section 4),
    -   * - Reject forbidden characters,
    -   * - Check for right-to-left characters and if so, check all requirements (see section 6),
    -   * - Optionally reject based on unassigned code points (section 7).
    -   *
    -   * The Unicode standard provides a table of code points with a mapping, a list of
    -   * forbidden code points and so forth. This table is subject to change and will
    -   * vary based on the implementation. For Unicode 15, the table is at
    -   * https://www.unicode.org/Public/idna/15.0.0/IdnaMappingTable.txt
    -   * If you use ICU, they parse this table and map it to code using a Python script.
    -   *
    -   * The resulting strings should not exceed 255 octets according to RFC 1035 section 2.3.4.
    -   * ICU checks for label size and domain size, but if we pass "be_strict = false", these
    -   * errors are ignored.
    -   *
    -   * @see https://url.spec.whatwg.org/#concept-domain-to-ascii
    -   *
    -   */
    -  bool to_ascii(std::optional& out, std::string_view plain, bool be_strict, size_t first_percent);
    +/**
    + * We receive a UTF-8 string representing a domain name.
    + * If the string is percent encoded, we apply percent decoding.
    + *
    + * Given a domain, we need to identify its labels.
    + * They are separated by label-separators:
    + *
    + * U+002E ( . ) FULL STOP
    + * U+FF0E ( . ) FULLWIDTH FULL STOP
    + * U+3002 ( 。 ) IDEOGRAPHIC FULL STOP
    + * U+FF61 ( 。 ) HALFWIDTH IDEOGRAPHIC FULL STOP
    + *
    + * They are all mapped to U+002E.
    + *
    + * We process each label into a string that should not exceed 63 octets.
    + * If the string is already punycode (starts with "xn--"), then we must
    + * scan it to look for unallowed code points.
    + * Otherwise, if the string is not pure ASCII, we need to transcode it
    + * to punycode by following RFC 3454 which requires us to
    + * - Map characters  (see section 3),
    + * - Normalize (see section 4),
    + * - Reject forbidden characters,
    + * - Check for right-to-left characters and if so, check all requirements (see
    + * section 6),
    + * - Optionally reject based on unassigned code points (section 7).
    + *
    + * The Unicode standard provides a table of code points with a mapping, a list
    + * of forbidden code points and so forth. This table is subject to change and
    + * will vary based on the implementation. For Unicode 15, the table is at
    + * https://www.unicode.org/Public/idna/15.0.0/IdnaMappingTable.txt
    + * If you use ICU, they parse this table and map it to code using a Python
    + * script.
    + *
    + * The resulting strings should not exceed 255 octets according to RFC 1035
    + * section 2.3.4. ICU checks for label size and domain size, but these errors
    + * are ignored.
    + *
    + * @see https://url.spec.whatwg.org/#concept-domain-to-ascii
    + *
    + */
    +bool to_ascii(std::optional& out, std::string_view plain,
    +              size_t first_percent);
     
    -  /**
    -   * Checks if the input has tab or newline characters.
    -   *
    -   * @attention The has_tabs_or_newline function is a bottleneck and it is simple enough that compilers
    -   * like GCC can 'autovectorize it'.
    -   */
    -  ada_really_inline constexpr bool has_tabs_or_newline(std::string_view user_input) noexcept;
    +/**
    + * @see https://www.unicode.org/reports/tr46/#ToUnicode
    + */
    +std::string to_unicode(std::string_view input);
     
    -  /**
    -   * Checks if the input is a forbidden host code point.
    -   * @see https://url.spec.whatwg.org/#forbidden-host-code-point
    -   */
    -  ada_really_inline constexpr bool is_forbidden_host_code_point(const char c) noexcept;
    +/**
    + * Checks if the input has tab or newline characters.
    + *
    + * @attention The has_tabs_or_newline function is a bottleneck and it is simple
    + * enough that compilers like GCC can 'autovectorize it'.
    + */
    +ada_really_inline constexpr bool has_tabs_or_newline(
    +    std::string_view user_input) noexcept;
    +
    +/**
    + * Checks if the input is a forbidden host code point.
    + * @see https://url.spec.whatwg.org/#forbidden-host-code-point
    + */
    +ada_really_inline constexpr bool is_forbidden_host_code_point(
    +    const char c) noexcept;
     
    +/**
    + * Checks if the input is a forbidden domain code point.
    + * @see https://url.spec.whatwg.org/#forbidden-domain-code-point
    + */
    +ada_really_inline constexpr bool contains_forbidden_domain_code_point(
    +    char* input, size_t length) noexcept;
     
    -  /**
    -   * Checks if the input is a forbidden domain code point.
    -   * @see https://url.spec.whatwg.org/#forbidden-domain-code-point
    -   */
    -  ada_really_inline constexpr bool contains_forbidden_domain_code_point(char * input, size_t length) noexcept;
    +/**
    + * Checks if the input is a forbidden doamin code point.
    + * @see https://url.spec.whatwg.org/#forbidden-domain-code-point
    + */
    +ada_really_inline constexpr bool is_forbidden_domain_code_point(
    +    const char c) noexcept;
    +
    +/**
    + * Checks if the input is alphanumeric, '+', '-' or '.'
    + */
    +ada_really_inline constexpr bool is_alnum_plus(const char c) noexcept;
    +
    +/**
    + * @details An ASCII hex digit is an ASCII upper hex digit or ASCII lower hex
    + * digit. An ASCII upper hex digit is an ASCII digit or a code point in the
    + * range U+0041 (A) to U+0046 (F), inclusive. An ASCII lower hex digit is an
    + * ASCII digit or a code point in the range U+0061 (a) to U+0066 (f), inclusive.
    + */
    +ada_really_inline constexpr bool is_ascii_hex_digit(const char c) noexcept;
    +
    +/**
    + * Checks if the input is a C0 control or space character.
    + *
    + * @details A C0 control or space is a C0 control or U+0020 SPACE.
    + * A C0 control is a code point in the range U+0000 NULL to U+001F INFORMATION
    + * SEPARATOR ONE, inclusive.
    + */
    +ada_really_inline constexpr bool is_c0_control_or_space(const char c) noexcept;
    +
    +/**
    + * Checks if the input is a ASCII tab or newline character.
    + *
    + * @details An ASCII tab or newline is U+0009 TAB, U+000A LF, or U+000D CR.
    + */
    +ada_really_inline constexpr bool is_ascii_tab_or_newline(const char c) noexcept;
    +
    +/**
    + * @details A double-dot path segment must be ".." or an ASCII case-insensitive
    + * match for ".%2e", "%2e.", or "%2e%2e".
    + */
    +ada_really_inline ada_constexpr bool is_double_dot_path_segment(
    +    const std::string_view input) noexcept;
    +
    +/**
    + * @details A single-dot path segment must be "." or an ASCII case-insensitive
    + * match for "%2e".
    + */
    +ada_really_inline constexpr bool is_single_dot_path_segment(
    +    const std::string_view input) noexcept;
    +
    +/**
    + * @details ipv4 character might contain 0-9 or a-f character ranges.
    + */
    +ada_really_inline constexpr bool is_lowercase_hex(const char c) noexcept;
    +
    +/**
    + * @details Convert hex to binary.
    + */
    +unsigned constexpr convert_hex_to_binary(char c) noexcept;
    +
    +/**
    + * first_percent should be  = input.find('%')
    + *
    + * @todo It would be faster as noexcept maybe, but it could be unsafe since.
    + * @author Node.js
    + * @see https://github.com/nodejs/node/blob/main/src/node_url.cc#L245
    + * @see https://encoding.spec.whatwg.org/#utf-8-decode-without-bom
    + */
    +std::string percent_decode(const std::string_view input, size_t first_percent);
    +
    +/**
    + * Returns a percent-encoding string whether percent encoding was needed or not.
    + * @see https://github.com/nodejs/node/blob/main/src/node_url.cc#L226
    + */
    +std::string percent_encode(const std::string_view input,
    +                           const uint8_t character_set[]);
    +/**
    + * Returns a percent-encoded string version of input, while starting the percent
    + * encoding at the provided index.
    + * @see https://github.com/nodejs/node/blob/main/src/node_url.cc#L226
    + */
    +std::string percent_encode(const std::string_view input,
    +                           const uint8_t character_set[], size_t index);
    +/**
    + * Returns true if percent encoding was needed, in which case, we store
    + * the percent-encoded content in 'out'. If the boolean 'append' is set to
    + * true, the content is appended to 'out'.
    + * If percent encoding is not needed, out is left unchanged.
    + * @see https://github.com/nodejs/node/blob/main/src/node_url.cc#L226
    + */
    +template 
    +bool percent_encode(const std::string_view input, const uint8_t character_set[],
    +                    std::string& out);
    +/**
    + * Returns the index at which percent encoding should start, or (equivalently),
    + * the length of the prefix that does not require percent encoding.
    + */
    +ada_really_inline size_t percent_encode_index(const std::string_view input,
    +                                              const uint8_t character_set[]);
    +/**
    + * Lowers the string in-place, assuming that the content is ASCII.
    + * Return true if the content was ASCII.
    + */
    +constexpr bool to_lower_ascii(char* input, size_t length) noexcept;
    +}  // namespace ada::unicode
    +
    +#endif  // ADA_UNICODE_H
    +/* end file include/ada/unicode.h */
    +/* begin file include/ada/url_base.h */
    +/**
    + * @file url_base.h
    + * @brief Declaration for the basic URL definitions
    + */
    +#ifndef ADA_URL_BASE_H
    +#define ADA_URL_BASE_H
    +
    +/* begin file include/ada/url_components.h */
    +/**
    + * @file url_components.h
    + * @brief Declaration for the URL Components
    + */
    +#ifndef ADA_URL_COMPONENTS_H
    +#define ADA_URL_COMPONENTS_H
    +
    +
    +#include 
    +#include 
    +
    +namespace ada {
     
    +/**
    + * @brief URL Component representations using offsets.
    + *
    + * @details We design the url_components struct so that it is as small
    + * and simple as possible. This version uses 32 bytes.
    + *
    + * This struct is used to extract components from a single 'href'.
    + */
    +struct url_components {
    +  constexpr static uint32_t omitted = uint32_t(-1);
    +
    +  url_components() = default;
    +  url_components(const url_components &u) = default;
    +  url_components(url_components &&u) noexcept = default;
    +  url_components &operator=(url_components &&u) noexcept = default;
    +  url_components &operator=(const url_components &u) = default;
    +  ~url_components() = default;
    +
    +  /*
    +   * By using 32-bit integers, we implicitly assume that the URL string
    +   * cannot exceed 4 GB.
    +   *
    +   * https://user:pass@example.com:1234/foo/bar?baz#quux
    +   *       |     |    |          | ^^^^|       |   |
    +   *       |     |    |          | |   |       |   `----- hash_start
    +   *       |     |    |          | |   |       `--------- search_start
    +   *       |     |    |          | |   `----------------- pathname_start
    +   *       |     |    |          | `--------------------- port
    +   *       |     |    |          `----------------------- host_end
    +   *       |     |    `---------------------------------- host_start
    +   *       |     `--------------------------------------- username_end
    +   *       `--------------------------------------------- protocol_end
    +   */
    +  uint32_t protocol_end{0};
       /**
    -   * Checks if the input is a forbidden doamin code point.
    -   * @see https://url.spec.whatwg.org/#forbidden-domain-code-point
    +   * Username end is not `omitted` by default to make username and password
    +   * getters less costly to implement.
        */
    -  ada_really_inline constexpr bool is_forbidden_domain_code_point(const char c) noexcept;
    +  uint32_t username_end{0};
    +  uint32_t host_start{0};
    +  uint32_t host_end{0};
    +  uint32_t port{omitted};
    +  uint32_t pathname_start{0};
    +  uint32_t search_start{omitted};
    +  uint32_t hash_start{omitted};
     
       /**
    -   * Checks if the input is alphanumeric, '+', '-' or '.'
    +   * Check the following conditions:
    +   * protocol_end < username_end < ... < hash_start,
    +   * expect when a value is omitted. It also computes
    +   * a lower bound on  the possible string length that may match these
    +   * offsets.
    +   * @return true if the offset values are
    +   *  consistent with a possible URL string
        */
    -  ada_really_inline constexpr bool is_alnum_plus(const char c) noexcept;
    +  bool check_offset_consistency() const noexcept;
     
       /**
    -   * @details An ASCII hex digit is an ASCII upper hex digit or ASCII lower hex digit.
    -   * An ASCII upper hex digit is an ASCII digit or a code point in the range U+0041 (A) to U+0046 (F), inclusive.
    -   * An ASCII lower hex digit is an ASCII digit or a code point in the range U+0061 (a) to U+0066 (f), inclusive.
    +   * @private
    +   * Converts a url_components to JSON stringified version.
        */
    -  ada_really_inline constexpr bool is_ascii_hex_digit(const char c) noexcept;
    +  std::string to_string() const;
    +
    +};  // struct url_components
    +
    +}  // namespace ada
    +#endif
    +/* end file include/ada/url_components.h */
    +
    +#include 
    +
    +namespace ada {
    +
    +/**
    + * @brief Base class of URL implementations
    + *
    + * @details A url_base contains a few attributes: is_valid, has_opaque_path and
    + * type. All non-trivial implementation details are in derived classes such as
    + * ada::url and ada::url_aggregator.
    + *
    + * It is an abstract class that cannot be instantiated directly.
    + */
    +struct url_base {
    +  virtual ~url_base() = default;
     
       /**
    -   * Checks if the input is a C0 control or space character.
    -   *
    -   * @details A C0 control or space is a C0 control or U+0020 SPACE.
    -   * A C0 control is a code point in the range U+0000 NULL to U+001F INFORMATION SEPARATOR ONE, inclusive.
    +   * Used for returning the validity from the result of the URL parser.
        */
    -  ada_really_inline constexpr bool is_c0_control_or_space(const char c) noexcept;
    +  bool is_valid{true};
     
       /**
    -   * Checks if the input is a ASCII tab or newline character.
    -   *
    -   * @details An ASCII tab or newline is U+0009 TAB, U+000A LF, or U+000D CR.
    +   * A URL has an opaque path if its path is a string.
        */
    -  ada_really_inline constexpr bool is_ascii_tab_or_newline(const char c) noexcept;
    +  bool has_opaque_path{false};
     
       /**
    -   * @details A double-dot path segment must be ".." or an ASCII case-insensitive match for ".%2e", "%2e.", or "%2e%2e".
    +   * @private
        */
    -  ada_really_inline ada_constexpr bool is_double_dot_path_segment(const std::string_view input) noexcept;
    +  ada::scheme::type type{ada::scheme::type::NOT_SPECIAL};
     
       /**
    -   * @details A single-dot path segment must be "." or an ASCII case-insensitive match for "%2e".
    +   * A URL is special if its scheme is a special scheme. A URL is not special if
    +   * its scheme is not a special scheme.
        */
    -  ada_really_inline constexpr bool is_single_dot_path_segment(const std::string_view input) noexcept;
    +  [[nodiscard]] ada_really_inline bool is_special() const noexcept;
     
       /**
    -   * @details ipv4 character might contain 0-9 or a-f character ranges.
    +   * The origin getter steps are to return the serialization of this’s URL’s
    +   * origin. [HTML]
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#concept-url-origin
        */
    -  ada_really_inline constexpr bool is_lowercase_hex(const char c) noexcept;
    +  [[nodiscard]] virtual std::string get_origin() const noexcept = 0;
     
       /**
    -   * @details Convert hex to binary.
    +   * Returns true if this URL has a valid domain as per RFC 1034 and
    +   * corresponding specifications. Among other things, it requires
    +   * that the domain string has fewer than 255 octets.
        */
    -  unsigned constexpr convert_hex_to_binary(char c) noexcept;
    +  [[nodiscard]] virtual bool has_valid_domain() const noexcept = 0;
     
       /**
    -   * first_percent should be  = input.find('%')
    +   * @private
        *
    -   * @todo It would be faster as noexcept maybe, but it could be unsafe since.
    -   * @author Node.js
    -   * @see https://github.com/nodejs/node/blob/main/src/node_url.cc#L245
    -   * @see https://encoding.spec.whatwg.org/#utf-8-decode-without-bom
    +   * Return the 'special port' if the URL is special and not 'file'.
    +   * Returns 0 otherwise.
        */
    -  std::string percent_decode(const std::string_view input, size_t first_percent);
    +  [[nodiscard]] inline uint16_t get_special_port() const noexcept;
     
       /**
    -   * Returns a percent-encoding string whether percent encoding was needed or not.
    -   * @see https://github.com/nodejs/node/blob/main/src/node_url.cc#L226
    +   * @private
    +   *
    +   * Get the default port if the url's scheme has one, returns 0 otherwise.
        */
    -  std::string percent_encode(const std::string_view input, const uint8_t character_set[]);
    +  [[nodiscard]] ada_really_inline uint16_t scheme_default_port() const noexcept;
     
       /**
    -   * Returns true if percent encoding was needed, in which case, we store
    -   * the percent-encoded content in 'out'. Otherwise, out is left unchanged.
    -   * @see https://github.com/nodejs/node/blob/main/src/node_url.cc#L226
    +   * @private
    +   *
    +   * Parse a port (16-bit decimal digit) from the provided input.
    +   * We assume that the input does not contain spaces or tabs
    +   * within the ASCII digits.
    +   * It returns how many bytes were consumed when a number is successfully
    +   * parsed.
    +   * @return On failure, it returns zero.
    +   * @see https://url.spec.whatwg.org/#host-parsing
        */
    -  bool percent_encode(const std::string_view input, const uint8_t character_set[], std::string& out);
    +  virtual ada_really_inline size_t parse_port(
    +      std::string_view view, bool check_trailing_content = false) noexcept = 0;
     
       /**
    -   * Lowers the string in-place, assuming that the content is ASCII.
    -   * Return true if the content was ASCII.
    +   * Returns a JSON string representation of this URL.
        */
    -  constexpr bool to_lower_ascii(char * input, size_t length) noexcept;
    -} // namespace ada::unicode
    +  virtual std::string to_string() const = 0;
     
    -#endif // ADA_UNICODE_H
    -/* end file include/ada/unicode.h */
    +  /** @private */
    +  virtual inline void clear_base_pathname() = 0;
    +
    +  /** @private */
    +  virtual inline void clear_base_search() = 0;
    +
    +  /** @private */
    +  virtual inline bool base_fragment_has_value() const = 0;
    +
    +  /** @private */
    +  virtual inline bool base_search_has_value() const = 0;
    +
    +};  // url_base
    +
    +}  // namespace ada
    +
    +#endif
    +/* end file include/ada/url_base.h */
     
     #include 
     #include 
    -#include 
     #include 
    +#include 
     #include 
     #include 
     
     namespace ada {
    -  /**
    -   * @brief Generic URL struct.
    -   *
    -   * @details To disambiguate from a valid URL string it can also be referred to as a URL record.
    -   * A URL is a struct that represents a universal identifier.
    -   * @see https://url.spec.whatwg.org/#url-representation
    -   */
    -  struct url {
    -    url() = default;
    -    url(const url &u) = default;
    -    url(url &&u) noexcept = default;
    -    url &operator=(url &&u) noexcept = default;
    -    url &operator=(const url &u) = default;
    -    ADA_ATTRIBUTE_NOINLINE ~url() = default;
    -
    -    /**
    -     * @private
    -     * A URL’s username is an ASCII string identifying a username. It is initially the empty string.
    -     */
    -    std::string username{};
    -
    -    /**
    -     * @private
    -     * A URL’s password is an ASCII string identifying a password. It is initially the empty string.
    -     */
    -    std::string password{};
    -
    -    /**
    -     * @private
    -     * A URL’s host is null or a host. It is initially null.
    -     */
    -    std::optional host{};
    -
    -    /**
    -     * @private
    -     * A URL’s port is either null or a 16-bit unsigned integer that identifies a networking port. It is initially null.
    -     */
    -    std::optional port{};
    -
    -    /**
    -     * @private
    -     * A URL’s path is either an ASCII string or a list of zero or more ASCII strings, usually identifying a location.
    -     */
    -    std::string path{};
    -
    -    /**
    -     * @private
    -     * A URL’s query is either null or an ASCII string. It is initially null.
    -     */
    -    std::optional query{};
    -
    -    /**
    -     * @private
    -     * A URL’s fragment is either null or an ASCII string that can be used for further processing on the resource
    -     * the URL’s other components identify. It is initially null.
    -     */
    -    std::optional fragment{};
    -
    -    /**
    -     * @see https://url.spec.whatwg.org/#dom-url-href
    -     * @see https://url.spec.whatwg.org/#concept-url-serializer
    -     */
    -    [[nodiscard]] std::string get_href() const noexcept;
    -
    -    /**
    -     * The origin getter steps are to return the serialization of this’s URL’s origin. [HTML]
    -     * @see https://url.spec.whatwg.org/#concept-url-origin
    -     */
    -    [[nodiscard]] std::string get_origin() const noexcept;
    -
    -    /**
    -     * The protocol getter steps are to return this’s URL’s scheme, followed by U+003A (:).
    -     * @see https://url.spec.whatwg.org/#dom-url-protocol
    -     */
    -    [[nodiscard]] std::string get_protocol() const noexcept;
    -
    -    /**
    -     * Return url’s host, serialized, followed by U+003A (:) and url’s port, serialized.
    -     * @see https://url.spec.whatwg.org/#dom-url-host
    -     */
    -    [[nodiscard]] std::string get_host() const noexcept;
    -
    -    /**
    -     * Return this’s URL’s host, serialized.
    -     * @see https://url.spec.whatwg.org/#dom-url-hostname
    -     */
    -    [[nodiscard]] std::string get_hostname() const noexcept;
    -
    -    /**
    -     * The pathname getter steps are to return the result of URL path serializing this’s URL.
    -     * @see https://url.spec.whatwg.org/#dom-url-pathname
    -     */
    -    [[nodiscard]] std::string get_pathname() const noexcept;
    -
    -    /**
    -     * Return U+003F (?), followed by this’s URL’s query.
    -     * @see https://url.spec.whatwg.org/#dom-url-search
    -     */
    -    [[nodiscard]] std::string get_search() const noexcept;
    -
    -    /**
    -     * The username getter steps are to return this’s URL’s username.
    -     * @see https://url.spec.whatwg.org/#dom-url-username
    -     */
    -    [[nodiscard]] std::string get_username() const noexcept;
    -
    -    /**
    -     * @return Returns true on successful operation.
    -     * @see https://url.spec.whatwg.org/#dom-url-username
    -     */
    -    bool set_username(const std::string_view input);
    -
    -    /**
    -     * @return Returns true on success.
    -     * @see https://url.spec.whatwg.org/#dom-url-password
    -     */
    -    bool set_password(const std::string_view input);
    -
    -    /**
    -     * @return Returns true on success.
    -     * @see https://url.spec.whatwg.org/#dom-url-port
    -     */
    -    bool set_port(const std::string_view input);
    -
    -    /**
    -     * This function always succeeds.
    -     * @see https://url.spec.whatwg.org/#dom-url-hash
    -     */
    -    void set_hash(const std::string_view input);
    -
    -    /**
    -     * This function always succeeds.
    -     * @see https://url.spec.whatwg.org/#dom-url-search
    -     */
    -    void set_search(const std::string_view input);
    -
    -    /**
    -     * @return Returns true on success.
    -     * @see https://url.spec.whatwg.org/#dom-url-search
    -     */
    -    bool set_pathname(const std::string_view input);
    -
    -    /**
    -     * @return Returns true on success.
    -     * @see https://url.spec.whatwg.org/#dom-url-host
    -     */
    -    bool set_host(const std::string_view input);
    -
    -    /**
    -     * @return Returns true on success.
    -     * @see https://url.spec.whatwg.org/#dom-url-hostname
    -     */
    -    bool set_hostname(const std::string_view input);
    -
    -    /**
    -     * @return Returns true on success.
    -     * @see https://url.spec.whatwg.org/#dom-url-protocol
    -     */
    -    bool set_protocol(const std::string_view input);
    -
    -    /**
    -     * @see https://url.spec.whatwg.org/#dom-url-href
    -     */
    -    bool set_href(const std::string_view input);
    -
    -    /**
    -     * @private
    -     * 
    -     * Sets the host or hostname according to override condition.
    -     * Return true on success.
    -     * @see https://url.spec.whatwg.org/#hostname-state
    -     */
    -    bool set_host_or_hostname(std::string_view input, bool override_hostname);
    -
    -    /**
    -     * The password getter steps are to return this’s URL’s password.
    -     * @see https://url.spec.whatwg.org/#dom-url-password
    -     */
    -    [[nodiscard]] std::string get_password() const noexcept;
    -
    -    /**
    -     * Return this’s URL’s port, serialized.
    -     * @see https://url.spec.whatwg.org/#dom-url-port
    -     */
    -    [[nodiscard]] std::string get_port() const noexcept;
    -
    -    /**
    -     * Return U+0023 (#), followed by this’s URL’s fragment.
    -     * @see https://url.spec.whatwg.org/#dom-url-hash
    -     */
    -    [[nodiscard]] std::string get_hash() const noexcept;
    -
    -    /**
    -     * Returns true if this URL has a valid domain as per RFC 1034 and
    -     * corresponding specifications. Among other things, it requires
    -     * that the domain string has fewer than 255 octets.
    -     */
    -    [[nodiscard]] bool has_valid_domain() const noexcept;
    -
    -    /**
    -     * Used for returning the validity from the result of the URL parser.
    -     */
    -    bool is_valid{true};
    -
    -    /**
    -     * A URL has an opaque path if its path is a string.
    -     */
    -    bool has_opaque_path{false};
    -
    -    /**
    -     * A URL includes credentials if its username or password is not the empty string.
    -     */
    -    [[nodiscard]] ada_really_inline bool includes_credentials() const noexcept;
    -
    -    /**
    -     * A URL is special if its scheme is a special scheme. A URL is not special if its scheme is not a special scheme.
    -     */
    -    [[nodiscard]] ada_really_inline bool is_special() const noexcept;
    -
    -    /**
    -     * @private
    -     *
    -     * Return the 'special port' if the URL is special and not 'file'.
    -     * Returns 0 otherwise.
    -     */
    -    [[nodiscard]] inline uint16_t get_special_port() const;
    -
    -    /**
    -     * @private
    -     *
    -     * Return the scheme type. Note that it is faster to do
    -     * get_scheme_type() == ada::scheme::type::FILE than to do
    -     * get_scheme() == "file", since the former is a direct integer comparison,
    -     * while the other involves a (cheap) string test.
    -     */
    -    [[nodiscard]] ada_really_inline ada::scheme::type get_scheme_type() const noexcept;
    -
    -    /**
    -     * @private
    -     *
    -     * Get the default port if the url's scheme has one, returns 0 otherwise.
    -     */
    -    [[nodiscard]] ada_really_inline uint16_t scheme_default_port() const noexcept;
    -    /**
    -     * @private
    -     *
    -     * A URL cannot have a username/password/port if its host is null or the empty string, or its scheme is "file".
    -     */
    -    [[nodiscard]] inline bool cannot_have_credentials_or_port() const;
    -
    -    /**
    -     * @private
    -     *
    -     * Parse a port (16-bit decimal digit) from the provided input.
    -     * We assume that the input does not contain spaces or tabs
    -     * within the ASCII digits.
    -     * It returns how many bytes were consumed when a number is successfully parsed.
    -     * @return On failure, it returns zero.
    -     * @see https://url.spec.whatwg.org/#host-parsing
    -     */
    -    ada_really_inline size_t parse_port(std::string_view view, bool check_trailing_content = false) noexcept;
    -
    -    /**
    -     * @private
    -     *
    -     * Return a string representing the scheme. Note that get_scheme_type() should often be used instead.
    -     * @see https://url.spec.whatwg.org/#dom-url-protocol
    -     */
    -    [[nodiscard]] inline std::string_view get_scheme() const noexcept;
    -    /**
    -     * Set the scheme for this URL. The provided scheme should be a valid
    -     * scheme string, be lower-cased, not contain spaces or tabs. It should
    -     * have no spurious trailing or leading content.
    -     */
    -    inline void set_scheme(std::string&& new_scheme) noexcept;
    -
    -    /**
    -     * @private
    -     *
    -     * Take the scheme from another URL. The scheme string is moved from the
    -     * provided url.
    -     */
    -    inline void copy_scheme(ada::url&& u) noexcept;
    -
    -    /**
    -     * @private
    -     *
    -     * Take the scheme from another URL. The scheme string is copied from the
    -     * provided url.
    -     */
    -    inline void copy_scheme(const ada::url& u);
    -
    -    /**
    -     * @private
    -     *
    -     * Parse the host from the provided input. We assume that
    -     * the input does not contain spaces or tabs. Control
    -     * characters and spaces are not trimmed (they should have
    -     * been removed if needed).
    -     * Return true on success.
    -     * @see https://url.spec.whatwg.org/#host-parsing
    -     */
    -    [[nodiscard]] ada_really_inline bool parse_host(std::string_view input);
    -
    -    /**
    -     * @private
    -     *
    -     * Parse the path from the provided input.
    -     * Return true on success. Control characters not
    -     * trimmed from the ends (they should have
    -     * been removed if needed).
    -     *
    -     * The input is expected to be UTF-8.
    -     *
    -     * @see https://url.spec.whatwg.org/
    -     */
    -    [[nodiscard]] ada_really_inline bool parse_path(const std::string_view input);
    -
    -    /**
    -     * @private
    -     */
    -    template 
    -    [[nodiscard]] ada_really_inline bool parse_scheme(const std::string_view input);
    -
    -    /**
    -     * Returns a JSON string representation of this URL.
    -     */
    -    std::string to_string() const;
    -
    -  private:
    -
    -    /**
    -     * @private
    -     *
    -     * Return true on success.
    -     * @see https://url.spec.whatwg.org/#concept-ipv4-parser
    -     */
    -    [[nodiscard]] bool parse_ipv4(std::string_view input);
    -
    -    /**
    -     * @private
    -     *
    -     * Return true on success.
    -     * @see https://url.spec.whatwg.org/#concept-ipv6-parser
    -     */
    -    [[nodiscard]] bool parse_ipv6(std::string_view input);
    -
    -    /**
    -     * @private
    -     *
    -     * Return true on success.
    -     * @see https://url.spec.whatwg.org/#concept-opaque-host-parser
    -     */
    -    [[nodiscard]] bool parse_opaque_host(std::string_view input);
    -
    -    /**
    -     * @private
    -     */
    -    ada::scheme::type type{ada::scheme::type::NOT_SPECIAL};
    -
    -    /**
    -     * @private
    -     *
    -     * A URL’s scheme is an ASCII string that identifies the type of URL and can be used to dispatch a
    -     * URL for further processing after parsing. It is initially the empty string.
    -     * We only set non_special_scheme when the scheme is non-special, otherwise we avoid constructing
    -     * string.
    -     *
    -     * Special schemes are stored in ada::scheme::details::is_special_list so we typically do not need
    -     * to store them in each url instance.
    -     */
    -    std::string non_special_scheme{};
    -
    -  }; // struct url
    -
    -
    -  inline std::ostream& operator<<(std::ostream& out, const ada::url& u);
    -} // namespace ada
    -
    -#endif // ADA_URL_H
    -/* end file include/ada/url.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/state.h
    -/* begin file include/ada/state.h */
    +
     /**
    - * @file state.h
    - * @brief Definitions for the states of the URL state machine.
    + * @brief Generic URL struct reliant on std::string instantiation.
    + *
    + * @details To disambiguate from a valid URL string it can also be referred to
    + * as a URL record. A URL is a struct that represents a universal identifier.
    + * Unlike the url_aggregator, the ada::url represents the different components
    + * of a parsed URL as independent std::string instances. This makes the
    + * structure heavier and more reliant on memory allocations. When getting
    + * components from the parsed URL, a new std::string is typically constructed.
    + *
    + * @see https://url.spec.whatwg.org/#url-representation
      */
    -#ifndef ADA_STATE_H
    -#define ADA_STATE_H
    -
    -
    -#include 
    +struct url : url_base {
    +  url() = default;
    +  url(const url &u) = default;
    +  url(url &&u) noexcept = default;
    +  url &operator=(url &&u) noexcept = default;
    +  url &operator=(const url &u) = default;
    +  ~url() = default;
     
    -namespace ada {
    +  /**
    +   * @private
    +   * A URL’s username is an ASCII string identifying a username. It is initially
    +   * the empty string.
    +   */
    +  std::string username{};
     
       /**
    -   * @see https://url.spec.whatwg.org/#url-parsing
    +   * @private
    +   * A URL’s password is an ASCII string identifying a password. It is initially
    +   * the empty string.
        */
    -  enum class state {
    -    AUTHORITY,
    -    SCHEME_START,
    -    SCHEME,
    -    HOST,
    -    NO_SCHEME,
    -    FRAGMENT,
    -    RELATIVE_SCHEME,
    -    RELATIVE_SLASH,
    -    FILE,
    -    FILE_HOST,
    -    FILE_SLASH,
    -    PATH_OR_AUTHORITY,
    -    SPECIAL_AUTHORITY_IGNORE_SLASHES,
    -    SPECIAL_AUTHORITY_SLASHES,
    -    SPECIAL_RELATIVE_OR_AUTHORITY,
    -    QUERY,
    -    PATH,
    -    PATH_START,
    -    OPAQUE_PATH,
    -    PORT,
    -  };
    +  std::string password{};
     
       /**
    -   * Stringify a URL state machine state.
    +   * @private
    +   * A URL’s host is null or a host. It is initially null.
        */
    -  ada_warn_unused std::string to_string(ada::state s);
    +  std::optional host{};
     
    -} // ada namespace
    +  /**
    +   * @private
    +   * A URL’s port is either null or a 16-bit unsigned integer that identifies a
    +   * networking port. It is initially null.
    +   */
    +  std::optional port{};
     
    -#endif // ADA_STATE_H
    -/* end file include/ada/state.h */
    +  /**
    +   * @private
    +   * A URL’s path is either an ASCII string or a list of zero or more ASCII
    +   * strings, usually identifying a location.
    +   */
    +  std::string path{};
     
    -#include 
    -#include 
    +  /**
    +   * @private
    +   * A URL’s query is either null or an ASCII string. It is initially null.
    +   */
    +  std::optional query{};
     
    -/**
    - * @namespace ada::helpers
    - * @brief Includes the definitions for helper functions
    - */
    -namespace ada::helpers {
    +  /**
    +   * @private
    +   * A URL’s fragment is either null or an ASCII string that can be used for
    +   * further processing on the resource the URL’s other components identify. It
    +   * is initially null.
    +   */
    +  std::optional fragment{};
    +
    +  /** @private */
    +  inline void update_unencoded_base_hash(std::string_view input);
    +  /** @private */
    +  inline void update_base_hostname(std::string_view input);
    +  /** @private */
    +  inline void update_base_search(std::string_view input);
    +  /** @private */
    +  inline void update_base_search(std::string_view input,
    +                                 const uint8_t query_percent_encode_set[]);
    +  /** @private */
    +  inline void update_base_search(std::optional input);
    +  /** @private */
    +  inline void update_base_pathname(const std::string_view input);
    +  /** @private */
    +  inline void update_base_username(const std::string_view input);
    +  /** @private */
    +  inline void update_base_password(const std::string_view input);
    +  /** @private */
    +  inline void update_base_port(std::optional input);
    +  /** @private */
    +  inline void clear_base_pathname() override;
    +  /** @private */
    +  inline void clear_base_search() override;
    +  /** @private */
    +  inline bool base_fragment_has_value() const override;
    +  /** @private */
    +  inline bool base_search_has_value() const override;
    +  /** @private set this URL's type to file */
    +  inline void set_protocol_as_file();
    +  /** @return true if it has an host but it is the empty string */
    +  [[nodiscard]] inline bool has_empty_hostname() const noexcept;
    +  /** @return true if it has a host (included an empty host) */
    +  [[nodiscard]] inline bool has_hostname() const noexcept;
    +  [[nodiscard]] bool has_valid_domain() const noexcept override;
     
       /**
    -   * This function is used to prune a fragment from a url, and returning the removed string if input has fragment.
    +   * @private
    +   *
    +   * Parse the path from the provided input.
    +   * Return true on success. Control characters not
    +   * trimmed from the ends (they should have
    +   * been removed if needed).
        *
    -   * @details prune_fragment seeks the first '#' and returns everything after it as a
    -   * string_view, and modifies (in place) the input so that it points at everything
    -   * before the '#'. If no '#' is found, the input is left unchanged and std::nullopt is returned.
    +   * The input is expected to be UTF-8.
        *
    -   * @attention The function is non-allocating and it does not throw.
    -   * @returns Note that the returned string_view might be empty!
    +   * @see https://url.spec.whatwg.org/
        */
    -  ada_really_inline std::optional prune_fragment(std::string_view& input) noexcept;
    +  ada_really_inline void parse_path(const std::string_view input);
     
       /**
    -   * Defined by the URL specification, shorten a URLs paths.
    -   * @see https://url.spec.whatwg.org/#shorten-a-urls-path
    +   * Set the scheme for this URL. The provided scheme should be a valid
    +   * scheme string, be lower-cased, not contain spaces or tabs. It should
    +   * have no spurious trailing or leading content.
        */
    -  ada_really_inline void shorten_path(std::string& path, ada::scheme::type type) noexcept;
    -
    -
    - /**
    -  * @private
    -  *
    -  * Parse the path from the provided input and append to the existing
    -  * (possibly empty) path. The input cannot contain tabs and spaces: it
    -  * is the user's responsibility to check.
    -  *
    -  * The input is expected to be UTF-8.
    -  *
    -  * @return true on success.
    -  * @see https://url.spec.whatwg.org/
    -  */
    -  ada_really_inline bool parse_prepared_path(const std::string_view input, ada::scheme::type type, std::string& path);
    +  inline void set_scheme(std::string &&new_scheme) noexcept;
     
       /**
    -   * Remove and mutate all ASCII tab or newline characters from an input.
    +   * @private
    +   *
    +   * Take the scheme from another URL. The scheme string is moved from the
    +   * provided url.
        */
    -  ada_really_inline void remove_ascii_tab_or_newline(std::string& input) noexcept;
    +  inline void copy_scheme(ada::url &&u) noexcept;
     
       /**
    -   * Return the substring from input going from index pos to the end. If pos > input.size(),
    -   * it returns an empty string_view. This function cannot throw.
    +   * Returns a JSON string representation of this URL.
        */
    -  ada_really_inline std::string_view substring(std::string_view input, size_t pos) noexcept;
    +  std::string to_string() const override;
     
       /**
    -   * Returns a host's delimiter location depending on the state of the instance, and 
    -   * whether a colon was found outside brackets.
    -   * Used by the host parser.
    +   * @see https://url.spec.whatwg.org/#dom-url-href
    +   * @see https://url.spec.whatwg.org/#concept-url-serializer
        */
    -  ada_really_inline std::pair get_host_delimiter_location(const bool is_special, std::string_view& view) noexcept;
    +  [[nodiscard]] ada_really_inline std::string get_href() const noexcept;
     
       /**
    -   * Removes leading and trailing C0 control and whitespace characters from string.
    +   * The origin getter steps are to return the serialization of this’s URL’s
    +   * origin. [HTML]
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#concept-url-origin
        */
    -  ada_really_inline void trim_c0_whitespace(std::string_view& input) noexcept;
    +  [[nodiscard]] std::string get_origin() const noexcept override;
     
       /**
    -   * @see https://url.spec.whatwg.org/#potentially-strip-trailing-spaces-from-an-opaque-path
    +   * The protocol getter steps are to return this’s URL’s scheme, followed by
    +   * U+003A (:).
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#dom-url-protocol
        */
    -  ada_really_inline void strip_trailing_spaces_from_opaque_path(ada::url& url) noexcept;
    +  [[nodiscard]] std::string get_protocol() const noexcept;
     
       /**
    -   * Reverse the order of the bytes.
    +   * Return url’s host, serialized, followed by U+003A (:) and url’s port,
    +   * serialized.
    +   * When there is no host, this function returns the empty string.
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#dom-url-host
        */
    -  ada_really_inline uint64_t swap_bytes(uint64_t val) noexcept;
    +  [[nodiscard]] std::string get_host() const noexcept;
     
       /**
    -   * Reverse the order of the bytes but only if the system is big endian
    +   * Return this’s URL’s host, serialized.
    +   * When there is no host, this function returns the empty string.
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#dom-url-hostname
        */
    -  ada_really_inline uint64_t swap_bytes_if_big_endian(uint64_t val) noexcept;
    -  
    -  /**
    -  * Finds the delimiter of a view in authority state.
    -  */
    -  ada_really_inline size_t find_authority_delimiter_special(std::string_view view) noexcept;
    +  [[nodiscard]] std::string get_hostname() const noexcept;
     
       /**
    -   * Finds the delimiter of a view in authority state.
    +   * The pathname getter steps are to return the result of URL path serializing
    +   * this’s URL.
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#dom-url-pathname
        */
    -  ada_really_inline size_t find_authority_delimiter(std::string_view view) noexcept;
    +  [[nodiscard]] const std::string_view get_pathname() const noexcept;
     
    -} // namespace ada::helpers
    +  /**
    +   * Compute the pathname length in bytes witout instantiating a view or a
    +   * string.
    +   * @return size of the pathname in bytes
    +   * @see https://url.spec.whatwg.org/#dom-url-pathname
    +   */
    +  ada_really_inline size_t get_pathname_length() const noexcept;
     
    -#endif // ADA_HELPERS_H
    -/* end file include/ada/helpers.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/parser.h
    -/* begin file include/ada/parser.h */
    -/**
    - * @file parser.h
    - * @brief Definitions for the parser.
    - */
    -#ifndef ADA_PARSER_H
    -#define ADA_PARSER_H
    +  /**
    +   * Return U+003F (?), followed by this’s URL’s query.
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#dom-url-search
    +   */
    +  [[nodiscard]] std::string get_search() const noexcept;
     
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/expected.h
    -/* begin file include/ada/expected.h */
    -/**
    - * @file expected.h
    - * @brief Definitions for std::expected
    - * @private Excluded from docs through the doxygen file.
    - */
    -///
    -// expected - An implementation of std::expected with extensions
    -// Written in 2017 by Sy Brand (tartanllama@gmail.com, @TartanLlama)
    -//
    -// Documentation available at http://tl.tartanllama.xyz/
    -//
    -// To the extent possible under law, the author(s) have dedicated all
    -// copyright and related and neighboring rights to this software to the
    -// public domain worldwide. This software is distributed without any warranty.
    -//
    -// You should have received a copy of the CC0 Public Domain Dedication
    -// along with this software. If not, see
    -// .
    -///
    +  /**
    +   * The username getter steps are to return this’s URL’s username.
    +   * @return a constant reference to the underlying string.
    +   * @see https://url.spec.whatwg.org/#dom-url-username
    +   */
    +  [[nodiscard]] const std::string &get_username() const noexcept;
     
    -#ifndef TL_EXPECTED_HPP
    -#define TL_EXPECTED_HPP
    +  /**
    +   * @return Returns true on successful operation.
    +   * @see https://url.spec.whatwg.org/#dom-url-username
    +   */
    +  bool set_username(const std::string_view input);
     
    -#define TL_EXPECTED_VERSION_MAJOR 1
    -#define TL_EXPECTED_VERSION_MINOR 0
    -#define TL_EXPECTED_VERSION_PATCH 1
    +  /**
    +   * @return Returns true on success.
    +   * @see https://url.spec.whatwg.org/#dom-url-password
    +   */
    +  bool set_password(const std::string_view input);
     
    -#include 
    -#include 
    -#include 
    -#include 
    +  /**
    +   * @return Returns true on success.
    +   * @see https://url.spec.whatwg.org/#dom-url-port
    +   */
    +  bool set_port(const std::string_view input);
     
    -#if defined(__EXCEPTIONS) || defined(_CPPUNWIND)
    -#define TL_EXPECTED_EXCEPTIONS_ENABLED
    -#endif
    +  /**
    +   * This function always succeeds.
    +   * @see https://url.spec.whatwg.org/#dom-url-hash
    +   */
    +  void set_hash(const std::string_view input);
     
    -#if (defined(_MSC_VER) && _MSC_VER == 1900)
    -#define TL_EXPECTED_MSVC2015
    -#define TL_EXPECTED_MSVC2015_CONSTEXPR
    -#else
    -#define TL_EXPECTED_MSVC2015_CONSTEXPR constexpr
    -#endif
    +  /**
    +   * This function always succeeds.
    +   * @see https://url.spec.whatwg.org/#dom-url-search
    +   */
    +  void set_search(const std::string_view input);
     
    -#if (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ <= 9 &&              \
    -     !defined(__clang__))
    -#define TL_EXPECTED_GCC49
    -#endif
    +  /**
    +   * @return Returns true on success.
    +   * @see https://url.spec.whatwg.org/#dom-url-search
    +   */
    +  bool set_pathname(const std::string_view input);
     
    -#if (defined(__GNUC__) && __GNUC__ == 5 && __GNUC_MINOR__ <= 4 &&              \
    -     !defined(__clang__))
    -#define TL_EXPECTED_GCC54
    -#endif
    +  /**
    +   * @return Returns true on success.
    +   * @see https://url.spec.whatwg.org/#dom-url-host
    +   */
    +  bool set_host(const std::string_view input);
     
    -#if (defined(__GNUC__) && __GNUC__ == 5 && __GNUC_MINOR__ <= 5 &&              \
    -     !defined(__clang__))
    -#define TL_EXPECTED_GCC55
    -#endif
    +  /**
    +   * @return Returns true on success.
    +   * @see https://url.spec.whatwg.org/#dom-url-hostname
    +   */
    +  bool set_hostname(const std::string_view input);
     
    -#if (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ <= 9 &&              \
    -     !defined(__clang__))
    -// GCC < 5 doesn't support overloading on const&& for member functions
    +  /**
    +   * @return Returns true on success.
    +   * @see https://url.spec.whatwg.org/#dom-url-protocol
    +   */
    +  bool set_protocol(const std::string_view input);
     
    -#define TL_EXPECTED_NO_CONSTRR
    -// GCC < 5 doesn't support some standard C++11 type traits
    -#define TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T)                         \
    -  std::has_trivial_copy_constructor
    -#define TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(T)                            \
    -  std::has_trivial_copy_assign
    +  /**
    +   * @see https://url.spec.whatwg.org/#dom-url-href
    +   */
    +  bool set_href(const std::string_view input);
     
    -// This one will be different for GCC 5.7 if it's ever supported
    -#define TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(T)                               \
    -  std::is_trivially_destructible
    +  /**
    +   * @private
    +   *
    +   * Sets the host or hostname according to override condition.
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#hostname-state
    +   */
    +  template 
    +  bool set_host_or_hostname(std::string_view input);
     
    -// GCC 5 < v < 8 has a bug in is_trivially_copy_constructible which breaks
    -// std::vector for non-copyable types
    -#elif (defined(__GNUC__) && __GNUC__ < 8 && !defined(__clang__))
    -#ifndef TL_GCC_LESS_8_TRIVIALLY_COPY_CONSTRUCTIBLE_MUTEX
    -#define TL_GCC_LESS_8_TRIVIALLY_COPY_CONSTRUCTIBLE_MUTEX
    -namespace tl {
    -namespace detail {
    -template 
    -struct is_trivially_copy_constructible
    -    : std::is_trivially_copy_constructible {};
    -#ifdef _GLIBCXX_VECTOR
    -template 
    -struct is_trivially_copy_constructible> : std::false_type {};
    -#endif
    -} // namespace detail
    -} // namespace tl
    -#endif
    +  /**
    +   * The password getter steps are to return this’s URL’s password.
    +   * @return a constant reference to the underlying string.
    +   * @see https://url.spec.whatwg.org/#dom-url-password
    +   */
    +  [[nodiscard]] const std::string &get_password() const noexcept;
     
    -#define TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T)                         \
    -  tl::detail::is_trivially_copy_constructible
    -#define TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(T)                            \
    -  std::is_trivially_copy_assignable
    -#define TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(T)                               \
    -  std::is_trivially_destructible
    -#else
    -#define TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T)                         \
    -  std::is_trivially_copy_constructible
    -#define TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(T)                            \
    -  std::is_trivially_copy_assignable
    -#define TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(T)                               \
    -  std::is_trivially_destructible
    -#endif
    +  /**
    +   * Return this’s URL’s port, serialized.
    +   * @return a newly constructed string representing the port.
    +   * @see https://url.spec.whatwg.org/#dom-url-port
    +   */
    +  [[nodiscard]] std::string get_port() const noexcept;
     
    -#if __cplusplus > 201103L
    -#define TL_EXPECTED_CXX14
    -#endif
    +  /**
    +   * Return U+0023 (#), followed by this’s URL’s fragment.
    +   * @return a newly constructed string representing the hash.
    +   * @see https://url.spec.whatwg.org/#dom-url-hash
    +   */
    +  [[nodiscard]] std::string get_hash() const noexcept;
     
    -#ifdef TL_EXPECTED_GCC49
    -#define TL_EXPECTED_GCC49_CONSTEXPR
    -#else
    -#define TL_EXPECTED_GCC49_CONSTEXPR constexpr
    -#endif
    +  /**
    +   * A URL includes credentials if its username or password is not the empty
    +   * string.
    +   */
    +  [[nodiscard]] ada_really_inline bool includes_credentials() const noexcept;
     
    -#if (__cplusplus == 201103L || defined(TL_EXPECTED_MSVC2015) ||                \
    -     defined(TL_EXPECTED_GCC49))
    -#define TL_EXPECTED_11_CONSTEXPR
    -#else
    -#define TL_EXPECTED_11_CONSTEXPR constexpr
    -#endif
    +  /**
    +   * @private
    +   *
    +   * A URL cannot have a username/password/port if its host is null or the empty
    +   * string, or its scheme is "file".
    +   */
    +  [[nodiscard]] inline bool cannot_have_credentials_or_port() const;
     
    -namespace tl {
    -template  class expected;
    +  /** @private */
    +  ada_really_inline size_t
    +  parse_port(std::string_view view,
    +             bool check_trailing_content = false) noexcept override;
     
    -#ifndef TL_MONOSTATE_INPLACE_MUTEX
    -#define TL_MONOSTATE_INPLACE_MUTEX
    -class monostate {};
    +  /**
    +   * @private
    +   *
    +   * Take the scheme from another URL. The scheme string is copied from the
    +   * provided url.
    +   */
    +  inline void copy_scheme(const ada::url &u);
     
    -struct in_place_t {
    -  explicit in_place_t() = default;
    -};
    -static constexpr in_place_t in_place{};
    -#endif
    +  /**
    +   * @private
    +   *
    +   * Parse the host from the provided input. We assume that
    +   * the input does not contain spaces or tabs. Control
    +   * characters and spaces are not trimmed (they should have
    +   * been removed if needed).
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#host-parsing
    +   */
    +  [[nodiscard]] ada_really_inline bool parse_host(std::string_view input);
     
    -template  class unexpected {
    -public:
    -  static_assert(!std::is_same::value, "E must not be void");
    +  /** @private */
    +  template 
    +  [[nodiscard]] ada_really_inline bool parse_scheme(
    +      const std::string_view input);
     
    -  unexpected() = delete;
    -  constexpr explicit unexpected(const E &e) : m_val(e) {}
    +  /**
    +   * Useful for implementing efficient serialization for the URL.
    +   *
    +   * https://user:pass@example.com:1234/foo/bar?baz#quux
    +   *       |     |    |          | ^^^^|       |   |
    +   *       |     |    |          | |   |       |   `----- hash_start
    +   *       |     |    |          | |   |       `--------- search_start
    +   *       |     |    |          | |   `----------------- pathname_start
    +   *       |     |    |          | `--------------------- port
    +   *       |     |    |          `----------------------- host_end
    +   *       |     |    `---------------------------------- host_start
    +   *       |     `--------------------------------------- username_end
    +   *       `--------------------------------------------- protocol_end
    +   *
    +   * Inspired after servo/url
    +   *
    +   * @return a newly constructed component.
    +   *
    +   * @see
    +   * https://github.com/servo/rust-url/blob/b65a45515c10713f6d212e6726719a020203cc98/url/src/quirks.rs#L31
    +   */
    +  [[nodiscard]] ada_really_inline ada::url_components get_components()
    +      const noexcept;
     
    -  constexpr explicit unexpected(E &&e) : m_val(std::move(e)) {}
    + private:
    +  /**
    +   * @private
    +   *
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#concept-ipv4-parser
    +   */
    +  [[nodiscard]] bool parse_ipv4(std::string_view input);
     
    -  template ::value>::type * = nullptr>
    -  constexpr explicit unexpected(Args &&...args)
    -      : m_val(std::forward(args)...) {}
    -  template <
    -      class U, class... Args,
    -      typename std::enable_if &, Args &&...>::value>::type * = nullptr>
    -  constexpr explicit unexpected(std::initializer_list l, Args &&...args)
    -      : m_val(l, std::forward(args)...) {}
    +  /**
    +   * @private
    +   *
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#concept-ipv6-parser
    +   */
    +  [[nodiscard]] bool parse_ipv6(std::string_view input);
     
    -  constexpr const E &value() const & { return m_val; }
    -  TL_EXPECTED_11_CONSTEXPR E &value() & { return m_val; }
    -  TL_EXPECTED_11_CONSTEXPR E &&value() && { return std::move(m_val); }
    -  constexpr const E &&value() const && { return std::move(m_val); }
    +  /**
    +   * @private
    +   *
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#concept-opaque-host-parser
    +   */
    +  [[nodiscard]] bool parse_opaque_host(std::string_view input);
     
    -private:
    -  E m_val;
    -};
    +  /**
    +   * @private
    +   *
    +   * A URL’s scheme is an ASCII string that identifies the type of URL and can
    +   * be used to dispatch a URL for further processing after parsing. It is
    +   * initially the empty string. We only set non_special_scheme when the scheme
    +   * is non-special, otherwise we avoid constructing string.
    +   *
    +   * Special schemes are stored in ada::scheme::details::is_special_list so we
    +   * typically do not need to store them in each url instance.
    +   */
    +  std::string non_special_scheme{};
     
    -#ifdef __cpp_deduction_guides
    -template  unexpected(E) -> unexpected;
    -#endif
    +};  // struct url
     
    -template 
    -constexpr bool operator==(const unexpected &lhs, const unexpected &rhs) {
    -  return lhs.value() == rhs.value();
    -}
    -template 
    -constexpr bool operator!=(const unexpected &lhs, const unexpected &rhs) {
    -  return lhs.value() != rhs.value();
    -}
    -template 
    -constexpr bool operator<(const unexpected &lhs, const unexpected &rhs) {
    -  return lhs.value() < rhs.value();
    -}
    -template 
    -constexpr bool operator<=(const unexpected &lhs, const unexpected &rhs) {
    -  return lhs.value() <= rhs.value();
    -}
    -template 
    -constexpr bool operator>(const unexpected &lhs, const unexpected &rhs) {
    -  return lhs.value() > rhs.value();
    -}
    -template 
    -constexpr bool operator>=(const unexpected &lhs, const unexpected &rhs) {
    -  return lhs.value() >= rhs.value();
    -}
    +inline std::ostream &operator<<(std::ostream &out, const ada::url &u);
    +}  // namespace ada
     
    -template 
    -unexpected::type> make_unexpected(E &&e) {
    -  return unexpected::type>(std::forward(e));
    -}
    +#endif  // ADA_URL_H
    +/* end file include/ada/url.h */
    +/* begin file include/ada/state.h */
    +/**
    + * @file state.h
    + * @brief Definitions for the states of the URL state machine.
    + */
    +#ifndef ADA_STATE_H
    +#define ADA_STATE_H
     
    -struct unexpect_t {
    -  unexpect_t() = default;
    -};
    -static constexpr unexpect_t unexpect{};
     
    -namespace detail {
    -template 
    -[[noreturn]] TL_EXPECTED_11_CONSTEXPR void throw_exception(E &&e) {
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -  throw std::forward(e);
    -#else
    -#ifdef _MSC_VER
    -  __assume(0);
    -#else
    -  __builtin_unreachable();
    -#endif
    -#endif
    -}
    +#include 
     
    -#ifndef TL_TRAITS_MUTEX
    -#define TL_TRAITS_MUTEX
    -// C++14-style aliases for brevity
    -template  using remove_const_t = typename std::remove_const::type;
    -template 
    -using remove_reference_t = typename std::remove_reference::type;
    -template  using decay_t = typename std::decay::type;
    -template 
    -using enable_if_t = typename std::enable_if::type;
    -template 
    -using conditional_t = typename std::conditional::type;
    +namespace ada {
     
    -// std::conjunction from C++17
    -template  struct conjunction : std::true_type {};
    -template  struct conjunction : B {};
    -template 
    -struct conjunction
    -    : std::conditional, B>::type {};
    +/**
    + * @see https://url.spec.whatwg.org/#url-parsing
    + */
    +enum class state {
    +  AUTHORITY,
    +  SCHEME_START,
    +  SCHEME,
    +  HOST,
    +  NO_SCHEME,
    +  FRAGMENT,
    +  RELATIVE_SCHEME,
    +  RELATIVE_SLASH,
    +  FILE,
    +  FILE_HOST,
    +  FILE_SLASH,
    +  PATH_OR_AUTHORITY,
    +  SPECIAL_AUTHORITY_IGNORE_SLASHES,
    +  SPECIAL_AUTHORITY_SLASHES,
    +  SPECIAL_RELATIVE_OR_AUTHORITY,
    +  QUERY,
    +  PATH,
    +  PATH_START,
    +  OPAQUE_PATH,
    +  PORT,
    +};
     
    -#if defined(_LIBCPP_VERSION) && __cplusplus == 201103L
    -#define TL_TRAITS_LIBCXX_MEM_FN_WORKAROUND
    -#endif
    +/**
    + * Stringify a URL state machine state.
    + */
    +ada_warn_unused std::string to_string(ada::state s);
     
    -// In C++11 mode, there's an issue in libc++'s std::mem_fn
    -// which results in a hard-error when using it in a noexcept expression
    -// in some cases. This is a check to workaround the common failing case.
    -#ifdef TL_TRAITS_LIBCXX_MEM_FN_WORKAROUND
    -template 
    -struct is_pointer_to_non_const_member_func : std::false_type {};
    -template 
    -struct is_pointer_to_non_const_member_func
    -    : std::true_type {};
    -template 
    -struct is_pointer_to_non_const_member_func
    -    : std::true_type {};
    -template 
    -struct is_pointer_to_non_const_member_func
    -    : std::true_type {};
    -template 
    -struct is_pointer_to_non_const_member_func
    -    : std::true_type {};
    -template 
    -struct is_pointer_to_non_const_member_func
    -    : std::true_type {};
    -template 
    -struct is_pointer_to_non_const_member_func
    -    : std::true_type {};
    +}  // namespace ada
     
    -template  struct is_const_or_const_ref : std::false_type {};
    -template  struct is_const_or_const_ref : std::true_type {};
    -template  struct is_const_or_const_ref : std::true_type {};
    -#endif
    +#endif  // ADA_STATE_H
    +/* end file include/ada/state.h */
     
    -// std::invoke from C++17
    -// https://stackoverflow.com/questions/38288042/c11-14-invoke-workaround
    -template <
    -    typename Fn, typename... Args,
    -#ifdef TL_TRAITS_LIBCXX_MEM_FN_WORKAROUND
    -    typename = enable_if_t::value &&
    -                             is_const_or_const_ref::value)>,
    -#endif
    -    typename = enable_if_t>::value>, int = 0>
    -constexpr auto invoke(Fn &&f, Args &&...args) noexcept(
    -    noexcept(std::mem_fn(f)(std::forward(args)...)))
    -    -> decltype(std::mem_fn(f)(std::forward(args)...)) {
    -  return std::mem_fn(f)(std::forward(args)...);
    -}
    +#include 
    +#include 
     
    -template >::value>>
    -constexpr auto invoke(Fn &&f, Args &&...args) noexcept(
    -    noexcept(std::forward(f)(std::forward(args)...)))
    -    -> decltype(std::forward(f)(std::forward(args)...)) {
    -  return std::forward(f)(std::forward(args)...);
    -}
    +/**
    + * @private
    + * @namespace ada::helpers
    + * @brief Includes the definitions for helper functions
    + */
    +namespace ada::helpers {
     
    -// std::invoke_result from C++17
    -template  struct invoke_result_impl;
    +/**
    + * @private
    + */
    +template 
    +void encode_json(std::string_view view, out_iter out);
     
    -template 
    -struct invoke_result_impl<
    -    F,
    -    decltype(detail::invoke(std::declval(), std::declval()...), void()),
    -    Us...> {
    -  using type =
    -      decltype(detail::invoke(std::declval(), std::declval()...));
    -};
    +/**
    + * @private
    + * This function is used to prune a fragment from a url, and returning the
    + * removed string if input has fragment.
    + *
    + * @details prune_fragment seeks the first '#' and returns everything after it
    + * as a string_view, and modifies (in place) the input so that it points at
    + * everything before the '#'. If no '#' is found, the input is left unchanged
    + * and std::nullopt is returned.
    + *
    + * @attention The function is non-allocating and it does not throw.
    + * @returns Note that the returned string_view might be empty!
    + */
    +ada_really_inline std::optional prune_fragment(
    +    std::string_view& input) noexcept;
     
    -template 
    -using invoke_result = invoke_result_impl;
    +/**
    + * @private
    + * Defined by the URL specification, shorten a URLs paths.
    + * @see https://url.spec.whatwg.org/#shorten-a-urls-path
    + * @returns Returns true if path is shortened.
    + */
    +ada_really_inline bool shorten_path(std::string& path,
    +                                    ada::scheme::type type) noexcept;
     
    -template 
    -using invoke_result_t = typename invoke_result::type;
    -
    -#if defined(_MSC_VER) && _MSC_VER <= 1900
    -// TODO make a version which works with MSVC 2015
    -template  struct is_swappable : std::true_type {};
    -
    -template  struct is_nothrow_swappable : std::true_type {};
    -#else
    -// https://stackoverflow.com/questions/26744589/what-is-a-proper-way-to-implement-is-swappable-to-test-for-the-swappable-concept
    -namespace swap_adl_tests {
    -// if swap ADL finds this then it would call std::swap otherwise (same
    -// signature)
    -struct tag {};
    +/**
    + * @private
    + * Defined by the URL specification, shorten a URLs paths.
    + * @see https://url.spec.whatwg.org/#shorten-a-urls-path
    + * @returns Returns true if path is shortened.
    + */
    +ada_really_inline bool shorten_path(std::string_view& path,
    +                                    ada::scheme::type type) noexcept;
     
    -template  tag swap(T &, T &);
    -template  tag swap(T (&a)[N], T (&b)[N]);
    +/**
    + * @private
    + *
    + * Parse the path from the provided input and append to the existing
    + * (possibly empty) path. The input cannot contain tabs and spaces: it
    + * is the user's responsibility to check.
    + *
    + * The input is expected to be UTF-8.
    + *
    + * @see https://url.spec.whatwg.org/
    + */
    +ada_really_inline void parse_prepared_path(const std::string_view input,
    +                                           ada::scheme::type type,
    +                                           std::string& path);
     
    -// helper functions to test if an unqualified swap is possible, and if it
    -// becomes std::swap
    -template  std::false_type can_swap(...) noexcept(false);
    -template (), std::declval()))>
    -std::true_type can_swap(int) noexcept(noexcept(swap(std::declval(),
    -                                                    std::declval())));
    +/**
    + * @private
    + * Remove and mutate all ASCII tab or newline characters from an input.
    + */
    +ada_really_inline void remove_ascii_tab_or_newline(std::string& input) noexcept;
     
    -template  std::false_type uses_std(...);
    -template 
    -std::is_same(), std::declval())), tag>
    -uses_std(int);
    +/**
    + * @private
    + * Return the substring from input going from index pos to the end. If pos >
    + * input.size(), it returns an empty string_view. This function cannot throw.
    + */
    +ada_really_inline std::string_view substring(std::string_view input,
    +                                             size_t pos) noexcept;
     
    -template 
    -struct is_std_swap_noexcept
    -    : std::integral_constant::value &&
    -                                 std::is_nothrow_move_assignable::value> {};
    +/**
    + * @private
    + * Returns true if the string_view points within the string.
    + */
    +bool overlaps(std::string_view input1, const std::string& input2) noexcept;
     
    -template 
    -struct is_std_swap_noexcept : is_std_swap_noexcept {};
    +/**
    + * @private
    + * Return the substring from input going from index pos1 to the pos2 (non
    + * included). The length of the substring is pos2 - pos1.
    + */
    +ada_really_inline std::string_view substring(const std::string& input,
    +                                             size_t pos1,
    +                                             size_t pos2) noexcept {
    +#if ADA_DEVELOPMENT_CHECKS
    +  if (pos2 < pos1) {
    +    std::cerr << "Negative-length substring: [" << pos1 << " to " << pos2 << ")"
    +              << std::endl;
    +    abort();
    +  }
    +#endif
    +  return std::string_view(input.data() + pos1, pos2 - pos1);
    +}
     
    -template 
    -struct is_adl_swap_noexcept
    -    : std::integral_constant(0))> {};
    -} // namespace swap_adl_tests
    +/**
    + * @private
    + * Modify the string_view so that it has the new size pos, assuming that pos <=
    + * input.size(). This function cannot throw.
    + */
    +ada_really_inline void resize(std::string_view& input, size_t pos) noexcept;
     
    -template 
    -struct is_swappable
    -    : std::integral_constant<
    -          bool,
    -          decltype(detail::swap_adl_tests::can_swap(0))::value &&
    -              (!decltype(detail::swap_adl_tests::uses_std(0))::value ||
    -               (std::is_move_assignable::value &&
    -                std::is_move_constructible::value))> {};
    +/**
    + * @private
    + * Returns a host's delimiter location depending on the state of the instance,
    + * and whether a colon was found outside brackets. Used by the host parser.
    + */
    +ada_really_inline std::pair get_host_delimiter_location(
    +    const bool is_special, std::string_view& view) noexcept;
     
    -template 
    -struct is_swappable
    -    : std::integral_constant<
    -          bool,
    -          decltype(detail::swap_adl_tests::can_swap(0))::value &&
    -              (!decltype(detail::swap_adl_tests::uses_std(
    -                   0))::value ||
    -               is_swappable::value)> {};
    +/**
    + * @private
    + * Removes leading and trailing C0 control and whitespace characters from
    + * string.
    + */
    +ada_really_inline void trim_c0_whitespace(std::string_view& input) noexcept;
     
    -template 
    -struct is_nothrow_swappable
    -    : std::integral_constant<
    -          bool,
    -          is_swappable::value &&
    -              ((decltype(detail::swap_adl_tests::uses_std(0))::value &&
    -                detail::swap_adl_tests::is_std_swap_noexcept::value) ||
    -               (!decltype(detail::swap_adl_tests::uses_std(0))::value &&
    -                detail::swap_adl_tests::is_adl_swap_noexcept::value))> {};
    -#endif
    -#endif
    +/**
    + * @private
    + * @see
    + * https://url.spec.whatwg.org/#potentially-strip-trailing-spaces-from-an-opaque-path
    + */
    +template 
    +ada_really_inline void strip_trailing_spaces_from_opaque_path(
    +    url_type& url) noexcept;
     
    -// Trait for checking if a type is a tl::expected
    -template  struct is_expected_impl : std::false_type {};
    -template 
    -struct is_expected_impl> : std::true_type {};
    -template  using is_expected = is_expected_impl>;
    +/**
    + * @private
    + * Reverse the order of the bytes.
    + */
    +ada_really_inline uint64_t swap_bytes(uint64_t val) noexcept;
     
    -template 
    -using expected_enable_forward_value = detail::enable_if_t<
    -    std::is_constructible::value &&
    -    !std::is_same, in_place_t>::value &&
    -    !std::is_same, detail::decay_t>::value &&
    -    !std::is_same, detail::decay_t>::value>;
    +/**
    + * @private
    + * Reverse the order of the bytes but only if the system is big endian
    + */
    +ada_really_inline uint64_t swap_bytes_if_big_endian(uint64_t val) noexcept;
     
    -template 
    -using expected_enable_from_other = detail::enable_if_t<
    -    std::is_constructible::value &&
    -    std::is_constructible::value &&
    -    !std::is_constructible &>::value &&
    -    !std::is_constructible &&>::value &&
    -    !std::is_constructible &>::value &&
    -    !std::is_constructible &&>::value &&
    -    !std::is_convertible &, T>::value &&
    -    !std::is_convertible &&, T>::value &&
    -    !std::is_convertible &, T>::value &&
    -    !std::is_convertible &&, T>::value>;
    +/**
    + * @private
    + * Finds the delimiter of a view in authority state.
    + */
    +ada_really_inline size_t
    +find_authority_delimiter_special(std::string_view view) noexcept;
     
    -template 
    -using is_void_or = conditional_t::value, std::true_type, U>;
    +/**
    + * @private
    + * Finds the delimiter of a view in authority state.
    + */
    +ada_really_inline size_t
    +find_authority_delimiter(std::string_view view) noexcept;
     
    -template 
    -using is_copy_constructible_or_void =
    -    is_void_or>;
    +/**
    + * @private
    + */
    +template 
    +inline void inner_concat(std::string& buffer, T t) {
    +  buffer.append(t);
    +}
     
    -template 
    -using is_move_constructible_or_void =
    -    is_void_or>;
    +/**
    + * @private
    + */
    +template 
    +inline void inner_concat(std::string& buffer, T t, Args... args) {
    +  buffer.append(t);
    +  return inner_concat(buffer, args...);
    +}
     
    -template 
    -using is_copy_assignable_or_void = is_void_or>;
    +/**
    + * Concatenate the arguments and return a string.
    + * @returns a string
    + */
    +template 
    +std::string concat(Args... args) {
    +  std::string answer;
    +  inner_concat(answer, args...);
    +  return answer;
    +}
     
    -template 
    -using is_move_assignable_or_void = is_void_or>;
    +/**
    + * @return Number of leading zeroes.
    + */
    +inline int leading_zeroes(uint32_t input_num) noexcept {
    +#if ADA_REGULAR_VISUAL_STUDIO
    +  unsigned long leading_zero(0);
    +  unsigned long in(input_num);
    +  return _BitScanReverse(&leading_zero, in) ? int(31 - leading_zero) : 32;
    +#else
    +  return __builtin_clz(input_num);
    +#endif  // ADA_REGULAR_VISUAL_STUDIO
    +}
     
    -} // namespace detail
    +/**
    + * Counts the number of decimal digits necessary to represent x.
    + * faster than std::to_string(x).size().
    + * @return digit count
    + */
    +inline int fast_digit_count(uint32_t x) noexcept {
    +  auto int_log2 = [](uint32_t z) -> int {
    +    return 31 - ada::helpers::leading_zeroes(z | 1);
    +  };
    +  // Compiles to very few instructions. Note that the
    +  // table is static and thus effectively a constant.
    +  // We leave it inside the function because it is meaningless
    +  // outside of it (this comes at no performance cost).
    +  const static uint64_t table[] = {
    +      4294967296,  8589934582,  8589934582,  8589934582,  12884901788,
    +      12884901788, 12884901788, 17179868184, 17179868184, 17179868184,
    +      21474826480, 21474826480, 21474826480, 21474826480, 25769703776,
    +      25769703776, 25769703776, 30063771072, 30063771072, 30063771072,
    +      34349738368, 34349738368, 34349738368, 34349738368, 38554705664,
    +      38554705664, 38554705664, 41949672960, 41949672960, 41949672960,
    +      42949672960, 42949672960};
    +  return int((x + table[int_log2(x)]) >> 32);
    +}
    +}  // namespace ada::helpers
     
    -namespace detail {
    -struct no_init_t {};
    -static constexpr no_init_t no_init{};
    +#endif  // ADA_HELPERS_H
    +/* end file include/ada/helpers.h */
    +/* begin file include/ada/parser.h */
    +/**
    + * @file parser.h
    + * @brief Definitions for the parser.
    + */
    +#ifndef ADA_PARSER_H
    +#define ADA_PARSER_H
     
    -// Implements the storage of the values, and ensures that the destructor is
    -// trivial if it can be.
    +/* begin file include/ada/expected.h */
    +/**
    + * @file expected.h
    + * @brief Definitions for std::expected
    + * @private Excluded from docs through the doxygen file.
    + */
    +///
    +// expected - An implementation of std::expected with extensions
    +// Written in 2017 by Sy Brand (tartanllama@gmail.com, @TartanLlama)
     //
    -// This specialization is for where neither `T` or `E` is trivially
    -// destructible, so the destructors must be called on destruction of the
    -// `expected`
    -template ::value,
    -          bool = std::is_trivially_destructible::value>
    -struct expected_storage_base {
    -  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    -  constexpr expected_storage_base(no_init_t) : m_no_init(), m_has_val(false) {}
    +// Documentation available at http://tl.tartanllama.xyz/
    +//
    +// To the extent possible under law, the author(s) have dedicated all
    +// copyright and related and neighboring rights to this software to the
    +// public domain worldwide. This software is distributed without any warranty.
    +//
    +// You should have received a copy of the CC0 Public Domain Dedication
    +// along with this software. If not, see
    +// .
    +///
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr expected_storage_base(in_place_t, Args &&...args)
    -      : m_val(std::forward(args)...), m_has_val(true) {}
    +#ifndef TL_EXPECTED_HPP
    +#define TL_EXPECTED_HPP
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    -                                  Args &&...args)
    -      : m_val(il, std::forward(args)...), m_has_val(true) {}
    -  template ::value> * =
    -                nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    -      : m_unexpect(std::forward(args)...), m_has_val(false) {}
    +#define TL_EXPECTED_VERSION_MAJOR 1
    +#define TL_EXPECTED_VERSION_MINOR 0
    +#define TL_EXPECTED_VERSION_PATCH 1
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t,
    -                                           std::initializer_list il,
    -                                           Args &&...args)
    -      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +#include 
    +#include 
    +#include 
    +#include 
     
    -  ~expected_storage_base() {
    -    if (m_has_val) {
    -      m_val.~T();
    -    } else {
    -      m_unexpect.~unexpected();
    -    }
    -  }
    -  union {
    -    T m_val;
    -    unexpected m_unexpect;
    -    char m_no_init;
    -  };
    -  bool m_has_val;
    -};
    +#if defined(__EXCEPTIONS) || defined(_CPPUNWIND)
    +#define TL_EXPECTED_EXCEPTIONS_ENABLED
    +#endif
     
    -// This specialization is for when both `T` and `E` are trivially-destructible,
    -// so the destructor of the `expected` can be trivial.
    -template  struct expected_storage_base {
    -  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    -  constexpr expected_storage_base(no_init_t) : m_no_init(), m_has_val(false) {}
    +#if (defined(_MSC_VER) && _MSC_VER == 1900)
    +#define TL_EXPECTED_MSVC2015
    +#define TL_EXPECTED_MSVC2015_CONSTEXPR
    +#else
    +#define TL_EXPECTED_MSVC2015_CONSTEXPR constexpr
    +#endif
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr expected_storage_base(in_place_t, Args &&...args)
    -      : m_val(std::forward(args)...), m_has_val(true) {}
    -
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    -                                  Args &&...args)
    -      : m_val(il, std::forward(args)...), m_has_val(true) {}
    -  template ::value> * =
    -                nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    -      : m_unexpect(std::forward(args)...), m_has_val(false) {}
    +#if (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ <= 9 && \
    +     !defined(__clang__))
    +#define TL_EXPECTED_GCC49
    +#endif
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t,
    -                                           std::initializer_list il,
    -                                           Args &&...args)
    -      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +#if (defined(__GNUC__) && __GNUC__ == 5 && __GNUC_MINOR__ <= 4 && \
    +     !defined(__clang__))
    +#define TL_EXPECTED_GCC54
    +#endif
     
    -  ~expected_storage_base() = default;
    -  union {
    -    T m_val;
    -    unexpected m_unexpect;
    -    char m_no_init;
    -  };
    -  bool m_has_val;
    -};
    +#if (defined(__GNUC__) && __GNUC__ == 5 && __GNUC_MINOR__ <= 5 && \
    +     !defined(__clang__))
    +#define TL_EXPECTED_GCC55
    +#endif
     
    -// T is trivial, E is not.
    -template  struct expected_storage_base {
    -  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    -  TL_EXPECTED_MSVC2015_CONSTEXPR expected_storage_base(no_init_t)
    -      : m_no_init(), m_has_val(false) {}
    +#if (defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ <= 9 && \
    +     !defined(__clang__))
    +// GCC < 5 doesn't support overloading on const&& for member functions
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr expected_storage_base(in_place_t, Args &&...args)
    -      : m_val(std::forward(args)...), m_has_val(true) {}
    +#define TL_EXPECTED_NO_CONSTRR
    +// GCC < 5 doesn't support some standard C++11 type traits
    +#define TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T) \
    +  std::has_trivial_copy_constructor
    +#define TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(T) \
    +  std::has_trivial_copy_assign
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    -                                  Args &&...args)
    -      : m_val(il, std::forward(args)...), m_has_val(true) {}
    -  template ::value> * =
    -                nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    -      : m_unexpect(std::forward(args)...), m_has_val(false) {}
    +// This one will be different for GCC 5.7 if it's ever supported
    +#define TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(T) \
    +  std::is_trivially_destructible
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t,
    -                                           std::initializer_list il,
    -                                           Args &&...args)
    -      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +// GCC 5 < v < 8 has a bug in is_trivially_copy_constructible which breaks
    +// std::vector for non-copyable types
    +#elif (defined(__GNUC__) && __GNUC__ < 8 && !defined(__clang__))
    +#ifndef TL_GCC_LESS_8_TRIVIALLY_COPY_CONSTRUCTIBLE_MUTEX
    +#define TL_GCC_LESS_8_TRIVIALLY_COPY_CONSTRUCTIBLE_MUTEX
    +namespace tl {
    +namespace detail {
    +template 
    +struct is_trivially_copy_constructible
    +    : std::is_trivially_copy_constructible {};
    +#ifdef _GLIBCXX_VECTOR
    +template 
    +struct is_trivially_copy_constructible> : std::false_type {};
    +#endif
    +}  // namespace detail
    +}  // namespace tl
    +#endif
     
    -  ~expected_storage_base() {
    -    if (!m_has_val) {
    -      m_unexpect.~unexpected();
    -    }
    -  }
    +#define TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T) \
    +  tl::detail::is_trivially_copy_constructible
    +#define TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(T) \
    +  std::is_trivially_copy_assignable
    +#define TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(T) \
    +  std::is_trivially_destructible
    +#else
    +#define TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(T) \
    +  std::is_trivially_copy_constructible
    +#define TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(T) \
    +  std::is_trivially_copy_assignable
    +#define TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(T) \
    +  std::is_trivially_destructible
    +#endif
     
    -  union {
    -    T m_val;
    -    unexpected m_unexpect;
    -    char m_no_init;
    -  };
    -  bool m_has_val;
    -};
    +#if __cplusplus > 201103L
    +#define TL_EXPECTED_CXX14
    +#endif
     
    -// E is trivial, T is not.
    -template  struct expected_storage_base {
    -  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    -  constexpr expected_storage_base(no_init_t) : m_no_init(), m_has_val(false) {}
    +#ifdef TL_EXPECTED_GCC49
    +#define TL_EXPECTED_GCC49_CONSTEXPR
    +#else
    +#define TL_EXPECTED_GCC49_CONSTEXPR constexpr
    +#endif
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr expected_storage_base(in_place_t, Args &&...args)
    -      : m_val(std::forward(args)...), m_has_val(true) {}
    +#if (__cplusplus == 201103L || defined(TL_EXPECTED_MSVC2015) || \
    +     defined(TL_EXPECTED_GCC49))
    +#define TL_EXPECTED_11_CONSTEXPR
    +#else
    +#define TL_EXPECTED_11_CONSTEXPR constexpr
    +#endif
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    -                                  Args &&...args)
    -      : m_val(il, std::forward(args)...), m_has_val(true) {}
    -  template ::value> * =
    -                nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    -      : m_unexpect(std::forward(args)...), m_has_val(false) {}
    +namespace tl {
    +template 
    +class expected;
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t,
    -                                           std::initializer_list il,
    -                                           Args &&...args)
    -      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +#ifndef TL_MONOSTATE_INPLACE_MUTEX
    +#define TL_MONOSTATE_INPLACE_MUTEX
    +class monostate {};
     
    -  ~expected_storage_base() {
    -    if (m_has_val) {
    -      m_val.~T();
    -    }
    -  }
    -  union {
    -    T m_val;
    -    unexpected m_unexpect;
    -    char m_no_init;
    -  };
    -  bool m_has_val;
    +struct in_place_t {
    +  explicit in_place_t() = default;
     };
    +static constexpr in_place_t in_place{};
    +#endif
     
    -// `T` is `void`, `E` is trivially-destructible
    -template  struct expected_storage_base {
    -  #if __GNUC__ <= 5
    -  //no constexpr for GCC 4/5 bug
    -  #else
    -  TL_EXPECTED_MSVC2015_CONSTEXPR
    -  #endif 
    -  expected_storage_base() : m_has_val(true) {}
    -     
    -  constexpr expected_storage_base(no_init_t) : m_val(), m_has_val(false) {}
    +template 
    +class unexpected {
    + public:
    +  static_assert(!std::is_same::value, "E must not be void");
     
    -  constexpr expected_storage_base(in_place_t) : m_has_val(true) {}
    +  unexpected() = delete;
    +  constexpr explicit unexpected(const E &e) : m_val(e) {}
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    -      : m_unexpect(std::forward(args)...), m_has_val(false) {}
    +  constexpr explicit unexpected(E &&e) : m_val(std::move(e)) {}
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t,
    -                                           std::initializer_list il,
    -                                           Args &&...args)
    -      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +  template ::value>::type * = nullptr>
    +  constexpr explicit unexpected(Args &&...args)
    +      : m_val(std::forward(args)...) {}
    +  template <
    +      class U, class... Args,
    +      typename std::enable_if &, Args &&...>::value>::type * = nullptr>
    +  constexpr explicit unexpected(std::initializer_list l, Args &&...args)
    +      : m_val(l, std::forward(args)...) {}
     
    -  ~expected_storage_base() = default;
    -  struct dummy {};
    -  union {
    -    unexpected m_unexpect;
    -    dummy m_val;
    -  };
    -  bool m_has_val;
    +  constexpr const E &value() const & { return m_val; }
    +  TL_EXPECTED_11_CONSTEXPR E &value() & { return m_val; }
    +  TL_EXPECTED_11_CONSTEXPR E &&value() && { return std::move(m_val); }
    +  constexpr const E &&value() const && { return std::move(m_val); }
    +
    + private:
    +  E m_val;
     };
     
    -// `T` is `void`, `E` is not trivially-destructible
    -template  struct expected_storage_base {
    -  constexpr expected_storage_base() : m_dummy(), m_has_val(true) {}
    -  constexpr expected_storage_base(no_init_t) : m_dummy(), m_has_val(false) {}
    +#ifdef __cpp_deduction_guides
    +template 
    +unexpected(E) -> unexpected;
    +#endif
     
    -  constexpr expected_storage_base(in_place_t) : m_dummy(), m_has_val(true) {}
    +template 
    +constexpr bool operator==(const unexpected &lhs, const unexpected &rhs) {
    +  return lhs.value() == rhs.value();
    +}
    +template 
    +constexpr bool operator!=(const unexpected &lhs, const unexpected &rhs) {
    +  return lhs.value() != rhs.value();
    +}
    +template 
    +constexpr bool operator<(const unexpected &lhs, const unexpected &rhs) {
    +  return lhs.value() < rhs.value();
    +}
    +template 
    +constexpr bool operator<=(const unexpected &lhs, const unexpected &rhs) {
    +  return lhs.value() <= rhs.value();
    +}
    +template 
    +constexpr bool operator>(const unexpected &lhs, const unexpected &rhs) {
    +  return lhs.value() > rhs.value();
    +}
    +template 
    +constexpr bool operator>=(const unexpected &lhs, const unexpected &rhs) {
    +  return lhs.value() >= rhs.value();
    +}
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    -      : m_unexpect(std::forward(args)...), m_has_val(false) {}
    +template 
    +unexpected::type> make_unexpected(E &&e) {
    +  return unexpected::type>(std::forward(e));
    +}
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr explicit expected_storage_base(unexpect_t,
    -                                           std::initializer_list il,
    -                                           Args &&...args)
    -      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +struct unexpect_t {
    +  unexpect_t() = default;
    +};
    +static constexpr unexpect_t unexpect{};
     
    -  ~expected_storage_base() {
    -    if (!m_has_val) {
    -      m_unexpect.~unexpected();
    -    }
    -  }
    +namespace detail {
    +template 
    +[[noreturn]] TL_EXPECTED_11_CONSTEXPR void throw_exception(E &&e) {
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +  throw std::forward(e);
    +#else
    +#ifdef _MSC_VER
    +  __assume(0);
    +#else
    +  __builtin_unreachable();
    +#endif
    +#endif
    +}
     
    -  union {
    -    unexpected m_unexpect;
    -    char m_dummy;
    -  };
    -  bool m_has_val;
    -};
    +#ifndef TL_TRAITS_MUTEX
    +#define TL_TRAITS_MUTEX
    +// C++14-style aliases for brevity
    +template 
    +using remove_const_t = typename std::remove_const::type;
    +template 
    +using remove_reference_t = typename std::remove_reference::type;
    +template 
    +using decay_t = typename std::decay::type;
    +template 
    +using enable_if_t = typename std::enable_if::type;
    +template 
    +using conditional_t = typename std::conditional::type;
     
    -// This base class provides some handy member functions which can be used in
    -// further derived classes
    -template 
    -struct expected_operations_base : expected_storage_base {
    -  using expected_storage_base::expected_storage_base;
    +// std::conjunction from C++17
    +template 
    +struct conjunction : std::true_type {};
    +template 
    +struct conjunction : B {};
    +template 
    +struct conjunction
    +    : std::conditional, B>::type {};
     
    -  template  void construct(Args &&...args) noexcept {
    -    new (std::addressof(this->m_val)) T(std::forward(args)...);
    -    this->m_has_val = true;
    -  }
    +#if defined(_LIBCPP_VERSION) && __cplusplus == 201103L
    +#define TL_TRAITS_LIBCXX_MEM_FN_WORKAROUND
    +#endif
     
    -  template  void construct_with(Rhs &&rhs) noexcept {
    -    new (std::addressof(this->m_val)) T(std::forward(rhs).get());
    -    this->m_has_val = true;
    -  }
    +// In C++11 mode, there's an issue in libc++'s std::mem_fn
    +// which results in a hard-error when using it in a noexcept expression
    +// in some cases. This is a check to workaround the common failing case.
    +#ifdef TL_TRAITS_LIBCXX_MEM_FN_WORKAROUND
    +template 
    +struct is_pointer_to_non_const_member_func : std::false_type {};
    +template 
    +struct is_pointer_to_non_const_member_func
    +    : std::true_type {};
    +template 
    +struct is_pointer_to_non_const_member_func
    +    : std::true_type {};
    +template 
    +struct is_pointer_to_non_const_member_func
    +    : std::true_type {};
    +template 
    +struct is_pointer_to_non_const_member_func
    +    : std::true_type {};
    +template 
    +struct is_pointer_to_non_const_member_func
    +    : std::true_type {};
    +template 
    +struct is_pointer_to_non_const_member_func
    +    : std::true_type {};
     
    -  template  void construct_error(Args &&...args) noexcept {
    -    new (std::addressof(this->m_unexpect))
    -        unexpected(std::forward(args)...);
    -    this->m_has_val = false;
    -  }
    +template 
    +struct is_const_or_const_ref : std::false_type {};
    +template 
    +struct is_const_or_const_ref : std::true_type {};
    +template 
    +struct is_const_or_const_ref : std::true_type {};
    +#endif
     
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +// std::invoke from C++17
    +// https://stackoverflow.com/questions/38288042/c11-14-invoke-workaround
    +template <
    +    typename Fn, typename... Args,
    +#ifdef TL_TRAITS_LIBCXX_MEM_FN_WORKAROUND
    +    typename = enable_if_t::value &&
    +                             is_const_or_const_ref::value)>,
    +#endif
    +    typename = enable_if_t>::value>, int = 0>
    +constexpr auto invoke(Fn &&f, Args &&...args) noexcept(
    +    noexcept(std::mem_fn(f)(std::forward(args)...)))
    +    -> decltype(std::mem_fn(f)(std::forward(args)...)) {
    +  return std::mem_fn(f)(std::forward(args)...);
    +}
     
    -  // These assign overloads ensure that the most efficient assignment
    -  // implementation is used while maintaining the strong exception guarantee.
    -  // The problematic case is where rhs has a value, but *this does not.
    -  //
    -  // This overload handles the case where we can just copy-construct `T`
    -  // directly into place without throwing.
    -  template ::value>
    -                * = nullptr>
    -  void assign(const expected_operations_base &rhs) noexcept {
    -    if (!this->m_has_val && rhs.m_has_val) {
    -      geterr().~unexpected();
    -      construct(rhs.get());
    -    } else {
    -      assign_common(rhs);
    -    }
    -  }
    +template >::value>>
    +constexpr auto invoke(Fn &&f, Args &&...args) noexcept(
    +    noexcept(std::forward(f)(std::forward(args)...)))
    +    -> decltype(std::forward(f)(std::forward(args)...)) {
    +  return std::forward(f)(std::forward(args)...);
    +}
     
    -  // This overload handles the case where we can attempt to create a copy of
    -  // `T`, then no-throw move it into place if the copy was successful.
    -  template ::value &&
    -                                std::is_nothrow_move_constructible::value>
    -                * = nullptr>
    -  void assign(const expected_operations_base &rhs) noexcept {
    -    if (!this->m_has_val && rhs.m_has_val) {
    -      T tmp = rhs.get();
    -      geterr().~unexpected();
    -      construct(std::move(tmp));
    -    } else {
    -      assign_common(rhs);
    -    }
    -  }
    +// std::invoke_result from C++17
    +template 
    +struct invoke_result_impl;
     
    -  // This overload is the worst-case, where we have to move-construct the
    -  // unexpected value into temporary storage, then try to copy the T into place.
    -  // If the construction succeeds, then everything is fine, but if it throws,
    -  // then we move the old unexpected value back into place before rethrowing the
    -  // exception.
    -  template ::value &&
    -                                !std::is_nothrow_move_constructible::value>
    -                * = nullptr>
    -  void assign(const expected_operations_base &rhs) {
    -    if (!this->m_has_val && rhs.m_has_val) {
    -      auto tmp = std::move(geterr());
    -      geterr().~unexpected();
    +template 
    +struct invoke_result_impl<
    +    F,
    +    decltype(detail::invoke(std::declval(), std::declval()...), void()),
    +    Us...> {
    +  using type =
    +      decltype(detail::invoke(std::declval(), std::declval()...));
    +};
     
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -      try {
    -        construct(rhs.get());
    -      } catch (...) {
    -        geterr() = std::move(tmp);
    -        throw;
    -      }
    -#else
    -      construct(rhs.get());
    -#endif
    -    } else {
    -      assign_common(rhs);
    -    }
    -  }
    +template 
    +using invoke_result = invoke_result_impl;
     
    -  // These overloads do the same as above, but for rvalues
    -  template ::value>
    -                * = nullptr>
    -  void assign(expected_operations_base &&rhs) noexcept {
    -    if (!this->m_has_val && rhs.m_has_val) {
    -      geterr().~unexpected();
    -      construct(std::move(rhs).get());
    -    } else {
    -      assign_common(std::move(rhs));
    -    }
    -  }
    +template 
    +using invoke_result_t = typename invoke_result::type;
     
    -  template ::value>
    -                * = nullptr>
    -  void assign(expected_operations_base &&rhs) {
    -    if (!this->m_has_val && rhs.m_has_val) {
    -      auto tmp = std::move(geterr());
    -      geterr().~unexpected();
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -      try {
    -        construct(std::move(rhs).get());
    -      } catch (...) {
    -        geterr() = std::move(tmp);
    -        throw;
    -      }
    -#else
    -      construct(std::move(rhs).get());
    -#endif
    -    } else {
    -      assign_common(std::move(rhs));
    -    }
    -  }
    +#if defined(_MSC_VER) && _MSC_VER <= 1900
    +// TODO make a version which works with MSVC 2015
    +template 
    +struct is_swappable : std::true_type {};
     
    +template 
    +struct is_nothrow_swappable : std::true_type {};
     #else
    +// https://stackoverflow.com/questions/26744589/what-is-a-proper-way-to-implement-is-swappable-to-test-for-the-swappable-concept
    +namespace swap_adl_tests {
    +// if swap ADL finds this then it would call std::swap otherwise (same
    +// signature)
    +struct tag {};
     
    -  // If exceptions are disabled then we can just copy-construct
    -  void assign(const expected_operations_base &rhs) noexcept {
    -    if (!this->m_has_val && rhs.m_has_val) {
    -      geterr().~unexpected();
    -      construct(rhs.get());
    -    } else {
    -      assign_common(rhs);
    -    }
    -  }
    +template 
    +tag swap(T &, T &);
    +template 
    +tag swap(T (&a)[N], T (&b)[N]);
     
    -  void assign(expected_operations_base &&rhs) noexcept {
    -    if (!this->m_has_val && rhs.m_has_val) {
    -      geterr().~unexpected();
    -      construct(std::move(rhs).get());
    -    } else {
    -      assign_common(rhs);
    -    }
    -  }
    +// helper functions to test if an unqualified swap is possible, and if it
    +// becomes std::swap
    +template 
    +std::false_type can_swap(...) noexcept(false);
    +template (), std::declval()))>
    +std::true_type can_swap(int) noexcept(noexcept(swap(std::declval(),
    +                                                    std::declval())));
     
    -#endif
    +template 
    +std::false_type uses_std(...);
    +template 
    +std::is_same(), std::declval())), tag>
    +uses_std(int);
     
    -  // The common part of move/copy assigning
    -  template  void assign_common(Rhs &&rhs) {
    -    if (this->m_has_val) {
    -      if (rhs.m_has_val) {
    -        get() = std::forward(rhs).get();
    -      } else {
    -        destroy_val();
    -        construct_error(std::forward(rhs).geterr());
    -      }
    -    } else {
    -      if (!rhs.m_has_val) {
    -        geterr() = std::forward(rhs).geterr();
    -      }
    -    }
    -  }
    +template 
    +struct is_std_swap_noexcept
    +    : std::integral_constant::value &&
    +                                 std::is_nothrow_move_assignable::value> {};
     
    -  bool has_value() const { return this->m_has_val; }
    +template 
    +struct is_std_swap_noexcept : is_std_swap_noexcept {};
     
    -  TL_EXPECTED_11_CONSTEXPR T &get() & { return this->m_val; }
    -  constexpr const T &get() const & { return this->m_val; }
    -  TL_EXPECTED_11_CONSTEXPR T &&get() && { return std::move(this->m_val); }
    -#ifndef TL_EXPECTED_NO_CONSTRR
    -  constexpr const T &&get() const && { return std::move(this->m_val); }
    -#endif
    +template 
    +struct is_adl_swap_noexcept
    +    : std::integral_constant(0))> {};
    +}  // namespace swap_adl_tests
     
    -  TL_EXPECTED_11_CONSTEXPR unexpected &geterr() & {
    -    return this->m_unexpect;
    -  }
    -  constexpr const unexpected &geterr() const & { return this->m_unexpect; }
    -  TL_EXPECTED_11_CONSTEXPR unexpected &&geterr() && {
    -    return std::move(this->m_unexpect);
    -  }
    -#ifndef TL_EXPECTED_NO_CONSTRR
    -  constexpr const unexpected &&geterr() const && {
    -    return std::move(this->m_unexpect);
    -  }
    -#endif
    +template 
    +struct is_swappable
    +    : std::integral_constant<
    +          bool,
    +          decltype(detail::swap_adl_tests::can_swap(0))::value &&
    +              (!decltype(detail::swap_adl_tests::uses_std(0))::value ||
    +               (std::is_move_assignable::value &&
    +                std::is_move_constructible::value))> {};
     
    -  TL_EXPECTED_11_CONSTEXPR void destroy_val() { get().~T(); }
    -};
    +template 
    +struct is_swappable
    +    : std::integral_constant<
    +          bool,
    +          decltype(detail::swap_adl_tests::can_swap(0))::value &&
    +              (!decltype(detail::swap_adl_tests::uses_std(
    +                   0))::value ||
    +               is_swappable::value)> {};
     
    -// This base class provides some handy member functions which can be used in
    -// further derived classes
    -template 
    -struct expected_operations_base : expected_storage_base {
    -  using expected_storage_base::expected_storage_base;
    +template 
    +struct is_nothrow_swappable
    +    : std::integral_constant<
    +          bool,
    +          is_swappable::value &&
    +              ((decltype(detail::swap_adl_tests::uses_std(0))::value &&
    +                detail::swap_adl_tests::is_std_swap_noexcept::value) ||
    +               (!decltype(detail::swap_adl_tests::uses_std(0))::value &&
    +                detail::swap_adl_tests::is_adl_swap_noexcept::value))> {};
    +#endif
    +#endif
     
    -  template  void construct() noexcept { this->m_has_val = true; }
    +// Trait for checking if a type is a tl::expected
    +template 
    +struct is_expected_impl : std::false_type {};
    +template 
    +struct is_expected_impl> : std::true_type {};
    +template 
    +using is_expected = is_expected_impl>;
     
    -  // This function doesn't use its argument, but needs it so that code in
    -  // levels above this can work independently of whether T is void
    -  template  void construct_with(Rhs &&) noexcept {
    -    this->m_has_val = true;
    -  }
    +template 
    +using expected_enable_forward_value = detail::enable_if_t<
    +    std::is_constructible::value &&
    +    !std::is_same, in_place_t>::value &&
    +    !std::is_same, detail::decay_t>::value &&
    +    !std::is_same, detail::decay_t>::value>;
     
    -  template  void construct_error(Args &&...args) noexcept {
    -    new (std::addressof(this->m_unexpect))
    -        unexpected(std::forward(args)...);
    -    this->m_has_val = false;
    -  }
    +template 
    +using expected_enable_from_other = detail::enable_if_t<
    +    std::is_constructible::value &&
    +    std::is_constructible::value &&
    +    !std::is_constructible &>::value &&
    +    !std::is_constructible &&>::value &&
    +    !std::is_constructible &>::value &&
    +    !std::is_constructible &&>::value &&
    +    !std::is_convertible &, T>::value &&
    +    !std::is_convertible &&, T>::value &&
    +    !std::is_convertible &, T>::value &&
    +    !std::is_convertible &&, T>::value>;
     
    -  template  void assign(Rhs &&rhs) noexcept {
    -    if (!this->m_has_val) {
    -      if (rhs.m_has_val) {
    -        geterr().~unexpected();
    -        construct();
    -      } else {
    -        geterr() = std::forward(rhs).geterr();
    -      }
    -    } else {
    -      if (!rhs.m_has_val) {
    -        construct_error(std::forward(rhs).geterr());
    -      }
    -    }
    -  }
    +template 
    +using is_void_or = conditional_t::value, std::true_type, U>;
     
    -  bool has_value() const { return this->m_has_val; }
    +template 
    +using is_copy_constructible_or_void =
    +    is_void_or>;
     
    -  TL_EXPECTED_11_CONSTEXPR unexpected &geterr() & {
    -    return this->m_unexpect;
    -  }
    -  constexpr const unexpected &geterr() const & { return this->m_unexpect; }
    -  TL_EXPECTED_11_CONSTEXPR unexpected &&geterr() && {
    -    return std::move(this->m_unexpect);
    -  }
    -#ifndef TL_EXPECTED_NO_CONSTRR
    -  constexpr const unexpected &&geterr() const && {
    -    return std::move(this->m_unexpect);
    -  }
    -#endif
    +template 
    +using is_move_constructible_or_void =
    +    is_void_or>;
     
    -  TL_EXPECTED_11_CONSTEXPR void destroy_val() {
    -    // no-op
    -  }
    -};
    +template 
    +using is_copy_assignable_or_void = is_void_or>;
     
    -// This class manages conditionally having a trivial copy constructor
    -// This specialization is for when T and E are trivially copy constructible
    -template ::
    -              value &&TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value>
    -struct expected_copy_base : expected_operations_base {
    -  using expected_operations_base::expected_operations_base;
    -};
    +template 
    +using is_move_assignable_or_void = is_void_or>;
     
    -// This specialization is for when T or E are not trivially copy constructible
    -template 
    -struct expected_copy_base : expected_operations_base {
    -  using expected_operations_base::expected_operations_base;
    +}  // namespace detail
     
    -  expected_copy_base() = default;
    -  expected_copy_base(const expected_copy_base &rhs)
    -      : expected_operations_base(no_init) {
    -    if (rhs.has_value()) {
    -      this->construct_with(rhs);
    -    } else {
    -      this->construct_error(rhs.geterr());
    -    }
    -  }
    +namespace detail {
    +struct no_init_t {};
    +static constexpr no_init_t no_init{};
     
    -  expected_copy_base(expected_copy_base &&rhs) = default;
    -  expected_copy_base &operator=(const expected_copy_base &rhs) = default;
    -  expected_copy_base &operator=(expected_copy_base &&rhs) = default;
    -};
    +// Implements the storage of the values, and ensures that the destructor is
    +// trivial if it can be.
    +//
    +// This specialization is for where neither `T` or `E` is trivially
    +// destructible, so the destructors must be called on destruction of the
    +// `expected`
    +template ::value,
    +          bool = std::is_trivially_destructible::value>
    +struct expected_storage_base {
    +  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    +  constexpr expected_storage_base(no_init_t) : m_no_init(), m_has_val(false) {}
     
    -// This class manages conditionally having a trivial move constructor
    -// Unfortunately there's no way to achieve this in GCC < 5 AFAIK, since it
    -// doesn't implement an analogue to std::is_trivially_move_constructible. We
    -// have to make do with a non-trivial move constructor even if T is trivially
    -// move constructible
    -#ifndef TL_EXPECTED_GCC49
    -template >::value
    -              &&std::is_trivially_move_constructible::value>
    -struct expected_move_base : expected_copy_base {
    -  using expected_copy_base::expected_copy_base;
    -};
    -#else
    -template  struct expected_move_base;
    -#endif
    -template 
    -struct expected_move_base : expected_copy_base {
    -  using expected_copy_base::expected_copy_base;
    +  template ::value> * =
    +                nullptr>
    +  constexpr expected_storage_base(in_place_t, Args &&...args)
    +      : m_val(std::forward(args)...), m_has_val(true) {}
     
    -  expected_move_base() = default;
    -  expected_move_base(const expected_move_base &rhs) = default;
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    +                                  Args &&...args)
    +      : m_val(il, std::forward(args)...), m_has_val(true) {}
    +  template ::value> * =
    +                nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    +      : m_unexpect(std::forward(args)...), m_has_val(false) {}
     
    -  expected_move_base(expected_move_base &&rhs) noexcept(
    -      std::is_nothrow_move_constructible::value)
    -      : expected_copy_base(no_init) {
    -    if (rhs.has_value()) {
    -      this->construct_with(std::move(rhs));
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t,
    +                                           std::initializer_list il,
    +                                           Args &&...args)
    +      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +
    +  ~expected_storage_base() {
    +    if (m_has_val) {
    +      m_val.~T();
         } else {
    -      this->construct_error(std::move(rhs.geterr()));
    +      m_unexpect.~unexpected();
         }
       }
    -  expected_move_base &operator=(const expected_move_base &rhs) = default;
    -  expected_move_base &operator=(expected_move_base &&rhs) = default;
    -};
    -
    -// This class manages conditionally having a trivial copy assignment operator
    -template >::value
    -              &&TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(E)::value
    -                  &&TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value
    -                      &&TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(E)::value>
    -struct expected_copy_assign_base : expected_move_base {
    -  using expected_move_base::expected_move_base;
    +  union {
    +    T m_val;
    +    unexpected m_unexpect;
    +    char m_no_init;
    +  };
    +  bool m_has_val;
     };
     
    +// This specialization is for when both `T` and `E` are trivially-destructible,
    +// so the destructor of the `expected` can be trivial.
     template 
    -struct expected_copy_assign_base : expected_move_base {
    -  using expected_move_base::expected_move_base;
    +struct expected_storage_base {
    +  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    +  constexpr expected_storage_base(no_init_t) : m_no_init(), m_has_val(false) {}
     
    -  expected_copy_assign_base() = default;
    -  expected_copy_assign_base(const expected_copy_assign_base &rhs) = default;
    +  template ::value> * =
    +                nullptr>
    +  constexpr expected_storage_base(in_place_t, Args &&...args)
    +      : m_val(std::forward(args)...), m_has_val(true) {}
     
    -  expected_copy_assign_base(expected_copy_assign_base &&rhs) = default;
    -  expected_copy_assign_base &operator=(const expected_copy_assign_base &rhs) {
    -    this->assign(rhs);
    -    return *this;
    -  }
    -  expected_copy_assign_base &
    -  operator=(expected_copy_assign_base &&rhs) = default;
    -};
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    +                                  Args &&...args)
    +      : m_val(il, std::forward(args)...), m_has_val(true) {}
    +  template ::value> * =
    +                nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    +      : m_unexpect(std::forward(args)...), m_has_val(false) {}
     
    -// This class manages conditionally having a trivial move assignment operator
    -// Unfortunately there's no way to achieve this in GCC < 5 AFAIK, since it
    -// doesn't implement an analogue to std::is_trivially_move_assignable. We have
    -// to make do with a non-trivial move assignment operator even if T is trivially
    -// move assignable
    -#ifndef TL_EXPECTED_GCC49
    -template ,
    -                                        std::is_trivially_move_constructible,
    -                                        std::is_trivially_move_assignable>>::
    -                  value &&std::is_trivially_destructible::value
    -                      &&std::is_trivially_move_constructible::value
    -                          &&std::is_trivially_move_assignable::value>
    -struct expected_move_assign_base : expected_copy_assign_base {
    -  using expected_copy_assign_base::expected_copy_assign_base;
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t,
    +                                           std::initializer_list il,
    +                                           Args &&...args)
    +      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +
    +  ~expected_storage_base() = default;
    +  union {
    +    T m_val;
    +    unexpected m_unexpect;
    +    char m_no_init;
    +  };
    +  bool m_has_val;
     };
    -#else
    -template  struct expected_move_assign_base;
    -#endif
     
    +// T is trivial, E is not.
     template 
    -struct expected_move_assign_base
    -    : expected_copy_assign_base {
    -  using expected_copy_assign_base::expected_copy_assign_base;
    +struct expected_storage_base {
    +  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    +  TL_EXPECTED_MSVC2015_CONSTEXPR expected_storage_base(no_init_t)
    +      : m_no_init(), m_has_val(false) {}
     
    -  expected_move_assign_base() = default;
    -  expected_move_assign_base(const expected_move_assign_base &rhs) = default;
    +  template ::value> * =
    +                nullptr>
    +  constexpr expected_storage_base(in_place_t, Args &&...args)
    +      : m_val(std::forward(args)...), m_has_val(true) {}
     
    -  expected_move_assign_base(expected_move_assign_base &&rhs) = default;
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    +                                  Args &&...args)
    +      : m_val(il, std::forward(args)...), m_has_val(true) {}
    +  template ::value> * =
    +                nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    +      : m_unexpect(std::forward(args)...), m_has_val(false) {}
     
    -  expected_move_assign_base &
    -  operator=(const expected_move_assign_base &rhs) = default;
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t,
    +                                           std::initializer_list il,
    +                                           Args &&...args)
    +      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
     
    -  expected_move_assign_base &
    -  operator=(expected_move_assign_base &&rhs) noexcept(
    -      std::is_nothrow_move_constructible::value
    -          &&std::is_nothrow_move_assignable::value) {
    -    this->assign(std::move(rhs));
    -    return *this;
    +  ~expected_storage_base() {
    +    if (!m_has_val) {
    +      m_unexpect.~unexpected();
    +    }
       }
    -};
     
    -// expected_delete_ctor_base will conditionally delete copy and move
    -// constructors depending on whether T is copy/move constructible
    -template ::value &&
    -                             std::is_copy_constructible::value),
    -          bool EnableMove = (is_move_constructible_or_void::value &&
    -                             std::is_move_constructible::value)>
    -struct expected_delete_ctor_base {
    -  expected_delete_ctor_base() = default;
    -  expected_delete_ctor_base(const expected_delete_ctor_base &) = default;
    -  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = default;
    -  expected_delete_ctor_base &
    -  operator=(const expected_delete_ctor_base &) = default;
    -  expected_delete_ctor_base &
    -  operator=(expected_delete_ctor_base &&) noexcept = default;
    +  union {
    +    T m_val;
    +    unexpected m_unexpect;
    +    char m_no_init;
    +  };
    +  bool m_has_val;
     };
     
    +// E is trivial, T is not.
     template 
    -struct expected_delete_ctor_base {
    -  expected_delete_ctor_base() = default;
    -  expected_delete_ctor_base(const expected_delete_ctor_base &) = default;
    -  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = delete;
    -  expected_delete_ctor_base &
    -  operator=(const expected_delete_ctor_base &) = default;
    -  expected_delete_ctor_base &
    -  operator=(expected_delete_ctor_base &&) noexcept = default;
    -};
    +struct expected_storage_base {
    +  constexpr expected_storage_base() : m_val(T{}), m_has_val(true) {}
    +  constexpr expected_storage_base(no_init_t) : m_no_init(), m_has_val(false) {}
     
    -template 
    -struct expected_delete_ctor_base {
    -  expected_delete_ctor_base() = default;
    -  expected_delete_ctor_base(const expected_delete_ctor_base &) = delete;
    -  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = default;
    -  expected_delete_ctor_base &
    -  operator=(const expected_delete_ctor_base &) = default;
    -  expected_delete_ctor_base &
    -  operator=(expected_delete_ctor_base &&) noexcept = default;
    -};
    +  template ::value> * =
    +                nullptr>
    +  constexpr expected_storage_base(in_place_t, Args &&...args)
    +      : m_val(std::forward(args)...), m_has_val(true) {}
     
    -template 
    -struct expected_delete_ctor_base {
    -  expected_delete_ctor_base() = default;
    -  expected_delete_ctor_base(const expected_delete_ctor_base &) = delete;
    -  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = delete;
    -  expected_delete_ctor_base &
    -  operator=(const expected_delete_ctor_base &) = default;
    -  expected_delete_ctor_base &
    -  operator=(expected_delete_ctor_base &&) noexcept = default;
    -};
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr expected_storage_base(in_place_t, std::initializer_list il,
    +                                  Args &&...args)
    +      : m_val(il, std::forward(args)...), m_has_val(true) {}
    +  template ::value> * =
    +                nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    +      : m_unexpect(std::forward(args)...), m_has_val(false) {}
     
    -// expected_delete_assign_base will conditionally delete copy and move
    -// constructors depending on whether T and E are copy/move constructible +
    -// assignable
    -template ::value &&
    -                             std::is_copy_constructible::value &&
    -                             is_copy_assignable_or_void::value &&
    -                             std::is_copy_assignable::value),
    -          bool EnableMove = (is_move_constructible_or_void::value &&
    -                             std::is_move_constructible::value &&
    -                             is_move_assignable_or_void::value &&
    -                             std::is_move_assignable::value)>
    -struct expected_delete_assign_base {
    -  expected_delete_assign_base() = default;
    -  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    -  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    -      default;
    -  expected_delete_assign_base &
    -  operator=(const expected_delete_assign_base &) = default;
    -  expected_delete_assign_base &
    -  operator=(expected_delete_assign_base &&) noexcept = default;
    -};
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t,
    +                                           std::initializer_list il,
    +                                           Args &&...args)
    +      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
     
    -template 
    -struct expected_delete_assign_base {
    -  expected_delete_assign_base() = default;
    -  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    -  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    -      default;
    -  expected_delete_assign_base &
    -  operator=(const expected_delete_assign_base &) = default;
    -  expected_delete_assign_base &
    -  operator=(expected_delete_assign_base &&) noexcept = delete;
    +  ~expected_storage_base() {
    +    if (m_has_val) {
    +      m_val.~T();
    +    }
    +  }
    +  union {
    +    T m_val;
    +    unexpected m_unexpect;
    +    char m_no_init;
    +  };
    +  bool m_has_val;
     };
     
    -template 
    -struct expected_delete_assign_base {
    -  expected_delete_assign_base() = default;
    -  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    -  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    -      default;
    -  expected_delete_assign_base &
    -  operator=(const expected_delete_assign_base &) = delete;
    -  expected_delete_assign_base &
    -  operator=(expected_delete_assign_base &&) noexcept = default;
    -};
    +// `T` is `void`, `E` is trivially-destructible
    +template 
    +struct expected_storage_base {
    +#if __GNUC__ <= 5
    +// no constexpr for GCC 4/5 bug
    +#else
    +  TL_EXPECTED_MSVC2015_CONSTEXPR
    +#endif
    +  expected_storage_base() : m_has_val(true) {}
     
    -template 
    -struct expected_delete_assign_base {
    -  expected_delete_assign_base() = default;
    -  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    -  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    -      default;
    -  expected_delete_assign_base &
    -  operator=(const expected_delete_assign_base &) = delete;
    -  expected_delete_assign_base &
    -  operator=(expected_delete_assign_base &&) noexcept = delete;
    -};
    +  constexpr expected_storage_base(no_init_t) : m_val(), m_has_val(false) {}
     
    -// This is needed to be able to construct the expected_default_ctor_base which
    -// follows, while still conditionally deleting the default constructor.
    -struct default_constructor_tag {
    -  explicit constexpr default_constructor_tag() = default;
    -};
    +  constexpr expected_storage_base(in_place_t) : m_has_val(true) {}
     
    -// expected_default_ctor_base will ensure that expected has a deleted default
    -// consturctor if T is not default constructible.
    -// This specialization is for when T is default constructible
    -template ::value || std::is_void::value>
    -struct expected_default_ctor_base {
    -  constexpr expected_default_ctor_base() noexcept = default;
    -  constexpr expected_default_ctor_base(
    -      expected_default_ctor_base const &) noexcept = default;
    -  constexpr expected_default_ctor_base(expected_default_ctor_base &&) noexcept =
    -      default;
    -  expected_default_ctor_base &
    -  operator=(expected_default_ctor_base const &) noexcept = default;
    -  expected_default_ctor_base &
    -  operator=(expected_default_ctor_base &&) noexcept = default;
    +  template ::value> * =
    +                nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    +      : m_unexpect(std::forward(args)...), m_has_val(false) {}
     
    -  constexpr explicit expected_default_ctor_base(default_constructor_tag) {}
    -};
    -
    -// This specialization is for when T is not default constructible
    -template  struct expected_default_ctor_base {
    -  constexpr expected_default_ctor_base() noexcept = delete;
    -  constexpr expected_default_ctor_base(
    -      expected_default_ctor_base const &) noexcept = default;
    -  constexpr expected_default_ctor_base(expected_default_ctor_base &&) noexcept =
    -      default;
    -  expected_default_ctor_base &
    -  operator=(expected_default_ctor_base const &) noexcept = default;
    -  expected_default_ctor_base &
    -  operator=(expected_default_ctor_base &&) noexcept = default;
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t,
    +                                           std::initializer_list il,
    +                                           Args &&...args)
    +      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
     
    -  constexpr explicit expected_default_ctor_base(default_constructor_tag) {}
    +  ~expected_storage_base() = default;
    +  struct dummy {};
    +  union {
    +    unexpected m_unexpect;
    +    dummy m_val;
    +  };
    +  bool m_has_val;
     };
    -} // namespace detail
     
    -template  class bad_expected_access : public std::exception {
    -public:
    -  explicit bad_expected_access(E e) : m_val(std::move(e)) {}
    +// `T` is `void`, `E` is not trivially-destructible
    +template 
    +struct expected_storage_base {
    +  constexpr expected_storage_base() : m_dummy(), m_has_val(true) {}
    +  constexpr expected_storage_base(no_init_t) : m_dummy(), m_has_val(false) {}
     
    -  virtual const char *what() const noexcept override {
    -    return "Bad expected access";
    -  }
    +  constexpr expected_storage_base(in_place_t) : m_dummy(), m_has_val(true) {}
     
    -  const E &error() const & { return m_val; }
    -  E &error() & { return m_val; }
    -  const E &&error() const && { return std::move(m_val); }
    -  E &&error() && { return std::move(m_val); }
    +  template ::value> * =
    +                nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t, Args &&...args)
    +      : m_unexpect(std::forward(args)...), m_has_val(false) {}
     
    -private:
    -  E m_val;
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr explicit expected_storage_base(unexpect_t,
    +                                           std::initializer_list il,
    +                                           Args &&...args)
    +      : m_unexpect(il, std::forward(args)...), m_has_val(false) {}
    +
    +  ~expected_storage_base() {
    +    if (!m_has_val) {
    +      m_unexpect.~unexpected();
    +    }
    +  }
    +
    +  union {
    +    unexpected m_unexpect;
    +    char m_dummy;
    +  };
    +  bool m_has_val;
     };
     
    -/// An `expected` object is an object that contains the storage for
    -/// another object and manages the lifetime of this contained object `T`.
    -/// Alternatively it could contain the storage for another unexpected object
    -/// `E`. The contained object may not be initialized after the expected object
    -/// has been initialized, and may not be destroyed before the expected object
    -/// has been destroyed. The initialization state of the contained object is
    -/// tracked by the expected object.
    +// This base class provides some handy member functions which can be used in
    +// further derived classes
     template 
    -class expected : private detail::expected_move_assign_base,
    -                 private detail::expected_delete_ctor_base,
    -                 private detail::expected_delete_assign_base,
    -                 private detail::expected_default_ctor_base {
    -  static_assert(!std::is_reference::value, "T must not be a reference");
    -  static_assert(!std::is_same::type>::value,
    -                "T must not be in_place_t");
    -  static_assert(!std::is_same::type>::value,
    -                "T must not be unexpect_t");
    -  static_assert(
    -      !std::is_same>::type>::value,
    -      "T must not be unexpected");
    -  static_assert(!std::is_reference::value, "E must not be a reference");
    +struct expected_operations_base : expected_storage_base {
    +  using expected_storage_base::expected_storage_base;
     
    -  T *valptr() { return std::addressof(this->m_val); }
    -  const T *valptr() const { return std::addressof(this->m_val); }
    -  unexpected *errptr() { return std::addressof(this->m_unexpect); }
    -  const unexpected *errptr() const {
    -    return std::addressof(this->m_unexpect);
    +  template 
    +  void construct(Args &&...args) noexcept {
    +    new (std::addressof(this->m_val)) T(std::forward(args)...);
    +    this->m_has_val = true;
       }
     
    -  template ::value> * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR U &val() {
    -    return this->m_val;
    +  template 
    +  void construct_with(Rhs &&rhs) noexcept {
    +    new (std::addressof(this->m_val)) T(std::forward(rhs).get());
    +    this->m_has_val = true;
       }
    -  TL_EXPECTED_11_CONSTEXPR unexpected &err() { return this->m_unexpect; }
     
    -  template ::value> * = nullptr>
    -  constexpr const U &val() const {
    -    return this->m_val;
    +  template 
    +  void construct_error(Args &&...args) noexcept {
    +    new (std::addressof(this->m_unexpect))
    +        unexpected(std::forward(args)...);
    +    this->m_has_val = false;
       }
    -  constexpr const unexpected &err() const { return this->m_unexpect; }
    -
    -  using impl_base = detail::expected_move_assign_base;
    -  using ctor_base = detail::expected_default_ctor_base;
     
    -public:
    -  typedef T value_type;
    -  typedef E error_type;
    -  typedef unexpected unexpected_type;
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
     
    -#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) &&               \
    -    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    -  template  TL_EXPECTED_11_CONSTEXPR auto and_then(F &&f) & {
    -    return and_then_impl(*this, std::forward(f));
    +  // These assign overloads ensure that the most efficient assignment
    +  // implementation is used while maintaining the strong exception guarantee.
    +  // The problematic case is where rhs has a value, but *this does not.
    +  //
    +  // This overload handles the case where we can just copy-construct `T`
    +  // directly into place without throwing.
    +  template ::value>
    +                * = nullptr>
    +  void assign(const expected_operations_base &rhs) noexcept {
    +    if (!this->m_has_val && rhs.m_has_val) {
    +      geterr().~unexpected();
    +      construct(rhs.get());
    +    } else {
    +      assign_common(rhs);
    +    }
       }
    -  template  TL_EXPECTED_11_CONSTEXPR auto and_then(F &&f) && {
    -    return and_then_impl(std::move(*this), std::forward(f));
    +
    +  // This overload handles the case where we can attempt to create a copy of
    +  // `T`, then no-throw move it into place if the copy was successful.
    +  template ::value &&
    +                                std::is_nothrow_move_constructible::value>
    +                * = nullptr>
    +  void assign(const expected_operations_base &rhs) noexcept {
    +    if (!this->m_has_val && rhs.m_has_val) {
    +      T tmp = rhs.get();
    +      geterr().~unexpected();
    +      construct(std::move(tmp));
    +    } else {
    +      assign_common(rhs);
    +    }
       }
    -  template  constexpr auto and_then(F &&f) const & {
    -    return and_then_impl(*this, std::forward(f));
    +
    +  // This overload is the worst-case, where we have to move-construct the
    +  // unexpected value into temporary storage, then try to copy the T into place.
    +  // If the construction succeeds, then everything is fine, but if it throws,
    +  // then we move the old unexpected value back into place before rethrowing the
    +  // exception.
    +  template ::value &&
    +                                !std::is_nothrow_move_constructible::value>
    +                * = nullptr>
    +  void assign(const expected_operations_base &rhs) {
    +    if (!this->m_has_val && rhs.m_has_val) {
    +      auto tmp = std::move(geterr());
    +      geterr().~unexpected();
    +
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +      try {
    +        construct(rhs.get());
    +      } catch (...) {
    +        geterr() = std::move(tmp);
    +        throw;
    +      }
    +#else
    +      construct(rhs.get());
    +#endif
    +    } else {
    +      assign_common(rhs);
    +    }
       }
     
    -#ifndef TL_EXPECTED_NO_CONSTRR
    -  template  constexpr auto and_then(F &&f) const && {
    -    return and_then_impl(std::move(*this), std::forward(f));
    +  // These overloads do the same as above, but for rvalues
    +  template ::value>
    +                * = nullptr>
    +  void assign(expected_operations_base &&rhs) noexcept {
    +    if (!this->m_has_val && rhs.m_has_val) {
    +      geterr().~unexpected();
    +      construct(std::move(rhs).get());
    +    } else {
    +      assign_common(std::move(rhs));
    +    }
       }
    -#endif
     
    +  template ::value>
    +                * = nullptr>
    +  void assign(expected_operations_base &&rhs) {
    +    if (!this->m_has_val && rhs.m_has_val) {
    +      auto tmp = std::move(geterr());
    +      geterr().~unexpected();
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +      try {
    +        construct(std::move(rhs).get());
    +      } catch (...) {
    +        geterr() = std::move(tmp);
    +        throw;
    +      }
     #else
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR auto
    -  and_then(F &&f) & -> decltype(and_then_impl(std::declval(),
    -                                              std::forward(f))) {
    -    return and_then_impl(*this, std::forward(f));
    -  }
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR auto
    -  and_then(F &&f) && -> decltype(and_then_impl(std::declval(),
    -                                               std::forward(f))) {
    -    return and_then_impl(std::move(*this), std::forward(f));
    +      construct(std::move(rhs).get());
    +#endif
    +    } else {
    +      assign_common(std::move(rhs));
    +    }
       }
    -  template 
    -  constexpr auto and_then(F &&f) const & -> decltype(and_then_impl(
    -      std::declval(), std::forward(f))) {
    -    return and_then_impl(*this, std::forward(f));
    +
    +#else
    +
    +  // If exceptions are disabled then we can just copy-construct
    +  void assign(const expected_operations_base &rhs) noexcept {
    +    if (!this->m_has_val && rhs.m_has_val) {
    +      geterr().~unexpected();
    +      construct(rhs.get());
    +    } else {
    +      assign_common(rhs);
    +    }
       }
     
    -#ifndef TL_EXPECTED_NO_CONSTRR
    -  template 
    -  constexpr auto and_then(F &&f) const && -> decltype(and_then_impl(
    -      std::declval(), std::forward(f))) {
    -    return and_then_impl(std::move(*this), std::forward(f));
    +  void assign(expected_operations_base &&rhs) noexcept {
    +    if (!this->m_has_val && rhs.m_has_val) {
    +      geterr().~unexpected();
    +      construct(std::move(rhs).get());
    +    } else {
    +      assign_common(rhs);
    +    }
       }
    -#endif
    +
     #endif
     
    -#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) &&               \
    -    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    -  template  TL_EXPECTED_11_CONSTEXPR auto map(F &&f) & {
    -    return expected_map_impl(*this, std::forward(f));
    -  }
    -  template  TL_EXPECTED_11_CONSTEXPR auto map(F &&f) && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    -  }
    -  template  constexpr auto map(F &&f) const & {
    -    return expected_map_impl(*this, std::forward(f));
    -  }
    -  template  constexpr auto map(F &&f) const && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    -  }
    -#else
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(
    -      std::declval(), std::declval()))
    -  map(F &&f) & {
    -    return expected_map_impl(*this, std::forward(f));
    -  }
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(std::declval(),
    -                                                      std::declval()))
    -  map(F &&f) && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    -  }
    -  template 
    -  constexpr decltype(expected_map_impl(std::declval(),
    -                                       std::declval()))
    -  map(F &&f) const & {
    -    return expected_map_impl(*this, std::forward(f));
    +  // The common part of move/copy assigning
    +  template 
    +  void assign_common(Rhs &&rhs) {
    +    if (this->m_has_val) {
    +      if (rhs.m_has_val) {
    +        get() = std::forward(rhs).get();
    +      } else {
    +        destroy_val();
    +        construct_error(std::forward(rhs).geterr());
    +      }
    +    } else {
    +      if (!rhs.m_has_val) {
    +        geterr() = std::forward(rhs).geterr();
    +      }
    +    }
       }
     
    +  bool has_value() const { return this->m_has_val; }
    +
    +  TL_EXPECTED_11_CONSTEXPR T &get() & { return this->m_val; }
    +  constexpr const T &get() const & { return this->m_val; }
    +  TL_EXPECTED_11_CONSTEXPR T &&get() && { return std::move(this->m_val); }
     #ifndef TL_EXPECTED_NO_CONSTRR
    -  template 
    -  constexpr decltype(expected_map_impl(std::declval(),
    -                                       std::declval()))
    -  map(F &&f) const && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    -  }
    -#endif
    +  constexpr const T &&get() const && { return std::move(this->m_val); }
     #endif
     
    -#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) &&               \
    -    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    -  template  TL_EXPECTED_11_CONSTEXPR auto transform(F &&f) & {
    -    return expected_map_impl(*this, std::forward(f));
    +  TL_EXPECTED_11_CONSTEXPR unexpected &geterr() & {
    +    return this->m_unexpect;
       }
    -  template  TL_EXPECTED_11_CONSTEXPR auto transform(F &&f) && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    +  constexpr const unexpected &geterr() const & { return this->m_unexpect; }
    +  TL_EXPECTED_11_CONSTEXPR unexpected &&geterr() && {
    +    return std::move(this->m_unexpect);
       }
    -  template  constexpr auto transform(F &&f) const & {
    -    return expected_map_impl(*this, std::forward(f));
    +#ifndef TL_EXPECTED_NO_CONSTRR
    +  constexpr const unexpected &&geterr() const && {
    +    return std::move(this->m_unexpect);
       }
    -  template  constexpr auto transform(F &&f) const && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    +#endif
    +
    +  TL_EXPECTED_11_CONSTEXPR void destroy_val() { get().~T(); }
    +};
    +
    +// This base class provides some handy member functions which can be used in
    +// further derived classes
    +template 
    +struct expected_operations_base : expected_storage_base {
    +  using expected_storage_base::expected_storage_base;
    +
    +  template 
    +  void construct() noexcept {
    +    this->m_has_val = true;
       }
    -#else
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(
    -      std::declval(), std::declval()))
    -  transform(F &&f) & {
    -    return expected_map_impl(*this, std::forward(f));
    +
    +  // This function doesn't use its argument, but needs it so that code in
    +  // levels above this can work independently of whether T is void
    +  template 
    +  void construct_with(Rhs &&) noexcept {
    +    this->m_has_val = true;
       }
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(std::declval(),
    -                                                      std::declval()))
    -  transform(F &&f) && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    +
    +  template 
    +  void construct_error(Args &&...args) noexcept {
    +    new (std::addressof(this->m_unexpect))
    +        unexpected(std::forward(args)...);
    +    this->m_has_val = false;
       }
    -  template 
    -  constexpr decltype(expected_map_impl(std::declval(),
    -                                       std::declval()))
    -  transform(F &&f) const & {
    -    return expected_map_impl(*this, std::forward(f));
    +
    +  template 
    +  void assign(Rhs &&rhs) noexcept {
    +    if (!this->m_has_val) {
    +      if (rhs.m_has_val) {
    +        geterr().~unexpected();
    +        construct();
    +      } else {
    +        geterr() = std::forward(rhs).geterr();
    +      }
    +    } else {
    +      if (!rhs.m_has_val) {
    +        construct_error(std::forward(rhs).geterr());
    +      }
    +    }
       }
     
    +  bool has_value() const { return this->m_has_val; }
    +
    +  TL_EXPECTED_11_CONSTEXPR unexpected &geterr() & {
    +    return this->m_unexpect;
    +  }
    +  constexpr const unexpected &geterr() const & { return this->m_unexpect; }
    +  TL_EXPECTED_11_CONSTEXPR unexpected &&geterr() && {
    +    return std::move(this->m_unexpect);
    +  }
     #ifndef TL_EXPECTED_NO_CONSTRR
    -  template 
    -  constexpr decltype(expected_map_impl(std::declval(),
    -                                       std::declval()))
    -  transform(F &&f) const && {
    -    return expected_map_impl(std::move(*this), std::forward(f));
    +  constexpr const unexpected &&geterr() const && {
    +    return std::move(this->m_unexpect);
       }
     #endif
    -#endif
     
    -#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) &&               \
    -    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    -  template  TL_EXPECTED_11_CONSTEXPR auto map_error(F &&f) & {
    -    return map_error_impl(*this, std::forward(f));
    -  }
    -  template  TL_EXPECTED_11_CONSTEXPR auto map_error(F &&f) && {
    -    return map_error_impl(std::move(*this), std::forward(f));
    -  }
    -  template  constexpr auto map_error(F &&f) const & {
    -    return map_error_impl(*this, std::forward(f));
    +  TL_EXPECTED_11_CONSTEXPR void destroy_val() {
    +    // no-op
       }
    -  template  constexpr auto map_error(F &&f) const && {
    -    return map_error_impl(std::move(*this), std::forward(f));
    +};
    +
    +// This class manages conditionally having a trivial copy constructor
    +// This specialization is for when T and E are trivially copy constructible
    +template ::
    +              value &&TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value>
    +struct expected_copy_base : expected_operations_base {
    +  using expected_operations_base::expected_operations_base;
    +};
    +
    +// This specialization is for when T or E are not trivially copy constructible
    +template 
    +struct expected_copy_base : expected_operations_base {
    +  using expected_operations_base::expected_operations_base;
    +
    +  expected_copy_base() = default;
    +  expected_copy_base(const expected_copy_base &rhs)
    +      : expected_operations_base(no_init) {
    +    if (rhs.has_value()) {
    +      this->construct_with(rhs);
    +    } else {
    +      this->construct_error(rhs.geterr());
    +    }
       }
    +
    +  expected_copy_base(expected_copy_base &&rhs) = default;
    +  expected_copy_base &operator=(const expected_copy_base &rhs) = default;
    +  expected_copy_base &operator=(expected_copy_base &&rhs) = default;
    +};
    +
    +// This class manages conditionally having a trivial move constructor
    +// Unfortunately there's no way to achieve this in GCC < 5 AFAIK, since it
    +// doesn't implement an analogue to std::is_trivially_move_constructible. We
    +// have to make do with a non-trivial move constructor even if T is trivially
    +// move constructible
    +#ifndef TL_EXPECTED_GCC49
    +template >::value
    +              &&std::is_trivially_move_constructible::value>
    +struct expected_move_base : expected_copy_base {
    +  using expected_copy_base::expected_copy_base;
    +};
     #else
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR decltype(map_error_impl(std::declval(),
    -                                                   std::declval()))
    -  map_error(F &&f) & {
    -    return map_error_impl(*this, std::forward(f));
    -  }
    -  template 
    -  TL_EXPECTED_11_CONSTEXPR decltype(map_error_impl(std::declval(),
    -                                                   std::declval()))
    -  map_error(F &&f) && {
    -    return map_error_impl(std::move(*this), std::forward(f));
    -  }
    -  template 
    -  constexpr decltype(map_error_impl(std::declval(),
    -                                    std::declval()))
    -  map_error(F &&f) const & {
    -    return map_error_impl(*this, std::forward(f));
    -  }
    +template 
    +struct expected_move_base;
    +#endif
    +template 
    +struct expected_move_base : expected_copy_base {
    +  using expected_copy_base::expected_copy_base;
     
    -#ifndef TL_EXPECTED_NO_CONSTRR
    -  template 
    -  constexpr decltype(map_error_impl(std::declval(),
    -                                    std::declval()))
    -  map_error(F &&f) const && {
    -    return map_error_impl(std::move(*this), std::forward(f));
    +  expected_move_base() = default;
    +  expected_move_base(const expected_move_base &rhs) = default;
    +
    +  expected_move_base(expected_move_base &&rhs) noexcept(
    +      std::is_nothrow_move_constructible::value)
    +      : expected_copy_base(no_init) {
    +    if (rhs.has_value()) {
    +      this->construct_with(std::move(rhs));
    +    } else {
    +      this->construct_error(std::move(rhs.geterr()));
    +    }
       }
    -#endif
    -#endif
    -  template  expected TL_EXPECTED_11_CONSTEXPR or_else(F &&f) & {
    -    return or_else_impl(*this, std::forward(f));
    +  expected_move_base &operator=(const expected_move_base &rhs) = default;
    +  expected_move_base &operator=(expected_move_base &&rhs) = default;
    +};
    +
    +// This class manages conditionally having a trivial copy assignment operator
    +template >::value
    +              &&TL_EXPECTED_IS_TRIVIALLY_COPY_ASSIGNABLE(E)::value
    +                  &&TL_EXPECTED_IS_TRIVIALLY_COPY_CONSTRUCTIBLE(E)::value
    +                      &&TL_EXPECTED_IS_TRIVIALLY_DESTRUCTIBLE(E)::value>
    +struct expected_copy_assign_base : expected_move_base {
    +  using expected_move_base::expected_move_base;
    +};
    +
    +template 
    +struct expected_copy_assign_base : expected_move_base {
    +  using expected_move_base::expected_move_base;
    +
    +  expected_copy_assign_base() = default;
    +  expected_copy_assign_base(const expected_copy_assign_base &rhs) = default;
    +
    +  expected_copy_assign_base(expected_copy_assign_base &&rhs) = default;
    +  expected_copy_assign_base &operator=(const expected_copy_assign_base &rhs) {
    +    this->assign(rhs);
    +    return *this;
       }
    +  expected_copy_assign_base &operator=(expected_copy_assign_base &&rhs) =
    +      default;
    +};
    +
    +// This class manages conditionally having a trivial move assignment operator
    +// Unfortunately there's no way to achieve this in GCC < 5 AFAIK, since it
    +// doesn't implement an analogue to std::is_trivially_move_assignable. We have
    +// to make do with a non-trivial move assignment operator even if T is trivially
    +// move assignable
    +#ifndef TL_EXPECTED_GCC49
    +template ,
    +                                        std::is_trivially_move_constructible,
    +                                        std::is_trivially_move_assignable>>::
    +                  value &&std::is_trivially_destructible::value
    +                      &&std::is_trivially_move_constructible::value
    +                          &&std::is_trivially_move_assignable::value>
    +struct expected_move_assign_base : expected_copy_assign_base {
    +  using expected_copy_assign_base::expected_copy_assign_base;
    +};
    +#else
    +template 
    +struct expected_move_assign_base;
    +#endif
    +
    +template 
    +struct expected_move_assign_base
    +    : expected_copy_assign_base {
    +  using expected_copy_assign_base::expected_copy_assign_base;
    +
    +  expected_move_assign_base() = default;
    +  expected_move_assign_base(const expected_move_assign_base &rhs) = default;
    +
    +  expected_move_assign_base(expected_move_assign_base &&rhs) = default;
    +
    +  expected_move_assign_base &operator=(const expected_move_assign_base &rhs) =
    +      default;
    +
    +  expected_move_assign_base &
    +  operator=(expected_move_assign_base &&rhs) noexcept(
    +      std::is_nothrow_move_constructible::value
    +          &&std::is_nothrow_move_assignable::value) {
    +    this->assign(std::move(rhs));
    +    return *this;
    +  }
    +};
    +
    +// expected_delete_ctor_base will conditionally delete copy and move
    +// constructors depending on whether T is copy/move constructible
    +template ::value &&
    +                             std::is_copy_constructible::value),
    +          bool EnableMove = (is_move_constructible_or_void::value &&
    +                             std::is_move_constructible::value)>
    +struct expected_delete_ctor_base {
    +  expected_delete_ctor_base() = default;
    +  expected_delete_ctor_base(const expected_delete_ctor_base &) = default;
    +  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = default;
    +  expected_delete_ctor_base &operator=(const expected_delete_ctor_base &) =
    +      default;
    +  expected_delete_ctor_base &operator=(expected_delete_ctor_base &&) noexcept =
    +      default;
    +};
    +
    +template 
    +struct expected_delete_ctor_base {
    +  expected_delete_ctor_base() = default;
    +  expected_delete_ctor_base(const expected_delete_ctor_base &) = default;
    +  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = delete;
    +  expected_delete_ctor_base &operator=(const expected_delete_ctor_base &) =
    +      default;
    +  expected_delete_ctor_base &operator=(expected_delete_ctor_base &&) noexcept =
    +      default;
    +};
    +
    +template 
    +struct expected_delete_ctor_base {
    +  expected_delete_ctor_base() = default;
    +  expected_delete_ctor_base(const expected_delete_ctor_base &) = delete;
    +  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = default;
    +  expected_delete_ctor_base &operator=(const expected_delete_ctor_base &) =
    +      default;
    +  expected_delete_ctor_base &operator=(expected_delete_ctor_base &&) noexcept =
    +      default;
    +};
    +
    +template 
    +struct expected_delete_ctor_base {
    +  expected_delete_ctor_base() = default;
    +  expected_delete_ctor_base(const expected_delete_ctor_base &) = delete;
    +  expected_delete_ctor_base(expected_delete_ctor_base &&) noexcept = delete;
    +  expected_delete_ctor_base &operator=(const expected_delete_ctor_base &) =
    +      default;
    +  expected_delete_ctor_base &operator=(expected_delete_ctor_base &&) noexcept =
    +      default;
    +};
    +
    +// expected_delete_assign_base will conditionally delete copy and move
    +// constructors depending on whether T and E are copy/move constructible +
    +// assignable
    +template ::value &&
    +                             std::is_copy_constructible::value &&
    +                             is_copy_assignable_or_void::value &&
    +                             std::is_copy_assignable::value),
    +          bool EnableMove = (is_move_constructible_or_void::value &&
    +                             std::is_move_constructible::value &&
    +                             is_move_assignable_or_void::value &&
    +                             std::is_move_assignable::value)>
    +struct expected_delete_assign_base {
    +  expected_delete_assign_base() = default;
    +  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    +  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    +      default;
    +  expected_delete_assign_base &operator=(const expected_delete_assign_base &) =
    +      default;
    +  expected_delete_assign_base &operator=(
    +      expected_delete_assign_base &&) noexcept = default;
    +};
    +
    +template 
    +struct expected_delete_assign_base {
    +  expected_delete_assign_base() = default;
    +  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    +  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    +      default;
    +  expected_delete_assign_base &operator=(const expected_delete_assign_base &) =
    +      default;
    +  expected_delete_assign_base &operator=(
    +      expected_delete_assign_base &&) noexcept = delete;
    +};
    +
    +template 
    +struct expected_delete_assign_base {
    +  expected_delete_assign_base() = default;
    +  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    +  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    +      default;
    +  expected_delete_assign_base &operator=(const expected_delete_assign_base &) =
    +      delete;
    +  expected_delete_assign_base &operator=(
    +      expected_delete_assign_base &&) noexcept = default;
    +};
    +
    +template 
    +struct expected_delete_assign_base {
    +  expected_delete_assign_base() = default;
    +  expected_delete_assign_base(const expected_delete_assign_base &) = default;
    +  expected_delete_assign_base(expected_delete_assign_base &&) noexcept =
    +      default;
    +  expected_delete_assign_base &operator=(const expected_delete_assign_base &) =
    +      delete;
    +  expected_delete_assign_base &operator=(
    +      expected_delete_assign_base &&) noexcept = delete;
    +};
    +
    +// This is needed to be able to construct the expected_default_ctor_base which
    +// follows, while still conditionally deleting the default constructor.
    +struct default_constructor_tag {
    +  explicit constexpr default_constructor_tag() = default;
    +};
    +
    +// expected_default_ctor_base will ensure that expected has a deleted default
    +// consturctor if T is not default constructible.
    +// This specialization is for when T is default constructible
    +template ::value || std::is_void::value>
    +struct expected_default_ctor_base {
    +  constexpr expected_default_ctor_base() noexcept = default;
    +  constexpr expected_default_ctor_base(
    +      expected_default_ctor_base const &) noexcept = default;
    +  constexpr expected_default_ctor_base(expected_default_ctor_base &&) noexcept =
    +      default;
    +  expected_default_ctor_base &operator=(
    +      expected_default_ctor_base const &) noexcept = default;
    +  expected_default_ctor_base &operator=(
    +      expected_default_ctor_base &&) noexcept = default;
    +
    +  constexpr explicit expected_default_ctor_base(default_constructor_tag) {}
    +};
    +
    +// This specialization is for when T is not default constructible
    +template 
    +struct expected_default_ctor_base {
    +  constexpr expected_default_ctor_base() noexcept = delete;
    +  constexpr expected_default_ctor_base(
    +      expected_default_ctor_base const &) noexcept = default;
    +  constexpr expected_default_ctor_base(expected_default_ctor_base &&) noexcept =
    +      default;
    +  expected_default_ctor_base &operator=(
    +      expected_default_ctor_base const &) noexcept = default;
    +  expected_default_ctor_base &operator=(
    +      expected_default_ctor_base &&) noexcept = default;
    +
    +  constexpr explicit expected_default_ctor_base(default_constructor_tag) {}
    +};
    +}  // namespace detail
    +
    +template 
    +class bad_expected_access : public std::exception {
    + public:
    +  explicit bad_expected_access(E e) : m_val(std::move(e)) {}
    +
    +  virtual const char *what() const noexcept override {
    +    return "Bad expected access";
    +  }
    +
    +  const E &error() const & { return m_val; }
    +  E &error() & { return m_val; }
    +  const E &&error() const && { return std::move(m_val); }
    +  E &&error() && { return std::move(m_val); }
    +
    + private:
    +  E m_val;
    +};
    +
    +/// An `expected` object is an object that contains the storage for
    +/// another object and manages the lifetime of this contained object `T`.
    +/// Alternatively it could contain the storage for another unexpected object
    +/// `E`. The contained object may not be initialized after the expected object
    +/// has been initialized, and may not be destroyed before the expected object
    +/// has been destroyed. The initialization state of the contained object is
    +/// tracked by the expected object.
    +template 
    +class expected : private detail::expected_move_assign_base,
    +                 private detail::expected_delete_ctor_base,
    +                 private detail::expected_delete_assign_base,
    +                 private detail::expected_default_ctor_base {
    +  static_assert(!std::is_reference::value, "T must not be a reference");
    +  static_assert(!std::is_same::type>::value,
    +                "T must not be in_place_t");
    +  static_assert(!std::is_same::type>::value,
    +                "T must not be unexpect_t");
    +  static_assert(
    +      !std::is_same>::type>::value,
    +      "T must not be unexpected");
    +  static_assert(!std::is_reference::value, "E must not be a reference");
    +
    +  T *valptr() { return std::addressof(this->m_val); }
    +  const T *valptr() const { return std::addressof(this->m_val); }
    +  unexpected *errptr() { return std::addressof(this->m_unexpect); }
    +  const unexpected *errptr() const {
    +    return std::addressof(this->m_unexpect);
    +  }
    +
    +  template ::value> * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR U &val() {
    +    return this->m_val;
    +  }
    +  TL_EXPECTED_11_CONSTEXPR unexpected &err() { return this->m_unexpect; }
    +
    +  template ::value> * = nullptr>
    +  constexpr const U &val() const {
    +    return this->m_val;
    +  }
    +  constexpr const unexpected &err() const { return this->m_unexpect; }
    +
    +  using impl_base = detail::expected_move_assign_base;
    +  using ctor_base = detail::expected_default_ctor_base;
    +
    + public:
    +  typedef T value_type;
    +  typedef E error_type;
    +  typedef unexpected unexpected_type;
    +
    +#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) && \
    +    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto and_then(F &&f) & {
    +    return and_then_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto and_then(F &&f) && {
    +    return and_then_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr auto and_then(F &&f) const & {
    +    return and_then_impl(*this, std::forward(f));
    +  }
    +
    +#ifndef TL_EXPECTED_NO_CONSTRR
    +  template 
    +  constexpr auto and_then(F &&f) const && {
    +    return and_then_impl(std::move(*this), std::forward(f));
    +  }
    +#endif
    +
    +#else
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto and_then(F &&f) & -> decltype(and_then_impl(
    +      std::declval(), std::forward(f))) {
    +    return and_then_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto and_then(F &&f) && -> decltype(and_then_impl(
    +      std::declval(), std::forward(f))) {
    +    return and_then_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr auto and_then(F &&f) const & -> decltype(and_then_impl(
    +      std::declval(), std::forward(f))) {
    +    return and_then_impl(*this, std::forward(f));
    +  }
    +
    +#ifndef TL_EXPECTED_NO_CONSTRR
    +  template 
    +  constexpr auto and_then(F &&f) const && -> decltype(and_then_impl(
    +      std::declval(), std::forward(f))) {
    +    return and_then_impl(std::move(*this), std::forward(f));
    +  }
    +#endif
    +#endif
    +
    +#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) && \
    +    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto map(F &&f) & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto map(F &&f) && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr auto map(F &&f) const & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +  template 
    +  constexpr auto map(F &&f) const && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +#else
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(
    +      std::declval(), std::declval()))
    +  map(F &&f) & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(std::declval(),
    +                                                      std::declval()))
    +  map(F &&f) && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr decltype(expected_map_impl(std::declval(),
    +                                       std::declval()))
    +  map(F &&f) const & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +
    +#ifndef TL_EXPECTED_NO_CONSTRR
    +  template 
    +  constexpr decltype(expected_map_impl(std::declval(),
    +                                       std::declval()))
    +  map(F &&f) const && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +#endif
    +#endif
    +
    +#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) && \
    +    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto transform(F &&f) & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto transform(F &&f) && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr auto transform(F &&f) const & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +  template 
    +  constexpr auto transform(F &&f) const && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +#else
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(
    +      std::declval(), std::declval()))
    +  transform(F &&f) & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR decltype(expected_map_impl(std::declval(),
    +                                                      std::declval()))
    +  transform(F &&f) && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr decltype(expected_map_impl(std::declval(),
    +                                       std::declval()))
    +  transform(F &&f) const & {
    +    return expected_map_impl(*this, std::forward(f));
    +  }
    +
    +#ifndef TL_EXPECTED_NO_CONSTRR
    +  template 
    +  constexpr decltype(expected_map_impl(std::declval(),
    +                                       std::declval()))
    +  transform(F &&f) const && {
    +    return expected_map_impl(std::move(*this), std::forward(f));
    +  }
    +#endif
    +#endif
    +
    +#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) && \
    +    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto map_error(F &&f) & {
    +    return map_error_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR auto map_error(F &&f) && {
    +    return map_error_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr auto map_error(F &&f) const & {
    +    return map_error_impl(*this, std::forward(f));
    +  }
    +  template 
    +  constexpr auto map_error(F &&f) const && {
    +    return map_error_impl(std::move(*this), std::forward(f));
    +  }
    +#else
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR decltype(map_error_impl(std::declval(),
    +                                                   std::declval()))
    +  map_error(F &&f) & {
    +    return map_error_impl(*this, std::forward(f));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR decltype(map_error_impl(std::declval(),
    +                                                   std::declval()))
    +  map_error(F &&f) && {
    +    return map_error_impl(std::move(*this), std::forward(f));
    +  }
    +  template 
    +  constexpr decltype(map_error_impl(std::declval(),
    +                                    std::declval()))
    +  map_error(F &&f) const & {
    +    return map_error_impl(*this, std::forward(f));
    +  }
    +
    +#ifndef TL_EXPECTED_NO_CONSTRR
    +  template 
    +  constexpr decltype(map_error_impl(std::declval(),
    +                                    std::declval()))
    +  map_error(F &&f) const && {
    +    return map_error_impl(std::move(*this), std::forward(f));
    +  }
    +#endif
    +#endif
    +  template 
    +  expected TL_EXPECTED_11_CONSTEXPR or_else(F &&f) & {
    +    return or_else_impl(*this, std::forward(f));
    +  }
    +
    +  template 
    +  expected TL_EXPECTED_11_CONSTEXPR or_else(F &&f) && {
    +    return or_else_impl(std::move(*this), std::forward(f));
    +  }
    +
    +  template 
    +  expected constexpr or_else(F &&f) const & {
    +    return or_else_impl(*this, std::forward(f));
    +  }
    +
    +#ifndef TL_EXPECTED_NO_CONSTRR
    +  template 
    +  expected constexpr or_else(F &&f) const && {
    +    return or_else_impl(std::move(*this), std::forward(f));
    +  }
    +#endif
    +  constexpr expected() = default;
    +  constexpr expected(const expected &rhs) = default;
    +  constexpr expected(expected &&rhs) = default;
    +  expected &operator=(const expected &rhs) = default;
    +  expected &operator=(expected &&rhs) = default;
    +
    +  template ::value> * =
    +                nullptr>
    +  constexpr expected(in_place_t, Args &&...args)
    +      : impl_base(in_place, std::forward(args)...),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr expected(in_place_t, std::initializer_list il, Args &&...args)
    +      : impl_base(in_place, il, std::forward(args)...),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template ::value> * =
    +                nullptr,
    +            detail::enable_if_t::value> * =
    +                nullptr>
    +  explicit constexpr expected(const unexpected &e)
    +      : impl_base(unexpect, e.value()),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template <
    +      class G = E,
    +      detail::enable_if_t::value> * =
    +          nullptr,
    +      detail::enable_if_t::value> * = nullptr>
    +  constexpr expected(unexpected const &e)
    +      : impl_base(unexpect, e.value()),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template <
    +      class G = E,
    +      detail::enable_if_t::value> * = nullptr,
    +      detail::enable_if_t::value> * = nullptr>
    +  explicit constexpr expected(unexpected &&e) noexcept(
    +      std::is_nothrow_constructible::value)
    +      : impl_base(unexpect, std::move(e.value())),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template <
    +      class G = E,
    +      detail::enable_if_t::value> * = nullptr,
    +      detail::enable_if_t::value> * = nullptr>
    +  constexpr expected(unexpected &&e) noexcept(
    +      std::is_nothrow_constructible::value)
    +      : impl_base(unexpect, std::move(e.value())),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template ::value> * =
    +                nullptr>
    +  constexpr explicit expected(unexpect_t, Args &&...args)
    +      : impl_base(unexpect, std::forward(args)...),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template  &, Args &&...>::value> * = nullptr>
    +  constexpr explicit expected(unexpect_t, std::initializer_list il,
    +                              Args &&...args)
    +      : impl_base(unexpect, il, std::forward(args)...),
    +        ctor_base(detail::default_constructor_tag{}) {}
    +
    +  template ::value &&
    +                                  std::is_convertible::value)> * =
    +                nullptr,
    +            detail::expected_enable_from_other
    +                * = nullptr>
    +  explicit TL_EXPECTED_11_CONSTEXPR expected(const expected &rhs)
    +      : ctor_base(detail::default_constructor_tag{}) {
    +    if (rhs.has_value()) {
    +      this->construct(*rhs);
    +    } else {
    +      this->construct_error(rhs.error());
    +    }
    +  }
    +
    +  template ::value &&
    +                                 std::is_convertible::value)> * =
    +                nullptr,
    +            detail::expected_enable_from_other
    +                * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR expected(const expected &rhs)
    +      : ctor_base(detail::default_constructor_tag{}) {
    +    if (rhs.has_value()) {
    +      this->construct(*rhs);
    +    } else {
    +      this->construct_error(rhs.error());
    +    }
    +  }
    +
    +  template <
    +      class U, class G,
    +      detail::enable_if_t::value &&
    +                            std::is_convertible::value)> * = nullptr,
    +      detail::expected_enable_from_other * = nullptr>
    +  explicit TL_EXPECTED_11_CONSTEXPR expected(expected &&rhs)
    +      : ctor_base(detail::default_constructor_tag{}) {
    +    if (rhs.has_value()) {
    +      this->construct(std::move(*rhs));
    +    } else {
    +      this->construct_error(std::move(rhs.error()));
    +    }
    +  }
    +
    +  template <
    +      class U, class G,
    +      detail::enable_if_t<(std::is_convertible::value &&
    +                           std::is_convertible::value)> * = nullptr,
    +      detail::expected_enable_from_other * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR expected(expected &&rhs)
    +      : ctor_base(detail::default_constructor_tag{}) {
    +    if (rhs.has_value()) {
    +      this->construct(std::move(*rhs));
    +    } else {
    +      this->construct_error(std::move(rhs.error()));
    +    }
    +  }
    +
    +  template <
    +      class U = T,
    +      detail::enable_if_t::value> * = nullptr,
    +      detail::expected_enable_forward_value * = nullptr>
    +  explicit TL_EXPECTED_MSVC2015_CONSTEXPR expected(U &&v)
    +      : expected(in_place, std::forward(v)) {}
    +
    +  template <
    +      class U = T,
    +      detail::enable_if_t::value> * = nullptr,
    +      detail::expected_enable_forward_value * = nullptr>
    +  TL_EXPECTED_MSVC2015_CONSTEXPR expected(U &&v)
    +      : expected(in_place, std::forward(v)) {}
    +
    +  template <
    +      class U = T, class G = T,
    +      detail::enable_if_t::value> * =
    +          nullptr,
    +      detail::enable_if_t::value> * = nullptr,
    +      detail::enable_if_t<
    +          (!std::is_same, detail::decay_t>::value &&
    +           !detail::conjunction,
    +                                std::is_same>>::value &&
    +           std::is_constructible::value &&
    +           std::is_assignable::value &&
    +           std::is_nothrow_move_constructible::value)> * = nullptr>
    +  expected &operator=(U &&v) {
    +    if (has_value()) {
    +      val() = std::forward(v);
    +    } else {
    +      err().~unexpected();
    +      ::new (valptr()) T(std::forward(v));
    +      this->m_has_val = true;
    +    }
    +
    +    return *this;
    +  }
    +
    +  template <
    +      class U = T, class G = T,
    +      detail::enable_if_t::value> * =
    +          nullptr,
    +      detail::enable_if_t::value> * = nullptr,
    +      detail::enable_if_t<
    +          (!std::is_same, detail::decay_t>::value &&
    +           !detail::conjunction,
    +                                std::is_same>>::value &&
    +           std::is_constructible::value &&
    +           std::is_assignable::value &&
    +           std::is_nothrow_move_constructible::value)> * = nullptr>
    +  expected &operator=(U &&v) {
    +    if (has_value()) {
    +      val() = std::forward(v);
    +    } else {
    +      auto tmp = std::move(err());
    +      err().~unexpected();
    +
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +      try {
    +        ::new (valptr()) T(std::forward(v));
    +        this->m_has_val = true;
    +      } catch (...) {
    +        err() = std::move(tmp);
    +        throw;
    +      }
    +#else
    +      ::new (valptr()) T(std::forward(v));
    +      this->m_has_val = true;
    +#endif
    +    }
    +
    +    return *this;
    +  }
    +
    +  template ::value &&
    +                                std::is_assignable::value> * = nullptr>
    +  expected &operator=(const unexpected &rhs) {
    +    if (!has_value()) {
    +      err() = rhs;
    +    } else {
    +      this->destroy_val();
    +      ::new (errptr()) unexpected(rhs);
    +      this->m_has_val = false;
    +    }
    +
    +    return *this;
    +  }
    +
    +  template ::value &&
    +                                std::is_move_assignable::value> * = nullptr>
    +  expected &operator=(unexpected &&rhs) noexcept {
    +    if (!has_value()) {
    +      err() = std::move(rhs);
    +    } else {
    +      this->destroy_val();
    +      ::new (errptr()) unexpected(std::move(rhs));
    +      this->m_has_val = false;
    +    }
    +
    +    return *this;
    +  }
    +
    +  template ::value> * = nullptr>
    +  void emplace(Args &&...args) {
    +    if (has_value()) {
    +      val().~T();
    +    } else {
    +      err().~unexpected();
    +      this->m_has_val = true;
    +    }
    +    ::new (valptr()) T(std::forward(args)...);
    +  }
    +
    +  template ::value> * = nullptr>
    +  void emplace(Args &&...args) {
    +    if (has_value()) {
    +      val().~T();
    +      ::new (valptr()) T(std::forward(args)...);
    +    } else {
    +      auto tmp = std::move(err());
    +      err().~unexpected();
    +
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +      try {
    +        ::new (valptr()) T(std::forward(args)...);
    +        this->m_has_val = true;
    +      } catch (...) {
    +        err() = std::move(tmp);
    +        throw;
    +      }
    +#else
    +      ::new (valptr()) T(std::forward(args)...);
    +      this->m_has_val = true;
    +#endif
    +    }
    +  }
    +
    +  template  &, Args &&...>::value> * = nullptr>
    +  void emplace(std::initializer_list il, Args &&...args) {
    +    if (has_value()) {
    +      T t(il, std::forward(args)...);
    +      val() = std::move(t);
    +    } else {
    +      err().~unexpected();
    +      ::new (valptr()) T(il, std::forward(args)...);
    +      this->m_has_val = true;
    +    }
    +  }
    +
    +  template  &, Args &&...>::value> * = nullptr>
    +  void emplace(std::initializer_list il, Args &&...args) {
    +    if (has_value()) {
    +      T t(il, std::forward(args)...);
    +      val() = std::move(t);
    +    } else {
    +      auto tmp = std::move(err());
    +      err().~unexpected();
    +
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +      try {
    +        ::new (valptr()) T(il, std::forward(args)...);
    +        this->m_has_val = true;
    +      } catch (...) {
    +        err() = std::move(tmp);
    +        throw;
    +      }
    +#else
    +      ::new (valptr()) T(il, std::forward(args)...);
    +      this->m_has_val = true;
    +#endif
    +    }
    +  }
    +
    + private:
    +  using t_is_void = std::true_type;
    +  using t_is_not_void = std::false_type;
    +  using t_is_nothrow_move_constructible = std::true_type;
    +  using move_constructing_t_can_throw = std::false_type;
    +  using e_is_nothrow_move_constructible = std::true_type;
    +  using move_constructing_e_can_throw = std::false_type;
    +
    +  void swap_where_both_have_value(expected & /*rhs*/, t_is_void) noexcept {
    +    // swapping void is a no-op
    +  }
    +
    +  void swap_where_both_have_value(expected &rhs, t_is_not_void) {
    +    using std::swap;
    +    swap(val(), rhs.val());
    +  }
    +
    +  void swap_where_only_one_has_value(expected &rhs, t_is_void) noexcept(
    +      std::is_nothrow_move_constructible::value) {
    +    ::new (errptr()) unexpected_type(std::move(rhs.err()));
    +    rhs.err().~unexpected_type();
    +    std::swap(this->m_has_val, rhs.m_has_val);
    +  }
    +
    +  void swap_where_only_one_has_value(expected &rhs, t_is_not_void) {
    +    swap_where_only_one_has_value_and_t_is_not_void(
    +        rhs, typename std::is_nothrow_move_constructible::type{},
    +        typename std::is_nothrow_move_constructible::type{});
    +  }
    +
    +  void swap_where_only_one_has_value_and_t_is_not_void(
    +      expected &rhs, t_is_nothrow_move_constructible,
    +      e_is_nothrow_move_constructible) noexcept {
    +    auto temp = std::move(val());
    +    val().~T();
    +    ::new (errptr()) unexpected_type(std::move(rhs.err()));
    +    rhs.err().~unexpected_type();
    +    ::new (rhs.valptr()) T(std::move(temp));
    +    std::swap(this->m_has_val, rhs.m_has_val);
    +  }
    +
    +  void swap_where_only_one_has_value_and_t_is_not_void(
    +      expected &rhs, t_is_nothrow_move_constructible,
    +      move_constructing_e_can_throw) {
    +    auto temp = std::move(val());
    +    val().~T();
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +    try {
    +      ::new (errptr()) unexpected_type(std::move(rhs.err()));
    +      rhs.err().~unexpected_type();
    +      ::new (rhs.valptr()) T(std::move(temp));
    +      std::swap(this->m_has_val, rhs.m_has_val);
    +    } catch (...) {
    +      val() = std::move(temp);
    +      throw;
    +    }
    +#else
    +    ::new (errptr()) unexpected_type(std::move(rhs.err()));
    +    rhs.err().~unexpected_type();
    +    ::new (rhs.valptr()) T(std::move(temp));
    +    std::swap(this->m_has_val, rhs.m_has_val);
    +#endif
    +  }
    +
    +  void swap_where_only_one_has_value_and_t_is_not_void(
    +      expected &rhs, move_constructing_t_can_throw,
    +      e_is_nothrow_move_constructible) {
    +    auto temp = std::move(rhs.err());
    +    rhs.err().~unexpected_type();
    +#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    +    try {
    +      ::new (rhs.valptr()) T(std::move(val()));
    +      val().~T();
    +      ::new (errptr()) unexpected_type(std::move(temp));
    +      std::swap(this->m_has_val, rhs.m_has_val);
    +    } catch (...) {
    +      rhs.err() = std::move(temp);
    +      throw;
    +    }
    +#else
    +    ::new (rhs.valptr()) T(std::move(val()));
    +    val().~T();
    +    ::new (errptr()) unexpected_type(std::move(temp));
    +    std::swap(this->m_has_val, rhs.m_has_val);
    +#endif
    +  }
    +
    + public:
    +  template 
    +  detail::enable_if_t::value &&
    +                      detail::is_swappable::value &&
    +                      (std::is_nothrow_move_constructible::value ||
    +                       std::is_nothrow_move_constructible::value)>
    +  swap(expected &rhs) noexcept(
    +      std::is_nothrow_move_constructible::value
    +          &&detail::is_nothrow_swappable::value
    +              &&std::is_nothrow_move_constructible::value
    +                  &&detail::is_nothrow_swappable::value) {
    +    if (has_value() && rhs.has_value()) {
    +      swap_where_both_have_value(rhs, typename std::is_void::type{});
    +    } else if (!has_value() && rhs.has_value()) {
    +      rhs.swap(*this);
    +    } else if (has_value()) {
    +      swap_where_only_one_has_value(rhs, typename std::is_void::type{});
    +    } else {
    +      using std::swap;
    +      swap(err(), rhs.err());
    +    }
    +  }
    +
    +  constexpr const T *operator->() const { return valptr(); }
    +  TL_EXPECTED_11_CONSTEXPR T *operator->() { return valptr(); }
    +
    +  template ::value> * = nullptr>
    +  constexpr const U &operator*() const & {
    +    return val();
    +  }
    +  template ::value> * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR U &operator*() & {
    +    return val();
    +  }
    +  template ::value> * = nullptr>
    +  constexpr const U &&operator*() const && {
    +    return std::move(val());
    +  }
    +  template ::value> * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR U &&operator*() && {
    +    return std::move(val());
    +  }
    +
    +  constexpr bool has_value() const noexcept { return this->m_has_val; }
    +  constexpr explicit operator bool() const noexcept { return this->m_has_val; }
    +
    +  template ::value> * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR const U &value() const & {
    +    if (!has_value())
    +      detail::throw_exception(bad_expected_access(err().value()));
    +    return val();
    +  }
    +  template ::value> * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR U &value() & {
    +    if (!has_value())
    +      detail::throw_exception(bad_expected_access(err().value()));
    +    return val();
    +  }
    +  template ::value> * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR const U &&value() const && {
    +    if (!has_value())
    +      detail::throw_exception(bad_expected_access(std::move(err()).value()));
    +    return std::move(val());
    +  }
    +  template ::value> * = nullptr>
    +  TL_EXPECTED_11_CONSTEXPR U &&value() && {
    +    if (!has_value())
    +      detail::throw_exception(bad_expected_access(std::move(err()).value()));
    +    return std::move(val());
    +  }
    +
    +  constexpr const E &error() const & { return err().value(); }
    +  TL_EXPECTED_11_CONSTEXPR E &error() & { return err().value(); }
    +  constexpr const E &&error() const && { return std::move(err().value()); }
    +  TL_EXPECTED_11_CONSTEXPR E &&error() && { return std::move(err().value()); }
    +
    +  template 
    +  constexpr T value_or(U &&v) const & {
    +    static_assert(std::is_copy_constructible::value &&
    +                      std::is_convertible::value,
    +                  "T must be copy-constructible and convertible to from U&&");
    +    return bool(*this) ? **this : static_cast(std::forward(v));
    +  }
    +  template 
    +  TL_EXPECTED_11_CONSTEXPR T value_or(U &&v) && {
    +    static_assert(std::is_move_constructible::value &&
    +                      std::is_convertible::value,
    +                  "T must be move-constructible and convertible to from U&&");
    +    return bool(*this) ? std::move(**this) : static_cast(std::forward(v));
    +  }
    +};
    +
    +namespace detail {
    +template 
    +using exp_t = typename detail::decay_t::value_type;
    +template 
    +using err_t = typename detail::decay_t::error_type;
    +template 
    +using ret_t = expected>;
    +
    +#ifdef TL_EXPECTED_CXX14
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              *std::declval()))>
    +constexpr auto and_then_impl(Exp &&exp, F &&f) {
    +  static_assert(detail::is_expected::value, "F must return an expected");
    +
    +  return exp.has_value()
    +             ? detail::invoke(std::forward(f), *std::forward(exp))
    +             : Ret(unexpect, std::forward(exp).error());
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval()))>
    +constexpr auto and_then_impl(Exp &&exp, F &&f) {
    +  static_assert(detail::is_expected::value, "F must return an expected");
    +
    +  return exp.has_value() ? detail::invoke(std::forward(f))
    +                         : Ret(unexpect, std::forward(exp).error());
    +}
    +#else
    +template 
    +struct TC;
    +template (),
    +                                              *std::declval())),
    +          detail::enable_if_t>::value> * = nullptr>
    +auto and_then_impl(Exp &&exp, F &&f) -> Ret {
    +  static_assert(detail::is_expected::value, "F must return an expected");
    +
    +  return exp.has_value()
    +             ? detail::invoke(std::forward(f), *std::forward(exp))
    +             : Ret(unexpect, std::forward(exp).error());
    +}
    +
    +template ())),
    +          detail::enable_if_t>::value> * = nullptr>
    +constexpr auto and_then_impl(Exp &&exp, F &&f) -> Ret {
    +  static_assert(detail::is_expected::value, "F must return an expected");
    +
    +  return exp.has_value() ? detail::invoke(std::forward(f))
    +                         : Ret(unexpect, std::forward(exp).error());
    +}
    +#endif
    +
    +#ifdef TL_EXPECTED_CXX14
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              *std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +constexpr auto expected_map_impl(Exp &&exp, F &&f) {
    +  using result = ret_t>;
    +  return exp.has_value() ? result(detail::invoke(std::forward(f),
    +                                                 *std::forward(exp)))
    +                         : result(unexpect, std::forward(exp).error());
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              *std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +auto expected_map_impl(Exp &&exp, F &&f) {
    +  using result = expected>;
    +  if (exp.has_value()) {
    +    detail::invoke(std::forward(f), *std::forward(exp));
    +    return result();
    +  }
    +
    +  return result(unexpect, std::forward(exp).error());
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +constexpr auto expected_map_impl(Exp &&exp, F &&f) {
    +  using result = ret_t>;
    +  return exp.has_value() ? result(detail::invoke(std::forward(f)))
    +                         : result(unexpect, std::forward(exp).error());
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +auto expected_map_impl(Exp &&exp, F &&f) {
    +  using result = expected>;
    +  if (exp.has_value()) {
    +    detail::invoke(std::forward(f));
    +    return result();
    +  }
    +
    +  return result(unexpect, std::forward(exp).error());
    +}
    +#else
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              *std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +
    +constexpr auto expected_map_impl(Exp &&exp, F &&f)
    +    -> ret_t> {
    +  using result = ret_t>;
    +
    +  return exp.has_value() ? result(detail::invoke(std::forward(f),
    +                                                 *std::forward(exp)))
    +                         : result(unexpect, std::forward(exp).error());
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              *std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +
    +auto expected_map_impl(Exp &&exp, F &&f) -> expected> {
    +  if (exp.has_value()) {
    +    detail::invoke(std::forward(f), *std::forward(exp));
    +    return {};
    +  }
    +
    +  return unexpected>(std::forward(exp).error());
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +
    +constexpr auto expected_map_impl(Exp &&exp, F &&f)
    +    -> ret_t> {
    +  using result = ret_t>;
    +
    +  return exp.has_value() ? result(detail::invoke(std::forward(f)))
    +                         : result(unexpect, std::forward(exp).error());
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval())),
    +          detail::enable_if_t::value> * = nullptr>
    +
    +auto expected_map_impl(Exp &&exp, F &&f) -> expected> {
    +  if (exp.has_value()) {
    +    detail::invoke(std::forward(f));
    +    return {};
    +  }
    +
    +  return unexpected>(std::forward(exp).error());
    +}
    +#endif
    +
    +#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) && \
    +    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +constexpr auto map_error_impl(Exp &&exp, F &&f) {
    +  using result = expected, detail::decay_t>;
    +  return exp.has_value()
    +             ? result(*std::forward(exp))
    +             : result(unexpect, detail::invoke(std::forward(f),
    +                                               std::forward(exp).error()));
    +}
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +auto map_error_impl(Exp &&exp, F &&f) {
    +  using result = expected, monostate>;
    +  if (exp.has_value()) {
    +    return result(*std::forward(exp));
    +  }
    +
    +  detail::invoke(std::forward(f), std::forward(exp).error());
    +  return result(unexpect, monostate{});
    +}
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +constexpr auto map_error_impl(Exp &&exp, F &&f) {
    +  using result = expected, detail::decay_t>;
    +  return exp.has_value()
    +             ? result()
    +             : result(unexpect, detail::invoke(std::forward(f),
    +                                               std::forward(exp).error()));
    +}
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +auto map_error_impl(Exp &&exp, F &&f) {
    +  using result = expected, monostate>;
    +  if (exp.has_value()) {
    +    return result();
    +  }
    +
    +  detail::invoke(std::forward(f), std::forward(exp).error());
    +  return result(unexpect, monostate{});
    +}
    +#else
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +constexpr auto map_error_impl(Exp &&exp, F &&f)
    +    -> expected, detail::decay_t> {
    +  using result = expected, detail::decay_t>;
    +
    +  return exp.has_value()
    +             ? result(*std::forward(exp))
    +             : result(unexpect, detail::invoke(std::forward(f),
    +                                               std::forward(exp).error()));
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +auto map_error_impl(Exp &&exp, F &&f) -> expected, monostate> {
    +  using result = expected, monostate>;
    +  if (exp.has_value()) {
    +    return result(*std::forward(exp));
    +  }
    +
    +  detail::invoke(std::forward(f), std::forward(exp).error());
    +  return result(unexpect, monostate{});
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +constexpr auto map_error_impl(Exp &&exp, F &&f)
    +    -> expected, detail::decay_t> {
    +  using result = expected, detail::decay_t>;
    +
    +  return exp.has_value()
    +             ? result()
    +             : result(unexpect, detail::invoke(std::forward(f),
    +                                               std::forward(exp).error()));
    +}
    +
    +template >::value> * = nullptr,
    +          class Ret = decltype(detail::invoke(std::declval(),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +auto map_error_impl(Exp &&exp, F &&f) -> expected, monostate> {
    +  using result = expected, monostate>;
    +  if (exp.has_value()) {
    +    return result();
    +  }
    +
    +  detail::invoke(std::forward(f), std::forward(exp).error());
    +  return result(unexpect, monostate{});
    +}
    +#endif
    +
    +#ifdef TL_EXPECTED_CXX14
    +template (),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +constexpr auto or_else_impl(Exp &&exp, F &&f) {
    +  static_assert(detail::is_expected::value, "F must return an expected");
    +  return exp.has_value() ? std::forward(exp)
    +                         : detail::invoke(std::forward(f),
    +                                          std::forward(exp).error());
    +}
    +
    +template (),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +detail::decay_t or_else_impl(Exp &&exp, F &&f) {
    +  return exp.has_value() ? std::forward(exp)
    +                         : (detail::invoke(std::forward(f),
    +                                           std::forward(exp).error()),
    +                            std::forward(exp));
    +}
    +#else
    +template (),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +auto or_else_impl(Exp &&exp, F &&f) -> Ret {
    +  static_assert(detail::is_expected::value, "F must return an expected");
    +  return exp.has_value() ? std::forward(exp)
    +                         : detail::invoke(std::forward(f),
    +                                          std::forward(exp).error());
    +}
    +
    +template (),
    +                                              std::declval().error())),
    +          detail::enable_if_t::value> * = nullptr>
    +detail::decay_t or_else_impl(Exp &&exp, F &&f) {
    +  return exp.has_value() ? std::forward(exp)
    +                         : (detail::invoke(std::forward(f),
    +                                           std::forward(exp).error()),
    +                            std::forward(exp));
    +}
    +#endif
    +}  // namespace detail
    +
    +template 
    +constexpr bool operator==(const expected &lhs,
    +                          const expected &rhs) {
    +  return (lhs.has_value() != rhs.has_value())
    +             ? false
    +             : (!lhs.has_value() ? lhs.error() == rhs.error() : *lhs == *rhs);
    +}
    +template 
    +constexpr bool operator!=(const expected &lhs,
    +                          const expected &rhs) {
    +  return (lhs.has_value() != rhs.has_value())
    +             ? true
    +             : (!lhs.has_value() ? lhs.error() != rhs.error() : *lhs != *rhs);
    +}
    +template 
    +constexpr bool operator==(const expected &lhs,
    +                          const expected &rhs) {
    +  return (lhs.has_value() != rhs.has_value())
    +             ? false
    +             : (!lhs.has_value() ? lhs.error() == rhs.error() : true);
    +}
    +template 
    +constexpr bool operator!=(const expected &lhs,
    +                          const expected &rhs) {
    +  return (lhs.has_value() != rhs.has_value())
    +             ? true
    +             : (!lhs.has_value() ? lhs.error() == rhs.error() : false);
    +}
    +
    +template 
    +constexpr bool operator==(const expected &x, const U &v) {
    +  return x.has_value() ? *x == v : false;
    +}
    +template 
    +constexpr bool operator==(const U &v, const expected &x) {
    +  return x.has_value() ? *x == v : false;
    +}
    +template 
    +constexpr bool operator!=(const expected &x, const U &v) {
    +  return x.has_value() ? *x != v : true;
    +}
    +template 
    +constexpr bool operator!=(const U &v, const expected &x) {
    +  return x.has_value() ? *x != v : true;
    +}
    +
    +template 
    +constexpr bool operator==(const expected &x, const unexpected &e) {
    +  return x.has_value() ? false : x.error() == e.value();
    +}
    +template 
    +constexpr bool operator==(const unexpected &e, const expected &x) {
    +  return x.has_value() ? false : x.error() == e.value();
    +}
    +template 
    +constexpr bool operator!=(const expected &x, const unexpected &e) {
    +  return x.has_value() ? true : x.error() != e.value();
    +}
    +template 
    +constexpr bool operator!=(const unexpected &e, const expected &x) {
    +  return x.has_value() ? true : x.error() != e.value();
    +}
    +
    +template ::value ||
    +                               std::is_move_constructible::value) &&
    +                              detail::is_swappable::value &&
    +                              std::is_move_constructible::value &&
    +                              detail::is_swappable::value> * = nullptr>
    +void swap(expected &lhs,
    +          expected &rhs) noexcept(noexcept(lhs.swap(rhs))) {
    +  lhs.swap(rhs);
    +}
    +}  // namespace tl
    +
    +#endif
    +/* end file include/ada/expected.h */
    +/* begin file include/ada/url_aggregator.h */
    +/**
    + * @file url_aggregator.h
    + * @brief Declaration for the basic URL definitions
    + */
    +#ifndef ADA_URL_AGGREGATOR_H
    +#define ADA_URL_AGGREGATOR_H
    +
    +
    +#include 
    +#include 
    +
    +namespace ada {
    +
    +/**
    + * @brief Lightweight URL struct.
    + *
    + * @details The url_aggregator class aims to minimize temporary memory
    + * allocation while representing a parsed URL. Internally, it contains a single
    + * normalized URL (the href), and it makes available the components, mostly
    + * using std::string_view.
    + */
    +struct url_aggregator : url_base {
    +  url_aggregator() = default;
    +  url_aggregator(const url_aggregator &u) = default;
    +  url_aggregator(url_aggregator &&u) noexcept = default;
    +  url_aggregator &operator=(url_aggregator &&u) noexcept = default;
    +  url_aggregator &operator=(const url_aggregator &u) = default;
    +  ~url_aggregator() = default;
    +
    +  bool set_href(const std::string_view input);
    +  bool set_host(const std::string_view input);
    +  bool set_hostname(const std::string_view input);
    +  bool set_protocol(const std::string_view input);
    +  bool set_username(const std::string_view input);
    +  bool set_password(const std::string_view input);
    +  bool set_port(const std::string_view input);
    +  bool set_pathname(const std::string_view input);
    +  void set_search(const std::string_view input);
    +  void set_hash(const std::string_view input);
    +  inline void set_scheme(std::string_view new_scheme) noexcept;
    +  /** @private fast function to set the scheme from a view with a colon in the
    +   * buffer, does not change type */
    +  inline void set_scheme_from_view_with_colon(
    +      std::string_view new_scheme_with_colon) noexcept;
    +
    +  inline void copy_scheme(const url_aggregator &u) noexcept;
    +
    +  [[nodiscard]] bool has_valid_domain() const noexcept override;
    +
    +  /** @private */
    +  inline bool has_authority() const noexcept;
    +  /** @private set this URL's type to file */
    +  inline void set_protocol_as_file();
    +  /**
    +   * The origin getter steps are to return the serialization of this’s URL’s
    +   * origin. [HTML]
    +   * @return a newly allocated string.
    +   * @see https://url.spec.whatwg.org/#concept-url-origin
    +   */
    +  [[nodiscard]] std::string get_origin() const noexcept override;
    +  /**
    +   * Return the normalized string.
    +   * This function does not allocate memory.
    +   * It is highly efficient.
    +   * @return a constant reference to the underlying normalized URL.
    +   * @see https://url.spec.whatwg.org/#dom-url-href
    +   * @see https://url.spec.whatwg.org/#concept-url-serializer
    +   */
    +  inline std::string_view get_href() const noexcept;
    +  /**
    +   * The username getter steps are to return this’s URL’s username.
    +   * This function does not allocate memory.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-username
    +   */
    +  [[nodiscard]] std::string_view get_username() const noexcept;
    +  /**
    +   * The password getter steps are to return this’s URL’s password.
    +   * This function does not allocate memory.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-password
    +   */
    +  [[nodiscard]] std::string_view get_password() const noexcept;
    +  /**
    +   * Return this’s URL’s port, serialized.
    +   * This function does not allocate memory.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-port
    +   */
    +  [[nodiscard]] std::string_view get_port() const noexcept;
    +  /**
    +   * Return U+0023 (#), followed by this’s URL’s fragment.
    +   * This function does not allocate memory.
    +   * @return a lightweight std::string_view..
    +   * @see https://url.spec.whatwg.org/#dom-url-hash
    +   */
    +  [[nodiscard]] std::string_view get_hash() const noexcept;
    +  /**
    +   * Return url’s host, serialized, followed by U+003A (:) and url’s port,
    +   * serialized.
    +   * This function does not allocate memory.
    +   * When there is no host, this function returns the empty view.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-host
    +   */
    +  [[nodiscard]] std::string_view get_host() const noexcept;
    +  /**
    +   * Return this’s URL’s host, serialized.
    +   * This function does not allocate memory.
    +   * When there is no host, this function returns the empty view.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-hostname
    +   */
    +  [[nodiscard]] std::string_view get_hostname() const noexcept;
    +  /**
    +   * The pathname getter steps are to return the result of URL path serializing
    +   * this’s URL.
    +   * This function does not allocate memory.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-pathname
    +   */
    +  [[nodiscard]] std::string_view get_pathname() const noexcept;
    +  /**
    +   * Returns true if neither the search, nor the hash nor the pathname
    +   * have been set.
    +   * @return true if the buffer is ready to receive the path.
    +   */
    +  [[nodiscard]] ada_really_inline bool is_at_path() const noexcept;
    +  /**
    +   * Compute the pathname length in bytes witout instantiating a view or a
    +   * string.
    +   * @return size of the pathname in bytes
    +   * @see https://url.spec.whatwg.org/#dom-url-pathname
    +   */
    +  ada_really_inline uint32_t get_pathname_length() const noexcept;
    +  /**
    +   * Return U+003F (?), followed by this’s URL’s query.
    +   * This function does not allocate memory.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-search
    +   */
    +  [[nodiscard]] std::string_view get_search() const noexcept;
    +  /**
    +   * The protocol getter steps are to return this’s URL’s scheme, followed by
    +   * U+003A (:).
    +   * This function does not allocate memory.
    +   * @return a lightweight std::string_view.
    +   * @see https://url.spec.whatwg.org/#dom-url-protocol
    +   */
    +  [[nodiscard]] std::string_view get_protocol() const noexcept;
    +
    +  /**
    +   * A URL includes credentials if its username or password is not the empty
    +   * string.
    +   */
    +  [[nodiscard]] ada_really_inline bool includes_credentials() const noexcept;
    +
    +  /**
    +   * @private
    +   *
    +   * A URL cannot have a username/password/port if its host is null or the empty
    +   * string, or its scheme is "file".
    +   */
    +  [[nodiscard]] inline bool cannot_have_credentials_or_port() const;
    +
    +  /** @private */
    +  template 
    +  bool set_host_or_hostname(const std::string_view input);
    +
    +  /** @private */
    +  ada_really_inline bool parse_host(std::string_view input);
    +
    +  /** @private */
    +  inline void update_base_authority(std::string_view base_buffer,
    +                                    const ada::url_components &base);
    +  /** @private */
    +  inline void update_unencoded_base_hash(std::string_view input);
    +  /** @private */
    +  inline void update_base_hostname(std::string_view input);
    +  /** @private */
    +  inline void update_base_search(std::string_view input);
    +  /** @private */
    +  inline void update_base_search(std::string_view input,
    +                                 const uint8_t *query_percent_encode_set);
    +  /** @private */
    +  inline void update_base_pathname(const std::string_view input);
    +  /** @private */
    +  inline void update_base_username(const std::string_view input);
    +  /** @private */
    +  inline void append_base_username(const std::string_view input);
    +  /** @private */
    +  inline void update_base_password(const std::string_view input);
    +  /** @private */
    +  inline void append_base_password(const std::string_view input);
    +  /** @private */
    +  inline void update_base_port(uint32_t input);
    +  /** @private */
    +  inline void append_base_pathname(const std::string_view input);
    +  /** @private */
    +  inline uint32_t retrieve_base_port() const;
    +  /** @private */
    +  inline void clear_base_port();
    +  /** @private if there is no hostname, then this function does nothing, if
    +   * there is, we make it empty */
    +  inline void clear_base_hostname();
    +  /** @private */
    +  inline void clear_base_hash();
    +  /** @private */
    +  inline void clear_base_pathname() override;
    +  /** @private */
    +  inline void clear_base_search() override;
    +  /** @private */
    +  inline void clear_base_password();
    +  /** @private */
    +  inline bool base_fragment_has_value() const override;
    +  /** @private */
    +  inline bool base_search_has_value() const override;
    +  /** @private */
    +  inline bool has_dash_dot() const noexcept;
    +  /** @private */
    +  void delete_dash_dot();
    +  /** @return true if it has an host but it is the empty string */
    +  [[nodiscard]] inline bool has_empty_hostname() const noexcept;
    +  /** @return true if it has a host (included an empty host) */
    +  [[nodiscard]] inline bool has_hostname() const noexcept;
    +  /** @private */
    +  [[nodiscard]] inline bool has_non_empty_username() const noexcept;
    +  /** @private */
    +  [[nodiscard]] inline bool has_non_empty_password() const noexcept;
    +  /** @private */
    +  [[nodiscard]] inline bool has_password() const noexcept;
    +  /** @return true if the URL has a (non default) port */
    +  [[nodiscard]] inline bool has_port() const noexcept;
    +  /** @private */
    +  inline void consume_prepared_path(std::string_view input);
    +  /** @private */
    +  template 
    +  [[nodiscard]] ada_really_inline bool parse_scheme_with_colon(
    +      const std::string_view input);
    +
    +  /** @private */
    +  ada_really_inline uint32_t replace_and_resize(uint32_t start, uint32_t end,
    +                                                std::string_view input);
    +
    +  /**
    +   * Useful for implementing efficient serialization for the URL.
    +   *
    +   * https://user:pass@example.com:1234/foo/bar?baz#quux
    +   *       |     |    |          | ^^^^|       |   |
    +   *       |     |    |          | |   |       |   `----- hash_start
    +   *       |     |    |          | |   |       `--------- search_start
    +   *       |     |    |          | |   `----------------- pathname_start
    +   *       |     |    |          | `--------------------- port
    +   *       |     |    |          `----------------------- host_end
    +   *       |     |    `---------------------------------- host_start
    +   *       |     `--------------------------------------- username_end
    +   *       `--------------------------------------------- protocol_end
    +   *
    +   * Inspired after servo/url
    +   *
    +   * @return a constant reference to the underlying component attribute.
    +   *
    +   * @see
    +   * https://github.com/servo/rust-url/blob/b65a45515c10713f6d212e6726719a020203cc98/url/src/quirks.rs#L31
    +   */
    +  [[nodiscard]] ada_really_inline const ada::url_components &get_components()
    +      const noexcept;
    +  /**
    +   * Returns a string representation of this URL.
    +   */
    +  std::string to_string() const override;
    +  /**
    +   * Returns a string diagram of this URL.
    +   */
    +  std::string to_diagram() const;
    +
    +  /**
    +   * Verifies that the parsed URL could be valid. Useful for debugging purposes.
    +   * @return true if the URL is valid, otherwise return true of the offsets are
    +   * possible.
    +   */
    +  bool validate() const noexcept;
    +
    +  /** @private */
    +  inline void add_authority_slashes_if_needed() noexcept;
    +
    +  /**
    +   * @private
    +   * To optimize performance, you may indicate how much memory to allocate
    +   * within this instance.
    +   */
    +  inline void reserve(uint32_t capacity);
    +
    +  /** @private */
    +  ada_really_inline size_t
    +  parse_port(std::string_view view,
    +             bool check_trailing_content = false) noexcept override;
    +
    + private:
    +  /** @private */
    +  std::string buffer{};
    +
    +  /** @private */
    +  url_components components{};
    +
    +  /**
    +   * @private
    +   *
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#concept-ipv4-parser
    +   */
    +  [[nodiscard]] bool parse_ipv4(std::string_view input);
    +
    +  /**
    +   * @private
    +   *
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#concept-ipv6-parser
    +   */
    +  [[nodiscard]] bool parse_ipv6(std::string_view input);
    +
    +  /**
    +   * @private
    +   *
    +   * Return true on success.
    +   * @see https://url.spec.whatwg.org/#concept-opaque-host-parser
    +   */
    +  [[nodiscard]] bool parse_opaque_host(std::string_view input);
     
    -  template  expected TL_EXPECTED_11_CONSTEXPR or_else(F &&f) && {
    -    return or_else_impl(std::move(*this), std::forward(f));
    -  }
    +  /** @private */
    +  ada_really_inline void parse_path(std::string_view input);
     
    -  template  expected constexpr or_else(F &&f) const & {
    -    return or_else_impl(*this, std::forward(f));
    -  }
    +};  // url_aggregator
    +
    +inline std::ostream &operator<<(std::ostream &out, const ada::url &u);
    +}  // namespace ada
     
    -#ifndef TL_EXPECTED_NO_CONSTRR
    -  template  expected constexpr or_else(F &&f) const && {
    -    return or_else_impl(std::move(*this), std::forward(f));
    -  }
     #endif
    -  constexpr expected() = default;
    -  constexpr expected(const expected &rhs) = default;
    -  constexpr expected(expected &&rhs) = default;
    -  expected &operator=(const expected &rhs) = default;
    -  expected &operator=(expected &&rhs) = default;
    +/* end file include/ada/url_aggregator.h */
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr expected(in_place_t, Args &&...args)
    -      : impl_base(in_place, std::forward(args)...),
    -        ctor_base(detail::default_constructor_tag{}) {}
    +#include 
    +#include 
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr expected(in_place_t, std::initializer_list il, Args &&...args)
    -      : impl_base(in_place, il, std::forward(args)...),
    -        ctor_base(detail::default_constructor_tag{}) {}
    +/**
    + * @namespace ada::parser
    + * @brief Includes the definitions for supported parsers
    + */
    +namespace ada::parser {
     
    -  template ::value> * =
    -                nullptr,
    -            detail::enable_if_t::value> * =
    -                nullptr>
    -  explicit constexpr expected(const unexpected &e)
    -      : impl_base(unexpect, e.value()),
    -        ctor_base(detail::default_constructor_tag{}) {}
    +/**
    + * Parses a url.
    + */
    +template 
    +result_type parse_url(std::string_view user_input,
    +                      const result_type* base_url = nullptr);
     
    -  template <
    -      class G = E,
    -      detail::enable_if_t::value> * =
    -          nullptr,
    -      detail::enable_if_t::value> * = nullptr>
    -  constexpr expected(unexpected const &e)
    -      : impl_base(unexpect, e.value()),
    -        ctor_base(detail::default_constructor_tag{}) {}
    +extern template url_aggregator parse_url(
    +    std::string_view user_input, const url_aggregator* base_url);
    +extern template url parse_url(std::string_view user_input,
    +                                   const url* base_url);
     
    -  template <
    -      class G = E,
    -      detail::enable_if_t::value> * = nullptr,
    -      detail::enable_if_t::value> * = nullptr>
    -  explicit constexpr expected(unexpected &&e) noexcept(
    -      std::is_nothrow_constructible::value)
    -      : impl_base(unexpect, std::move(e.value())),
    -        ctor_base(detail::default_constructor_tag{}) {}
    +}  // namespace ada::parser
     
    -  template <
    -      class G = E,
    -      detail::enable_if_t::value> * = nullptr,
    -      detail::enable_if_t::value> * = nullptr>
    -  constexpr expected(unexpected &&e) noexcept(
    -      std::is_nothrow_constructible::value)
    -      : impl_base(unexpect, std::move(e.value())),
    -        ctor_base(detail::default_constructor_tag{}) {}
    +#endif  // ADA_PARSER_H
    +/* end file include/ada/parser.h */
    +/* begin file include/ada/scheme-inl.h */
    +/**
    + * @file scheme-inl.h
    + * @brief Definitions for the URL scheme.
    + */
    +#ifndef ADA_SCHEME_INL_H
    +#define ADA_SCHEME_INL_H
     
    -  template ::value> * =
    -                nullptr>
    -  constexpr explicit expected(unexpect_t, Args &&...args)
    -      : impl_base(unexpect, std::forward(args)...),
    -        ctor_base(detail::default_constructor_tag{}) {}
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  constexpr explicit expected(unexpect_t, std::initializer_list il,
    -                              Args &&...args)
    -      : impl_base(unexpect, il, std::forward(args)...),
    -        ctor_base(detail::default_constructor_tag{}) {}
    +namespace ada::scheme {
     
    -  template ::value &&
    -                                  std::is_convertible::value)> * =
    -                nullptr,
    -            detail::expected_enable_from_other
    -                * = nullptr>
    -  explicit TL_EXPECTED_11_CONSTEXPR expected(const expected &rhs)
    -      : ctor_base(detail::default_constructor_tag{}) {
    -    if (rhs.has_value()) {
    -      this->construct(*rhs);
    -    } else {
    -      this->construct_error(rhs.error());
    -    }
    +/**
    + * @namespace ada::scheme::details
    + * @brief Includes the definitions for scheme specific entities
    + */
    +namespace details {
    +// for use with is_special and get_special_port
    +// Spaces, if present, are removed from URL.
    +constexpr std::string_view is_special_list[] = {"http", " ",   "https", "ws",
    +                                                "ftp",  "wss", "file",  " "};
    +// for use with get_special_port
    +constexpr uint16_t special_ports[] = {80, 0, 443, 80, 21, 443, 0, 0};
    +}  // namespace details
    +
    +ada_really_inline constexpr bool is_special(std::string_view scheme) {
    +  if (scheme.empty()) {
    +    return false;
    +  }
    +  int hash_value = (2 * scheme.size() + (unsigned)(scheme[0])) & 7;
    +  const std::string_view target = details::is_special_list[hash_value];
    +  return (target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1));
    +}
    +constexpr uint16_t get_special_port(std::string_view scheme) noexcept {
    +  if (scheme.empty()) {
    +    return 0;
       }
    -
    -  template ::value &&
    -                                 std::is_convertible::value)> * =
    -                nullptr,
    -            detail::expected_enable_from_other
    -                * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR expected(const expected &rhs)
    -      : ctor_base(detail::default_constructor_tag{}) {
    -    if (rhs.has_value()) {
    -      this->construct(*rhs);
    -    } else {
    -      this->construct_error(rhs.error());
    -    }
    +  int hash_value = (2 * scheme.size() + (unsigned)(scheme[0])) & 7;
    +  const std::string_view target = details::is_special_list[hash_value];
    +  if ((target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1))) {
    +    return details::special_ports[hash_value];
    +  } else {
    +    return 0;
       }
    -
    -  template <
    -      class U, class G,
    -      detail::enable_if_t::value &&
    -                            std::is_convertible::value)> * = nullptr,
    -      detail::expected_enable_from_other * = nullptr>
    -  explicit TL_EXPECTED_11_CONSTEXPR expected(expected &&rhs)
    -      : ctor_base(detail::default_constructor_tag{}) {
    -    if (rhs.has_value()) {
    -      this->construct(std::move(*rhs));
    -    } else {
    -      this->construct_error(std::move(rhs.error()));
    -    }
    +}
    +constexpr uint16_t get_special_port(ada::scheme::type type) noexcept {
    +  return details::special_ports[int(type)];
    +}
    +constexpr ada::scheme::type get_scheme_type(std::string_view scheme) noexcept {
    +  if (scheme.empty()) {
    +    return ada::scheme::NOT_SPECIAL;
       }
    -
    -  template <
    -      class U, class G,
    -      detail::enable_if_t<(std::is_convertible::value &&
    -                           std::is_convertible::value)> * = nullptr,
    -      detail::expected_enable_from_other * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR expected(expected &&rhs)
    -      : ctor_base(detail::default_constructor_tag{}) {
    -    if (rhs.has_value()) {
    -      this->construct(std::move(*rhs));
    -    } else {
    -      this->construct_error(std::move(rhs.error()));
    -    }
    +  int hash_value = (2 * scheme.size() + (unsigned)(scheme[0])) & 7;
    +  const std::string_view target = details::is_special_list[hash_value];
    +  if ((target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1))) {
    +    return ada::scheme::type(hash_value);
    +  } else {
    +    return ada::scheme::NOT_SPECIAL;
       }
    +}
     
    -  template <
    -      class U = T,
    -      detail::enable_if_t::value> * = nullptr,
    -      detail::expected_enable_forward_value * = nullptr>
    -  explicit TL_EXPECTED_MSVC2015_CONSTEXPR expected(U &&v)
    -      : expected(in_place, std::forward(v)) {}
    +}  // namespace ada::scheme
     
    -  template <
    -      class U = T,
    -      detail::enable_if_t::value> * = nullptr,
    -      detail::expected_enable_forward_value * = nullptr>
    -  TL_EXPECTED_MSVC2015_CONSTEXPR expected(U &&v)
    -      : expected(in_place, std::forward(v)) {}
    +#endif  // ADA_SCHEME_H
    +/* end file include/ada/scheme-inl.h */
    +/* begin file include/ada/url_base-inl.h */
    +/**
    + * @file url_base-inl.h
    + * @brief Inline functions for url base
    + */
    +#ifndef ADA_URL_BASE_INL_H
    +#define ADA_URL_BASE_INL_H
     
    -  template <
    -      class U = T, class G = T,
    -      detail::enable_if_t::value> * =
    -          nullptr,
    -      detail::enable_if_t::value> * = nullptr,
    -      detail::enable_if_t<
    -          (!std::is_same, detail::decay_t>::value &&
    -           !detail::conjunction,
    -                                std::is_same>>::value &&
    -           std::is_constructible::value &&
    -           std::is_assignable::value &&
    -           std::is_nothrow_move_constructible::value)> * = nullptr>
    -  expected &operator=(U &&v) {
    -    if (has_value()) {
    -      val() = std::forward(v);
    -    } else {
    -      err().~unexpected();
    -      ::new (valptr()) T(std::forward(v));
    -      this->m_has_val = true;
    -    }
     
    -    return *this;
    -  }
    +#include 
    +#include 
    +#if ADA_REGULAR_VISUAL_STUDIO
    +#include 
    +#endif  // ADA_REGULAR_VISUAL_STUDIO
     
    -  template <
    -      class U = T, class G = T,
    -      detail::enable_if_t::value> * =
    -          nullptr,
    -      detail::enable_if_t::value> * = nullptr,
    -      detail::enable_if_t<
    -          (!std::is_same, detail::decay_t>::value &&
    -           !detail::conjunction,
    -                                std::is_same>>::value &&
    -           std::is_constructible::value &&
    -           std::is_assignable::value &&
    -           std::is_nothrow_move_constructible::value)> * = nullptr>
    -  expected &operator=(U &&v) {
    -    if (has_value()) {
    -      val() = std::forward(v);
    -    } else {
    -      auto tmp = std::move(err());
    -      err().~unexpected();
    +namespace ada {
     
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -      try {
    -        ::new (valptr()) T(std::forward(v));
    -        this->m_has_val = true;
    -      } catch (...) {
    -        err() = std::move(tmp);
    -        throw;
    -      }
    -#else
    -      ::new (valptr()) T(std::forward(v));
    -      this->m_has_val = true;
    -#endif
    -    }
    +[[nodiscard]] ada_really_inline bool url_base::is_special() const noexcept {
    +  return type != ada::scheme::NOT_SPECIAL;
    +}
     
    -    return *this;
    +[[nodiscard]] inline uint16_t url_base::get_special_port() const noexcept {
    +  return ada::scheme::get_special_port(type);
    +}
    +
    +[[nodiscard]] ada_really_inline uint16_t
    +url_base::scheme_default_port() const noexcept {
    +  return scheme::get_special_port(type);
    +}
    +
    +}  // namespace ada
    +
    +#endif  // ADA_URL_BASE_INL_H
    +/* end file include/ada/url_base-inl.h */
    +/* begin file include/ada/url-inl.h */
    +/**
    + * @file url-inl.h
    + * @brief Definitions for the URL
    + */
    +#ifndef ADA_URL_INL_H
    +#define ADA_URL_INL_H
    +
    +
    +#include 
    +#include 
    +#if ADA_REGULAR_VISUAL_STUDIO
    +#include 
    +#endif  // ADA_REGULAR_VISUAL_STUDIO
    +
    +namespace ada {
    +[[nodiscard]] ada_really_inline bool url::includes_credentials()
    +    const noexcept {
    +  return !username.empty() || !password.empty();
    +}
    +[[nodiscard]] inline bool url::cannot_have_credentials_or_port() const {
    +  return !host.has_value() || host.value().empty() ||
    +         type == ada::scheme::type::FILE;
    +}
    +[[nodiscard]] inline bool url::has_empty_hostname() const noexcept {
    +  if (!host.has_value()) {
    +    return false;
       }
    +  return host.value().empty();
    +}
    +[[nodiscard]] inline bool url::has_hostname() const noexcept {
    +  return host.has_value();
    +}
    +inline std::ostream &operator<<(std::ostream &out, const ada::url &u) {
    +  return out << u.to_string();
    +}
     
    -  template ::value &&
    -                                std::is_assignable::value> * = nullptr>
    -  expected &operator=(const unexpected &rhs) {
    -    if (!has_value()) {
    -      err() = rhs;
    -    } else {
    -      this->destroy_val();
    -      ::new (errptr()) unexpected(rhs);
    -      this->m_has_val = false;
    -    }
    +size_t url::get_pathname_length() const noexcept { return path.size(); }
    +
    +[[nodiscard]] ada_really_inline ada::url_components url::get_components()
    +    const noexcept {
    +  url_components out{};
    +
    +  // protocol ends with ':'. for example: "https:"
    +  out.protocol_end = uint32_t(get_protocol().size());
     
    -    return *this;
    -  }
    +  // Trailing index is always the next character of the current one.
    +  size_t running_index = out.protocol_end;
     
    -  template ::value &&
    -                                std::is_move_assignable::value> * = nullptr>
    -  expected &operator=(unexpected &&rhs) noexcept {
    -    if (!has_value()) {
    -      err() = std::move(rhs);
    -    } else {
    -      this->destroy_val();
    -      ::new (errptr()) unexpected(std::move(rhs));
    -      this->m_has_val = false;
    -    }
    +  if (host.has_value()) {
    +    // 2 characters for "//" and 1 character for starting index
    +    out.host_start = out.protocol_end + 2;
     
    -    return *this;
    -  }
    +    if (includes_credentials()) {
    +      out.username_end = uint32_t(out.host_start + username.size());
     
    -  template ::value> * = nullptr>
    -  void emplace(Args &&...args) {
    -    if (has_value()) {
    -      val().~T();
    -    } else {
    -      err().~unexpected();
    -      this->m_has_val = true;
    -    }
    -    ::new (valptr()) T(std::forward(args)...);
    -  }
    +      out.host_start += uint32_t(username.size());
     
    -  template ::value> * = nullptr>
    -  void emplace(Args &&...args) {
    -    if (has_value()) {
    -      val().~T();
    -      ::new (valptr()) T(std::forward(args)...);
    +      if (!password.empty()) {
    +        out.host_start += uint32_t(password.size() + 1);
    +      }
    +
    +      out.host_end = uint32_t(out.host_start + host.value().size());
         } else {
    -      auto tmp = std::move(err());
    -      err().~unexpected();
    +      out.username_end = out.host_start;
     
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -      try {
    -        ::new (valptr()) T(std::forward(args)...);
    -        this->m_has_val = true;
    -      } catch (...) {
    -        err() = std::move(tmp);
    -        throw;
    -      }
    -#else
    -      ::new (valptr()) T(std::forward(args)...);
    -      this->m_has_val = true;
    -#endif
    +      // Host does not start with "@" if it does not include credentials.
    +      out.host_end = uint32_t(out.host_start + host.value().size()) - 1;
         }
    -  }
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  void emplace(std::initializer_list il, Args &&...args) {
    -    if (has_value()) {
    -      T t(il, std::forward(args)...);
    -      val() = std::move(t);
    +    running_index = out.host_end + 1;
    +  } else {
    +    // Update host start and end date to the same index, since it does not
    +    // exist.
    +    out.host_start = out.protocol_end;
    +    out.host_end = out.host_start;
    +
    +    if (!has_opaque_path && checkers::begins_with(path, "//")) {
    +      // If url’s host is null, url does not have an opaque path, url’s path’s
    +      // size is greater than 1, and url’s path[0] is the empty string, then
    +      // append U+002F (/) followed by U+002E (.) to output.
    +      running_index = out.protocol_end + 2;
         } else {
    -      err().~unexpected();
    -      ::new (valptr()) T(il, std::forward(args)...);
    -      this->m_has_val = true;
    +      running_index = out.protocol_end;
         }
       }
     
    -  template  &, Args &&...>::value> * = nullptr>
    -  void emplace(std::initializer_list il, Args &&...args) {
    -    if (has_value()) {
    -      T t(il, std::forward(args)...);
    -      val() = std::move(t);
    -    } else {
    -      auto tmp = std::move(err());
    -      err().~unexpected();
    -
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -      try {
    -        ::new (valptr()) T(il, std::forward(args)...);
    -        this->m_has_val = true;
    -      } catch (...) {
    -        err() = std::move(tmp);
    -        throw;
    -      }
    -#else
    -      ::new (valptr()) T(il, std::forward(args)...);
    -      this->m_has_val = true;
    -#endif
    -    }
    +  if (port.has_value()) {
    +    out.port = *port;
    +    running_index += helpers::fast_digit_count(*port) + 1;  // Port omits ':'
       }
     
    -private:
    -  using t_is_void = std::true_type;
    -  using t_is_not_void = std::false_type;
    -  using t_is_nothrow_move_constructible = std::true_type;
    -  using move_constructing_t_can_throw = std::false_type;
    -  using e_is_nothrow_move_constructible = std::true_type;
    -  using move_constructing_e_can_throw = std::false_type;
    +  out.pathname_start = uint32_t(running_index);
     
    -  void swap_where_both_have_value(expected & /*rhs*/, t_is_void) noexcept {
    -    // swapping void is a no-op
    +  if (!path.empty()) {
    +    running_index += path.size();
       }
     
    -  void swap_where_both_have_value(expected &rhs, t_is_not_void) {
    -    using std::swap;
    -    swap(val(), rhs.val());
    +  if (query.has_value()) {
    +    out.search_start = uint32_t(running_index);
    +    running_index += get_search().size();
    +    if (get_search().size() == 0) {
    +      running_index++;
    +    }
       }
     
    -  void swap_where_only_one_has_value(expected &rhs, t_is_void) noexcept(
    -      std::is_nothrow_move_constructible::value) {
    -    ::new (errptr()) unexpected_type(std::move(rhs.err()));
    -    rhs.err().~unexpected_type();
    -    std::swap(this->m_has_val, rhs.m_has_val);
    +  if (fragment.has_value()) {
    +    out.hash_start = uint32_t(running_index);
       }
     
    -  void swap_where_only_one_has_value(expected &rhs, t_is_not_void) {
    -    swap_where_only_one_has_value_and_t_is_not_void(
    -        rhs, typename std::is_nothrow_move_constructible::type{},
    -        typename std::is_nothrow_move_constructible::type{});
    -  }
    +  return out;
    +}
     
    -  void swap_where_only_one_has_value_and_t_is_not_void(
    -      expected &rhs, t_is_nothrow_move_constructible,
    -      e_is_nothrow_move_constructible) noexcept {
    -    auto temp = std::move(val());
    -    val().~T();
    -    ::new (errptr()) unexpected_type(std::move(rhs.err()));
    -    rhs.err().~unexpected_type();
    -    ::new (rhs.valptr()) T(std::move(temp));
    -    std::swap(this->m_has_val, rhs.m_has_val);
    -  }
    +inline void url::update_base_hostname(std::string_view input) { host = input; }
     
    -  void swap_where_only_one_has_value_and_t_is_not_void(
    -      expected &rhs, t_is_nothrow_move_constructible,
    -      move_constructing_e_can_throw) {
    -    auto temp = std::move(val());
    -    val().~T();
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -    try {
    -      ::new (errptr()) unexpected_type(std::move(rhs.err()));
    -      rhs.err().~unexpected_type();
    -      ::new (rhs.valptr()) T(std::move(temp));
    -      std::swap(this->m_has_val, rhs.m_has_val);
    -    } catch (...) {
    -      val() = std::move(temp);
    -      throw;
    -    }
    -#else
    -    ::new (errptr()) unexpected_type(std::move(rhs.err()));
    -    rhs.err().~unexpected_type();
    -    ::new (rhs.valptr()) T(std::move(temp));
    -    std::swap(this->m_has_val, rhs.m_has_val);
    -#endif
    -  }
    +inline void url::update_unencoded_base_hash(std::string_view input) {
    +  // We do the percent encoding
    +  fragment = unicode::percent_encode(
    +      input, ada::character_sets::FRAGMENT_PERCENT_ENCODE);
    +}
     
    -  void swap_where_only_one_has_value_and_t_is_not_void(
    -      expected &rhs, move_constructing_t_can_throw,
    -      e_is_nothrow_move_constructible) {
    -    auto temp = std::move(rhs.err());
    -    rhs.err().~unexpected_type();
    -#ifdef TL_EXPECTED_EXCEPTIONS_ENABLED
    -    try {
    -      ::new (rhs.valptr()) T(std::move(val()));
    -      val().~T();
    -      ::new (errptr()) unexpected_type(std::move(temp));
    -      std::swap(this->m_has_val, rhs.m_has_val);
    -    } catch (...) {
    -      rhs.err() = std::move(temp);
    -      throw;
    -    }
    -#else
    -    ::new (rhs.valptr()) T(std::move(val()));
    -    val().~T();
    -    ::new (errptr()) unexpected_type(std::move(temp));
    -    std::swap(this->m_has_val, rhs.m_has_val);
    -#endif
    -  }
    +inline void url::update_base_search(std::string_view input,
    +                                    const uint8_t query_percent_encode_set[]) {
    +  query = ada::unicode::percent_encode(input, query_percent_encode_set);
    +}
     
    -public:
    -  template 
    -  detail::enable_if_t::value &&
    -                      detail::is_swappable::value &&
    -                      (std::is_nothrow_move_constructible::value ||
    -                       std::is_nothrow_move_constructible::value)>
    -  swap(expected &rhs) noexcept(
    -      std::is_nothrow_move_constructible::value
    -          &&detail::is_nothrow_swappable::value
    -              &&std::is_nothrow_move_constructible::value
    -                  &&detail::is_nothrow_swappable::value) {
    -    if (has_value() && rhs.has_value()) {
    -      swap_where_both_have_value(rhs, typename std::is_void::type{});
    -    } else if (!has_value() && rhs.has_value()) {
    -      rhs.swap(*this);
    -    } else if (has_value()) {
    -      swap_where_only_one_has_value(rhs, typename std::is_void::type{});
    -    } else {
    -      using std::swap;
    -      swap(err(), rhs.err());
    -    }
    +inline void url::update_base_search(std::optional input) {
    +  query = input;
    +}
    +
    +inline void url::update_base_pathname(const std::string_view input) {
    +  path = input;
    +}
    +
    +inline void url::update_base_username(const std::string_view input) {
    +  username = input;
    +}
    +
    +inline void url::update_base_password(const std::string_view input) {
    +  password = input;
    +}
    +
    +inline void url::update_base_port(std::optional input) {
    +  port = input;
    +}
    +
    +inline void url::clear_base_pathname() { path = ""; }
    +
    +inline void url::clear_base_search() { query = std::nullopt; }
    +
    +inline bool url::base_fragment_has_value() const {
    +  return fragment.has_value();
    +}
    +
    +inline bool url::base_search_has_value() const { return query.has_value(); }
    +
    +inline void url::set_protocol_as_file() { type = ada::scheme::type::FILE; }
    +
    +inline void url::set_scheme(std::string &&new_scheme) noexcept {
    +  type = ada::scheme::get_scheme_type(new_scheme);
    +  // We only move the 'scheme' if it is non-special.
    +  if (!is_special()) {
    +    non_special_scheme = new_scheme;
       }
    +}
     
    -  constexpr const T *operator->() const { return valptr(); }
    -  TL_EXPECTED_11_CONSTEXPR T *operator->() { return valptr(); }
    +inline void url::copy_scheme(ada::url &&u) noexcept {
    +  non_special_scheme = u.non_special_scheme;
    +  type = u.type;
    +}
     
    -  template ::value> * = nullptr>
    -  constexpr const U &operator*() const & {
    -    return val();
    +inline void url::copy_scheme(const ada::url &u) {
    +  non_special_scheme = u.non_special_scheme;
    +  type = u.type;
    +}
    +
    +[[nodiscard]] ada_really_inline std::string url::get_href() const noexcept {
    +  std::string output = get_protocol();
    +
    +  if (host.has_value()) {
    +    output += "//";
    +    if (includes_credentials()) {
    +      output += username;
    +      if (!password.empty()) {
    +        output += ":" + get_password();
    +      }
    +      output += "@";
    +    }
    +    output += host.value();
    +    if (port.has_value()) {
    +      output += ":" + get_port();
    +    }
    +  } else if (!has_opaque_path && checkers::begins_with(path, "//")) {
    +    // If url’s host is null, url does not have an opaque path, url’s path’s
    +    // size is greater than 1, and url’s path[0] is the empty string, then
    +    // append U+002F (/) followed by U+002E (.) to output.
    +    output += "/.";
       }
    -  template ::value> * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR U &operator*() & {
    -    return val();
    +  output += path;
    +  if (query.has_value()) {
    +    output += "?" + query.value();
       }
    -  template ::value> * = nullptr>
    -  constexpr const U &&operator*() const && {
    -    return std::move(val());
    +  if (fragment.has_value()) {
    +    output += "#" + fragment.value();
       }
    -  template ::value> * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR U &&operator*() && {
    -    return std::move(val());
    +  return output;
    +}
    +
    +ada_really_inline size_t url::parse_port(std::string_view view,
    +                                         bool check_trailing_content) noexcept {
    +  ada_log("parse_port('", view, "') ", view.size());
    +  uint16_t parsed_port{};
    +  auto r = std::from_chars(view.data(), view.data() + view.size(), parsed_port);
    +  if (r.ec == std::errc::result_out_of_range) {
    +    ada_log("parse_port: std::errc::result_out_of_range");
    +    is_valid = false;
    +    return 0;
    +  }
    +  ada_log("parse_port: ", parsed_port);
    +  const size_t consumed = size_t(r.ptr - view.data());
    +  ada_log("parse_port: consumed ", consumed);
    +  if (check_trailing_content) {
    +    is_valid &=
    +        (consumed == view.size() || view[consumed] == '/' ||
    +         view[consumed] == '?' || (is_special() && view[consumed] == '\\'));
    +  }
    +  ada_log("parse_port: is_valid = ", is_valid);
    +  if (is_valid) {
    +    port = (r.ec == std::errc() && scheme_default_port() != parsed_port)
    +               ? std::optional(parsed_port)
    +               : std::nullopt;
    +  }
    +  return consumed;
    +}
    +
    +}  // namespace ada
    +
    +#endif  // ADA_URL_H
    +/* end file include/ada/url-inl.h */
    +/* begin file include/ada/url_aggregator-inl.h */
    +/**
    + * @file url_aggregator-inl.h
    + * @brief Inline functions for url aggregator
    + */
    +#ifndef ADA_URL_AGGREGATOR_INL_H
    +#define ADA_URL_AGGREGATOR_INL_H
    +
    +/* begin file include/ada/unicode-inl.h */
    +/**
    + * @file unicode-inl.h
    + * @brief Definitions for unicode operations.
    + */
    +#ifndef ADA_UNICODE_INL_H
    +#define ADA_UNICODE_INL_H
    +#include 
    +
    +/**
    + * @namespace ada::unicode
    + * @brief Includes the declarations for unicode operations
    + */
    +namespace ada::unicode {
    +ada_really_inline size_t percent_encode_index(const std::string_view input,
    +                                              const uint8_t character_set[]) {
    +  return std::distance(
    +      input.begin(),
    +      std::find_if(input.begin(), input.end(), [character_set](const char c) {
    +        return character_sets::bit_at(character_set, c);
    +      }));
    +}
    +}  // namespace ada::unicode
    +
    +#endif  // ADA_UNICODE_INL_H
    +/* end file include/ada/unicode-inl.h */
    +
    +#include 
    +#include 
    +
    +namespace ada {
    +
    +inline void url_aggregator::update_base_authority(
    +    std::string_view base_buffer, const ada::url_components &base) {
    +  std::string_view input = base_buffer.substr(
    +      base.protocol_end, base.host_start - base.protocol_end);
    +  ada_log("url_aggregator::update_base_authority ", input);
    +
    +  bool input_starts_with_dash = checkers::begins_with(input, "//");
    +  uint32_t diff = components.host_start - components.protocol_end;
    +
    +  buffer.erase(components.protocol_end,
    +               components.host_start - components.protocol_end);
    +  components.username_end = components.protocol_end;
    +
    +  if (input_starts_with_dash) {
    +    input.remove_prefix(2);
    +    diff += 2;  // add "//"
    +    buffer.insert(components.protocol_end, "//");
    +    components.username_end += 2;
    +  }
    +
    +  size_t password_delimiter = input.find(':');
    +
    +  // Check if input contains both username and password by checking the
    +  // delimiter: ":" A typical input that contains authority would be "user:pass"
    +  if (password_delimiter != std::string_view::npos) {
    +    // Insert both username and password
    +    std::string_view username = input.substr(0, password_delimiter);
    +    std::string_view password = input.substr(password_delimiter + 1);
    +
    +    buffer.insert(components.protocol_end + diff, username);
    +    diff += uint32_t(username.size());
    +    buffer.insert(components.protocol_end + diff, ":");
    +    components.username_end = components.protocol_end + diff;
    +    buffer.insert(components.protocol_end + diff + 1, password);
    +    diff += uint32_t(password.size()) + 1;
    +  } else if (!input.empty()) {
    +    // Insert only username
    +    buffer.insert(components.protocol_end + diff, input);
    +    components.username_end =
    +        components.protocol_end + diff + uint32_t(input.size());
    +    diff += uint32_t(input.size());
       }
     
    -  constexpr bool has_value() const noexcept { return this->m_has_val; }
    -  constexpr explicit operator bool() const noexcept { return this->m_has_val; }
    +  components.host_start += diff;
     
    -  template ::value> * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR const U &value() const & {
    -    if (!has_value())
    -      detail::throw_exception(bad_expected_access(err().value()));
    -    return val();
    +  if (buffer.size() > base.host_start && buffer[base.host_start] != '@') {
    +    buffer.insert(components.host_start, "@");
    +    diff++;
       }
    -  template ::value> * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR U &value() & {
    -    if (!has_value())
    -      detail::throw_exception(bad_expected_access(err().value()));
    -    return val();
    -  }
    -  template ::value> * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR const U &&value() const && {
    -    if (!has_value())
    -      detail::throw_exception(bad_expected_access(std::move(err()).value()));
    -    return std::move(val());
    +  components.host_end += diff;
    +  components.pathname_start += diff;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += diff;
       }
    -  template ::value> * = nullptr>
    -  TL_EXPECTED_11_CONSTEXPR U &&value() && {
    -    if (!has_value())
    -      detail::throw_exception(bad_expected_access(std::move(err()).value()));
    -    return std::move(val());
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += diff;
       }
    +}
     
    -  constexpr const E &error() const & { return err().value(); }
    -  TL_EXPECTED_11_CONSTEXPR E &error() & { return err().value(); }
    -  constexpr const E &&error() const && { return std::move(err().value()); }
    -  TL_EXPECTED_11_CONSTEXPR E &&error() && { return std::move(err().value()); }
    +inline void url_aggregator::update_unencoded_base_hash(std::string_view input) {
    +  ada_log("url_aggregator::update_unencoded_base_hash ", input, " [",
    +          input.size(), " bytes], buffer is '", buffer, "' [", buffer.size(),
    +          " bytes] components.hash_start = ", components.hash_start);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (components.hash_start != url_components::omitted) {
    +    buffer.resize(components.hash_start);
    +  }
    +  components.hash_start = uint32_t(buffer.size());
    +  buffer += "#";
    +  bool encoding_required = unicode::percent_encode(
    +      input, ada::character_sets::FRAGMENT_PERCENT_ENCODE, buffer);
    +  // When encoding_required is false, then buffer is left unchanged, and percent
    +  // encoding was not deemed required.
    +  if (!encoding_required) {
    +    buffer.append(input);
    +  }
    +  ada_log("url_aggregator::update_unencoded_base_hash final buffer is '",
    +          buffer, "' [", buffer.size(), " bytes]");
    +  ADA_ASSERT_TRUE(validate());
    +}
     
    -  template  constexpr T value_or(U &&v) const & {
    -    static_assert(std::is_copy_constructible::value &&
    -                      std::is_convertible::value,
    -                  "T must be copy-constructible and convertible to from U&&");
    -    return bool(*this) ? **this : static_cast(std::forward(v));
    -  }
    -  template  TL_EXPECTED_11_CONSTEXPR T value_or(U &&v) && {
    -    static_assert(std::is_move_constructible::value &&
    -                      std::is_convertible::value,
    -                  "T must be move-constructible and convertible to from U&&");
    -    return bool(*this) ? std::move(**this) : static_cast(std::forward(v));
    -  }
    -};
    +ada_really_inline uint32_t url_aggregator::replace_and_resize(
    +    uint32_t start, uint32_t end, std::string_view input) {
    +  uint32_t current_length = end - start;
    +  uint32_t input_size = uint32_t(input.size());
    +  uint32_t new_difference = input_size - current_length;
    +
    +  if (current_length == 0) {
    +    buffer.insert(start, input);
    +  } else if (input_size == current_length) {
    +    buffer.replace(start, input_size, input);
    +  } else if (input_size < current_length) {
    +    buffer.erase(start, current_length - input_size);
    +    buffer.replace(start, input_size, input);
    +  } else {
    +    buffer.replace(start, current_length, input.substr(0, current_length));
    +    buffer.insert(start + current_length, input.substr(current_length));
    +  }
    +
    +  return new_difference;
    +}
     
    -namespace detail {
    -template  using exp_t = typename detail::decay_t::value_type;
    -template  using err_t = typename detail::decay_t::error_type;
    -template  using ret_t = expected>;
    +inline void url_aggregator::update_base_hostname(const std::string_view input) {
    +  ada_log("url_aggregator::update_base_hostname ", input, " [", input.size(),
    +          " bytes], buffer is '", buffer, "' [", buffer.size(), " bytes]");
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
     
    -#ifdef TL_EXPECTED_CXX14
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              *std::declval()))>
    -constexpr auto and_then_impl(Exp &&exp, F &&f) {
    -  static_assert(detail::is_expected::value, "F must return an expected");
    +  // This next line is required for when parsing a URL like `foo://`
    +  add_authority_slashes_if_needed();
     
    -  return exp.has_value()
    -             ? detail::invoke(std::forward(f), *std::forward(exp))
    -             : Ret(unexpect, std::forward(exp).error());
    -}
    +  bool has_credentials = components.protocol_end + 2 < components.host_start;
    +  uint32_t new_difference =
    +      replace_and_resize(components.host_start, components.host_end, input);
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval()))>
    -constexpr auto and_then_impl(Exp &&exp, F &&f) {
    -  static_assert(detail::is_expected::value, "F must return an expected");
    +  if (has_credentials) {
    +    buffer.insert(components.host_start, "@");
    +    new_difference++;
    +  }
    +  components.host_end += new_difference;
    +  components.pathname_start += new_difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += new_difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += new_difference;
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +}
     
    -  return exp.has_value() ? detail::invoke(std::forward(f))
    -                         : Ret(unexpect, std::forward(exp).error());
    +ada_really_inline uint32_t
    +url_aggregator::get_pathname_length() const noexcept {
    +  ada_log("url_aggregator::get_pathname_length");
    +  uint32_t ending_index = uint32_t(buffer.size());
    +  if (components.search_start != url_components::omitted) {
    +    ending_index = components.search_start;
    +  } else if (components.hash_start != url_components::omitted) {
    +    ending_index = components.hash_start;
    +  }
    +  return ending_index - components.pathname_start;
     }
    -#else
    -template  struct TC;
    -template (),
    -                                              *std::declval())),
    -          detail::enable_if_t>::value> * = nullptr>
    -auto and_then_impl(Exp &&exp, F &&f) -> Ret {
    -  static_assert(detail::is_expected::value, "F must return an expected");
     
    -  return exp.has_value()
    -             ? detail::invoke(std::forward(f), *std::forward(exp))
    -             : Ret(unexpect, std::forward(exp).error());
    +[[nodiscard]] ada_really_inline bool url_aggregator::is_at_path()
    +    const noexcept {
    +  return buffer.size() == components.pathname_start;
     }
     
    -template ())),
    -          detail::enable_if_t>::value> * = nullptr>
    -constexpr auto and_then_impl(Exp &&exp, F &&f) -> Ret {
    -  static_assert(detail::is_expected::value, "F must return an expected");
    +inline void url_aggregator::update_base_search(std::string_view input) {
    +  ada_log("url_aggregator::update_base_search ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  if (input.empty()) {
    +    clear_base_search();
    +    return;
    +  }
     
    -  return exp.has_value() ? detail::invoke(std::forward(f))
    -                         : Ret(unexpect, std::forward(exp).error());
    -}
    -#endif
    +  if (input[0] == '?') {
    +    input.remove_prefix(1);
    +  }
     
    -#ifdef TL_EXPECTED_CXX14
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              *std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
    -constexpr auto expected_map_impl(Exp &&exp, F &&f) {
    -  using result = ret_t>;
    -  return exp.has_value() ? result(detail::invoke(std::forward(f),
    -                                                 *std::forward(exp)))
    -                         : result(unexpect, std::forward(exp).error());
    -}
    +  if (components.hash_start == url_components::omitted) {
    +    if (components.search_start == url_components::omitted) {
    +      components.search_start = uint32_t(buffer.size());
    +      buffer += "?";
    +    } else {
    +      buffer.resize(components.search_start + 1);
    +    }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              *std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
    -auto expected_map_impl(Exp &&exp, F &&f) {
    -  using result = expected>;
    -  if (exp.has_value()) {
    -    detail::invoke(std::forward(f), *std::forward(exp));
    -    return result();
    +    buffer.append(input);
    +  } else {
    +    if (components.search_start == url_components::omitted) {
    +      components.search_start = components.hash_start;
    +    } else {
    +      buffer.erase(components.search_start,
    +                   components.hash_start - components.search_start);
    +      components.hash_start = components.search_start;
    +    }
    +
    +    buffer.insert(components.search_start, "?");
    +    buffer.insert(components.search_start + 1, input);
    +    components.hash_start += uint32_t(input.size() + 1);  // Do not forget `?`
       }
     
    -  return result(unexpect, std::forward(exp).error());
    +  ADA_ASSERT_TRUE(validate());
     }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
    -constexpr auto expected_map_impl(Exp &&exp, F &&f) {
    -  using result = ret_t>;
    -  return exp.has_value() ? result(detail::invoke(std::forward(f)))
    -                         : result(unexpect, std::forward(exp).error());
    -}
    +inline void url_aggregator::update_base_search(
    +    std::string_view input, const uint8_t query_percent_encode_set[]) {
    +  ada_log("url_aggregator::update_base_search ", input,
    +          " with encoding parameter ", to_string(), "\n", to_diagram());
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +
    +  if (components.hash_start == url_components::omitted) {
    +    if (components.search_start == url_components::omitted) {
    +      components.search_start = uint32_t(buffer.size());
    +      buffer += "?";
    +    } else {
    +      buffer.resize(components.search_start + 1);
    +    }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
    -auto expected_map_impl(Exp &&exp, F &&f) {
    -  using result = expected>;
    -  if (exp.has_value()) {
    -    detail::invoke(std::forward(f));
    -    return result();
    +    bool encoding_required =
    +        unicode::percent_encode(input, query_percent_encode_set, buffer);
    +    // When encoding_required is false, then buffer is left unchanged, and
    +    // percent encoding was not deemed required.
    +    if (!encoding_required) {
    +      buffer.append(input);
    +    }
    +  } else {
    +    if (components.search_start == url_components::omitted) {
    +      components.search_start = components.hash_start;
    +    } else {
    +      buffer.erase(components.search_start,
    +                   components.hash_start - components.search_start);
    +      components.hash_start = components.search_start;
    +    }
    +
    +    buffer.insert(components.search_start, "?");
    +    size_t idx =
    +        ada::unicode::percent_encode_index(input, query_percent_encode_set);
    +    if (idx == input.size()) {
    +      buffer.insert(components.search_start + 1, input);
    +      components.hash_start += uint32_t(input.size() + 1);  // Do not forget `?`
    +    } else {
    +      buffer.insert(components.search_start + 1, input, 0, idx);
    +      input.remove_prefix(idx);
    +      // We only create a temporary string if we need percent encoding and
    +      // we attempt to create as small a temporary string as we can.
    +      std::string encoded =
    +          ada::unicode::percent_encode(input, query_percent_encode_set);
    +      buffer.insert(components.search_start + idx + 1, encoded);
    +      components.hash_start +=
    +          uint32_t(encoded.size() + idx + 1);  // Do not forget `?`
    +    }
       }
     
    -  return result(unexpect, std::forward(exp).error());
    +  ADA_ASSERT_TRUE(validate());
     }
    -#else
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              *std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
     
    -constexpr auto expected_map_impl(Exp &&exp, F &&f)
    -    -> ret_t> {
    -  using result = ret_t>;
    +inline void url_aggregator::update_base_pathname(const std::string_view input) {
    +  ada_log("url_aggregator::update_base_pathname '", input, "' [", input.size(),
    +          " bytes] \n", to_diagram());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +  ADA_ASSERT_TRUE(validate());
     
    -  return exp.has_value() ? result(detail::invoke(std::forward(f),
    -                                                 *std::forward(exp)))
    -                         : result(unexpect, std::forward(exp).error());
    -}
    +  const bool begins_with_dashdash = checkers::begins_with(input, "//");
    +  if (!begins_with_dashdash && has_dash_dot()) {
    +    ada_log("url_aggregator::update_base_pathname has /.: \n", to_diagram());
    +    // We must delete the ./
    +    delete_dash_dot();
    +  }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              *std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
    +  if (begins_with_dashdash && !has_opaque_path && !has_authority() &&
    +      !has_dash_dot()) {
    +    // If url’s host is null, url does not have an opaque path, url’s path’s
    +    // size is greater than 1, then append U+002F (/) followed by U+002E (.) to
    +    // output.
    +    buffer.insert(components.pathname_start, "/.");
    +    components.pathname_start += 2;
    +  }
     
    -auto expected_map_impl(Exp &&exp, F &&f) -> expected> {
    -  if (exp.has_value()) {
    -    detail::invoke(std::forward(f), *std::forward(exp));
    -    return {};
    +  uint32_t difference = replace_and_resize(
    +      components.pathname_start,
    +      components.pathname_start + get_pathname_length(), input);
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += difference;
       }
    +  ada_log("url_aggregator::update_base_pathname end '", input, "' [",
    +          input.size(), " bytes] \n", to_diagram());
    +  ADA_ASSERT_TRUE(validate());
    +}
     
    -  return unexpected>(std::forward(exp).error());
    +inline void url_aggregator::append_base_pathname(const std::string_view input) {
    +  ada_log("url_aggregator::append_base_pathname ", input, " ", to_string(),
    +          "\n", to_diagram());
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +#if ADA_DEVELOPMENT_CHECKS
    +  // computing the expected password.
    +  std::string path_expected = std::string(get_pathname());
    +  path_expected.append(input);
    +#endif  // ADA_DEVELOPMENT_CHECKS
    +  uint32_t ending_index = uint32_t(buffer.size());
    +  if (components.search_start != url_components::omitted) {
    +    ending_index = components.search_start;
    +  } else if (components.hash_start != url_components::omitted) {
    +    ending_index = components.hash_start;
    +  }
    +  buffer.insert(ending_index, input);
    +
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += uint32_t(input.size());
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += uint32_t(input.size());
    +  }
    +#if ADA_DEVELOPMENT_CHECKS
    +  std::string path_after = std::string(get_pathname());
    +  ADA_ASSERT_EQUAL(
    +      path_expected, path_after,
    +      "append_base_pathname problem after inserting " + std::string(input));
    +#endif  // ADA_DEVELOPMENT_CHECKS
    +  ADA_ASSERT_TRUE(validate());
     }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
    +inline void url_aggregator::update_base_username(const std::string_view input) {
    +  ada_log("url_aggregator::update_base_username '", input, "' ", to_string(),
    +          "\n", to_diagram());
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
     
    -constexpr auto expected_map_impl(Exp &&exp, F &&f)
    -    -> ret_t> {
    -  using result = ret_t>;
    +  add_authority_slashes_if_needed();
     
    -  return exp.has_value() ? result(detail::invoke(std::forward(f)))
    -                         : result(unexpect, std::forward(exp).error());
    -}
    +  bool has_password = has_non_empty_password();
    +  bool host_starts_with_at = buffer.size() > components.host_start &&
    +                             buffer[components.host_start] == '@';
    +  uint32_t diff = replace_and_resize(components.protocol_end + 2,
    +                                     components.username_end, input);
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval())),
    -          detail::enable_if_t::value> * = nullptr>
    +  components.username_end += diff;
    +  components.host_start += diff;
     
    -auto expected_map_impl(Exp &&exp, F &&f) -> expected> {
    -  if (exp.has_value()) {
    -    detail::invoke(std::forward(f));
    -    return {};
    +  if (!input.empty() && !host_starts_with_at) {
    +    buffer.insert(components.host_start, "@");
    +    diff++;
    +  } else if (input.empty() && host_starts_with_at && !has_password) {
    +    // Input is empty, there is no password, and we need to remove "@" from
    +    // hostname
    +    buffer.erase(components.host_start, 1);
    +    diff--;
       }
     
    -  return unexpected>(std::forward(exp).error());
    +  components.host_end += diff;
    +  components.pathname_start += diff;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += diff;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += diff;
    +  }
    +  ADA_ASSERT_TRUE(validate());
     }
    -#endif
     
    -#if defined(TL_EXPECTED_CXX14) && !defined(TL_EXPECTED_GCC49) &&               \
    -    !defined(TL_EXPECTED_GCC54) && !defined(TL_EXPECTED_GCC55)
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -constexpr auto map_error_impl(Exp &&exp, F &&f) {
    -  using result = expected, detail::decay_t>;
    -  return exp.has_value()
    -             ? result(*std::forward(exp))
    -             : result(unexpect, detail::invoke(std::forward(f),
    -                                               std::forward(exp).error()));
    +inline void url_aggregator::append_base_username(const std::string_view input) {
    +  ada_log("url_aggregator::append_base_username ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +#if ADA_DEVELOPMENT_CHECKS
    +  // computing the expected password.
    +  std::string username_expected = std::string(get_username());
    +  username_expected.append(input);
    +#endif  // ADA_DEVELOPMENT_CHECKS
    +  add_authority_slashes_if_needed();
    +
    +  // If input is empty, do nothing.
    +  if (input.empty()) {
    +    return;
    +  }
    +
    +  uint32_t difference = uint32_t(input.size());
    +  buffer.insert(components.username_end, input);
    +  components.username_end += difference;
    +  components.host_start += difference;
    +
    +  if (buffer[components.host_start] != '@' &&
    +      components.host_start != components.host_end) {
    +    buffer.insert(components.host_start, "@");
    +    difference++;
    +  }
    +
    +  components.host_end += difference;
    +  components.pathname_start += difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += difference;
    +  }
    +#if ADA_DEVELOPMENT_CHECKS
    +  std::string username_after = std::string(get_username());
    +  ADA_ASSERT_EQUAL(
    +      username_expected, username_after,
    +      "append_base_username problem after inserting " + std::string(input));
    +#endif  // ADA_DEVELOPMENT_CHECKS
    +  ADA_ASSERT_TRUE(validate());
     }
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -auto map_error_impl(Exp &&exp, F &&f) {
    -  using result = expected, monostate>;
    -  if (exp.has_value()) {
    -    return result(*std::forward(exp));
    +
    +inline void url_aggregator::clear_base_password() {
    +  ada_log("url_aggregator::clear_base_password ", to_string(), "\n",
    +          to_diagram());
    +  ADA_ASSERT_TRUE(validate());
    +  if (!has_password()) {
    +    return;
       }
     
    -  detail::invoke(std::forward(f), std::forward(exp).error());
    -  return result(unexpect, monostate{});
    -}
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -constexpr auto map_error_impl(Exp &&exp, F &&f) {
    -  using result = expected, detail::decay_t>;
    -  return exp.has_value()
    -             ? result()
    -             : result(unexpect, detail::invoke(std::forward(f),
    -                                               std::forward(exp).error()));
    +  uint32_t diff = components.host_start - components.username_end;
    +  buffer.erase(components.username_end, diff);
    +  components.host_start -= diff;
    +  components.host_end -= diff;
    +  components.pathname_start -= diff;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start -= diff;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start -= diff;
    +  }
     }
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -auto map_error_impl(Exp &&exp, F &&f) {
    -  using result = expected, monostate>;
    -  if (exp.has_value()) {
    -    return result();
    +
    +inline void url_aggregator::update_base_password(const std::string_view input) {
    +  ada_log("url_aggregator::update_base_password ", input);
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +
    +  add_authority_slashes_if_needed();
    +
    +  // TODO: Optimization opportunity. Merge the following removal functions.
    +  if (input.empty()) {
    +    clear_base_password();
    +
    +    // Remove username too, if it is empty.
    +    if (!has_non_empty_username()) {
    +      update_base_username("");
    +    }
    +
    +    return;
    +  }
    +
    +  bool password_exists = has_password();
    +  uint32_t difference = uint32_t(input.size());
    +
    +  if (password_exists) {
    +    uint32_t current_length =
    +        components.host_start - components.username_end - 1;
    +    buffer.erase(components.username_end + 1, current_length);
    +    difference -= current_length;
    +  } else {
    +    buffer.insert(components.username_end, ":");
    +    difference++;
    +  }
    +
    +  buffer.insert(components.username_end + 1, input);
    +  components.host_start += difference;
    +
    +  // The following line is required to add "@" to hostname. When updating
    +  // password if hostname does not start with "@", it is "update_base_password"s
    +  // responsibility to set it.
    +  if (buffer[components.host_start] != '@') {
    +    buffer.insert(components.host_start, "@");
    +    difference++;
    +  }
    +
    +  components.host_end += difference;
    +  components.pathname_start += difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += difference;
       }
    -
    -  detail::invoke(std::forward(f), std::forward(exp).error());
    -  return result(unexpect, monostate{});
    +  ADA_ASSERT_TRUE(validate());
     }
    -#else
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -constexpr auto map_error_impl(Exp &&exp, F &&f)
    -    -> expected, detail::decay_t> {
    -  using result = expected, detail::decay_t>;
     
    -  return exp.has_value()
    -             ? result(*std::forward(exp))
    -             : result(unexpect, detail::invoke(std::forward(f),
    -                                               std::forward(exp).error()));
    +inline void url_aggregator::append_base_password(const std::string_view input) {
    +  ada_log("url_aggregator::append_base_password ", input, " ", to_string(),
    +          "\n", to_diagram());
    +  ADA_ASSERT_TRUE(validate());
    +  ADA_ASSERT_TRUE(!helpers::overlaps(input, buffer));
    +#if ADA_DEVELOPMENT_CHECKS
    +  // computing the expected password.
    +  std::string password_expected = std::string(get_password());
    +  password_expected.append(input);
    +#endif  // ADA_DEVELOPMENT_CHECKS
    +  add_authority_slashes_if_needed();
    +
    +  // If input is empty, do nothing.
    +  if (input.empty()) {
    +    return;
    +  }
    +
    +  uint32_t difference = uint32_t(input.size());
    +  if (has_password()) {
    +    buffer.insert(components.host_start, input);
    +  } else {
    +    difference++;  // Increment for ":"
    +    buffer.insert(components.username_end, ":");
    +    buffer.insert(components.username_end + 1, input);
    +  }
    +  components.host_start += difference;
    +
    +  // The following line is required to add "@" to hostname. When updating
    +  // password if hostname does not start with "@", it is "append_base_password"s
    +  // responsibility to set it.
    +  if (buffer[components.host_start] != '@') {
    +    buffer.insert(components.host_start, "@");
    +    difference++;
    +  }
    +
    +  components.host_end += difference;
    +  components.pathname_start += difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += difference;
    +  }
    +#if ADA_DEVELOPMENT_CHECKS
    +  std::string password_after = std::string(get_password());
    +  ADA_ASSERT_EQUAL(
    +      password_expected, password_after,
    +      "append_base_password problem after inserting " + std::string(input));
    +#endif  // ADA_DEVELOPMENT_CHECKS
    +  ADA_ASSERT_TRUE(validate());
     }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -auto map_error_impl(Exp &&exp, F &&f) -> expected, monostate> {
    -  using result = expected, monostate>;
    -  if (exp.has_value()) {
    -    return result(*std::forward(exp));
    +inline void url_aggregator::update_base_port(uint32_t input) {
    +  ada_log("url_aggregator::update_base_port");
    +  ADA_ASSERT_TRUE(validate());
    +  if (input == url_components::omitted) {
    +    clear_base_port();
    +    return;
       }
    +  // calling std::to_string(input.value()) is unfortunate given that the port
    +  // value is probably already available as a string.
    +  std::string value = helpers::concat(":", std::to_string(input));
    +  uint32_t difference = uint32_t(value.size());
     
    -  detail::invoke(std::forward(f), std::forward(exp).error());
    -  return result(unexpect, monostate{});
    +  if (components.port != url_components::omitted) {
    +    difference -= components.pathname_start - components.host_end;
    +    buffer.erase(components.host_end,
    +                 components.pathname_start - components.host_end);
    +  }
    +
    +  buffer.insert(components.host_end, value);
    +  components.pathname_start += difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += difference;
    +  }
    +  components.port = input;
    +  ADA_ASSERT_TRUE(validate());
     }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -constexpr auto map_error_impl(Exp &&exp, F &&f)
    -    -> expected, detail::decay_t> {
    -  using result = expected, detail::decay_t>;
    +inline void url_aggregator::clear_base_port() {
    +  ada_log("url_aggregator::clear_base_port");
    +  ADA_ASSERT_TRUE(validate());
    +  if (components.port == url_components::omitted) {
    +    return;
    +  }
    +  uint32_t length = components.pathname_start - components.host_end;
    +  buffer.erase(components.host_end, length);
    +  components.pathname_start -= length;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start -= length;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start -= length;
    +  }
    +  components.port = url_components::omitted;
    +  ADA_ASSERT_TRUE(validate());
    +}
     
    -  return exp.has_value()
    -             ? result()
    -             : result(unexpect, detail::invoke(std::forward(f),
    -                                               std::forward(exp).error()));
    +inline uint32_t url_aggregator::retrieve_base_port() const {
    +  ada_log("url_aggregator::retrieve_base_port");
    +  return components.port;
     }
     
    -template >::value> * = nullptr,
    -          class Ret = decltype(detail::invoke(std::declval(),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -auto map_error_impl(Exp &&exp, F &&f) -> expected, monostate> {
    -  using result = expected, monostate>;
    -  if (exp.has_value()) {
    -    return result();
    +inline void url_aggregator::clear_base_search() {
    +  ada_log("url_aggregator::clear_base_search");
    +  ADA_ASSERT_TRUE(validate());
    +  if (components.search_start == url_components::omitted) {
    +    return;
       }
     
    -  detail::invoke(std::forward(f), std::forward(exp).error());
    -  return result(unexpect, monostate{});
    -}
    +  if (components.hash_start == url_components::omitted) {
    +    buffer.resize(components.search_start);
    +  } else {
    +    buffer.erase(components.search_start,
    +                 components.hash_start - components.search_start);
    +    components.hash_start = components.search_start;
    +  }
    +
    +  components.search_start = url_components::omitted;
    +
    +#if ADA_DEVELOPMENT_CHECKS
    +  ADA_ASSERT_EQUAL(get_search(), "",
    +                   "search should have been cleared on buffer=" + buffer +
    +                       " with " + components.to_string() + "\n" + to_diagram());
     #endif
    +  ADA_ASSERT_TRUE(validate());
    +}
     
    -#ifdef TL_EXPECTED_CXX14
    -template (),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -constexpr auto or_else_impl(Exp &&exp, F &&f) {
    -  static_assert(detail::is_expected::value, "F must return an expected");
    -  return exp.has_value() ? std::forward(exp)
    -                         : detail::invoke(std::forward(f),
    -                                          std::forward(exp).error());
    +inline void url_aggregator::clear_base_hash() {
    +  ada_log("url_aggregator::clear_base_hash");
    +  ADA_ASSERT_TRUE(validate());
    +  if (components.hash_start == url_components::omitted) {
    +    return;
    +  }
    +  buffer.resize(components.hash_start);
    +  components.hash_start = url_components::omitted;
    +
    +#if ADA_DEVELOPMENT_CHECKS
    +  ADA_ASSERT_EQUAL(get_hash(), "",
    +                   "hash should have been cleared on buffer=" + buffer +
    +                       " with " + components.to_string() + "\n" + to_diagram());
    +#endif
    +  ADA_ASSERT_TRUE(validate());
     }
     
    -template (),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -detail::decay_t or_else_impl(Exp &&exp, F &&f) {
    -  return exp.has_value() ? std::forward(exp)
    -                         : (detail::invoke(std::forward(f),
    -                                           std::forward(exp).error()),
    -                            std::forward(exp));
    +inline void url_aggregator::clear_base_pathname() {
    +  ada_log("url_aggregator::clear_base_pathname");
    +  ADA_ASSERT_TRUE(validate());
    +  uint32_t ending_index = uint32_t(buffer.size());
    +  if (components.search_start != url_components::omitted) {
    +    ending_index = components.search_start;
    +  } else if (components.hash_start != url_components::omitted) {
    +    ending_index = components.hash_start;
    +  }
    +  uint32_t pathname_length = ending_index - components.pathname_start;
    +  buffer.erase(components.pathname_start, pathname_length);
    +  uint32_t difference = pathname_length;
    +  if (components.pathname_start == components.host_end + 2 &&
    +      buffer[components.host_end] == '/' &&
    +      buffer[components.host_end + 1] == '.') {
    +    components.pathname_start -= 2;
    +    buffer.erase(components.host_end, 2);
    +    difference += 2;
    +  }
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start -= difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start -= difference;
    +  }
    +  ada_log("url_aggregator::clear_base_pathname completed, running checks...");
    +#if ADA_DEVELOPMENT_CHECKS
    +  ADA_ASSERT_EQUAL(get_pathname(), "",
    +                   "pathname should have been cleared on buffer=" + buffer +
    +                       " with " + components.to_string() + "\n" + to_diagram());
    +#endif
    +  ADA_ASSERT_TRUE(validate());
    +  ada_log(
    +      "url_aggregator::clear_base_pathname completed, running checks... ok");
     }
    -#else
    -template (),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -auto or_else_impl(Exp &&exp, F &&f) -> Ret {
    -  static_assert(detail::is_expected::value, "F must return an expected");
    -  return exp.has_value() ? std::forward(exp)
    -                         : detail::invoke(std::forward(f),
    -                                          std::forward(exp).error());
    +
    +inline void url_aggregator::clear_base_hostname() {
    +  ada_log("url_aggregator::clear_base_hostname");
    +  ADA_ASSERT_TRUE(validate());
    +  if (!has_authority()) {
    +    return;
    +  }
    +  ADA_ASSERT_TRUE(has_authority());
    +
    +  uint32_t hostname_length = components.host_end - components.host_start;
    +  uint32_t start = components.host_start;
    +
    +  // If hostname starts with "@", we should not remove that character.
    +  if (hostname_length > 0 && buffer[start] == '@') {
    +    start++;
    +    hostname_length--;
    +  }
    +  buffer.erase(start, hostname_length);
    +  components.host_end = start;
    +  components.pathname_start -= hostname_length;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start -= hostname_length;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start -= hostname_length;
    +  }
    +#if ADA_DEVELOPMENT_CHECKS
    +  ADA_ASSERT_EQUAL(get_hostname(), "",
    +                   "hostname should have been cleared on buffer=" + buffer +
    +                       " with " + components.to_string() + "\n" + to_diagram());
    +#endif
    +  ADA_ASSERT_TRUE(has_authority());
    +  ADA_ASSERT_TRUE(has_empty_hostname());
    +  ADA_ASSERT_TRUE(validate());
     }
     
    -template (),
    -                                              std::declval().error())),
    -          detail::enable_if_t::value> * = nullptr>
    -detail::decay_t or_else_impl(Exp &&exp, F &&f) {
    -  return exp.has_value() ? std::forward(exp)
    -                         : (detail::invoke(std::forward(f),
    -                                           std::forward(exp).error()),
    -                            std::forward(exp));
    +inline bool url_aggregator::base_fragment_has_value() const {
    +  ada_log("url_aggregator::base_fragment_has_value");
    +  return components.hash_start != url_components::omitted;
     }
    -#endif
    -} // namespace detail
     
    -template 
    -constexpr bool operator==(const expected &lhs,
    -                          const expected &rhs) {
    -  return (lhs.has_value() != rhs.has_value())
    -             ? false
    -             : (!lhs.has_value() ? lhs.error() == rhs.error() : *lhs == *rhs);
    +inline bool url_aggregator::base_search_has_value() const {
    +  ada_log("url_aggregator::base_search_has_value");
    +  return components.search_start != url_components::omitted;
     }
    -template 
    -constexpr bool operator!=(const expected &lhs,
    -                          const expected &rhs) {
    -  return (lhs.has_value() != rhs.has_value())
    -             ? true
    -             : (!lhs.has_value() ? lhs.error() != rhs.error() : *lhs != *rhs);
    +
    +ada_really_inline bool url_aggregator::includes_credentials() const noexcept {
    +  ada_log("url_aggregator::includes_credentials");
    +  return has_non_empty_username() || has_non_empty_password();
     }
    -template 
    -constexpr bool operator==(const expected &lhs,
    -                          const expected &rhs) {
    -  return (lhs.has_value() != rhs.has_value())
    -             ? false
    -             : (!lhs.has_value() ? lhs.error() == rhs.error() : true);
    +
    +inline bool url_aggregator::cannot_have_credentials_or_port() const {
    +  ada_log("url_aggregator::cannot_have_credentials_or_port");
    +  return type == ada::scheme::type::FILE ||
    +         components.host_start == components.host_end;
     }
    -template 
    -constexpr bool operator!=(const expected &lhs,
    -                          const expected &rhs) {
    -  return (lhs.has_value() != rhs.has_value())
    -             ? true
    -             : (!lhs.has_value() ? lhs.error() == rhs.error() : false);
    +
    +[[nodiscard]] ada_really_inline const ada::url_components &
    +url_aggregator::get_components() const noexcept {
    +  return components;
     }
     
    -template 
    -constexpr bool operator==(const expected &x, const U &v) {
    -  return x.has_value() ? *x == v : false;
    +[[nodiscard]] inline bool ada::url_aggregator::has_authority() const noexcept {
    +  ada_log("url_aggregator::has_authority");
    +  // Performance: instead of doing this potentially expensive check, we could
    +  // have a boolean in the struct.
    +  return components.protocol_end + 2 <= components.host_start &&
    +         helpers::substring(buffer, components.protocol_end,
    +                            components.protocol_end + 2) == "//";
     }
    -template 
    -constexpr bool operator==(const U &v, const expected &x) {
    -  return x.has_value() ? *x == v : false;
    +
    +inline void ada::url_aggregator::add_authority_slashes_if_needed() noexcept {
    +  ada_log("url_aggregator::add_authority_slashes_if_needed");
    +  ADA_ASSERT_TRUE(validate());
    +  // Protocol setter will insert `http:` to the URL. It is up to hostname setter
    +  // to insert
    +  // `//` initially to the buffer, since it depends on the hostname existance.
    +  if (has_authority()) {
    +    return;
    +  }
    +  // Performance: the common case is components.protocol_end == buffer.size()
    +  // Optimization opportunity: in many cases, the "//" is part of the input and
    +  // the insert could be fused with another insert.
    +  buffer.insert(components.protocol_end, "//");
    +  components.username_end += 2;
    +  components.host_start += 2;
    +  components.host_end += 2;
    +  components.pathname_start += 2;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += 2;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += 2;
    +  }
    +  ADA_ASSERT_TRUE(validate());
     }
    -template 
    -constexpr bool operator!=(const expected &x, const U &v) {
    -  return x.has_value() ? *x != v : true;
    +
    +inline void ada::url_aggregator::reserve(uint32_t capacity) {
    +  buffer.reserve(capacity);
     }
    -template 
    -constexpr bool operator!=(const U &v, const expected &x) {
    -  return x.has_value() ? *x != v : true;
    +
    +inline bool url_aggregator::has_non_empty_username() const noexcept {
    +  ada_log("url_aggregator::has_non_empty_username");
    +  return components.protocol_end + 2 < components.username_end;
     }
     
    -template 
    -constexpr bool operator==(const expected &x, const unexpected &e) {
    -  return x.has_value() ? false : x.error() == e.value();
    +inline bool url_aggregator::has_non_empty_password() const noexcept {
    +  ada_log("url_aggregator::has_non_empty_password");
    +  return components.host_start - components.username_end > 0;
     }
    -template 
    -constexpr bool operator==(const unexpected &e, const expected &x) {
    -  return x.has_value() ? false : x.error() == e.value();
    +
    +inline bool url_aggregator::has_password() const noexcept {
    +  ada_log("url_aggregator::has_password");
    +  // This function does not care about the length of the password
    +  return components.host_start > components.username_end &&
    +         buffer[components.username_end] == ':';
     }
    -template 
    -constexpr bool operator!=(const expected &x, const unexpected &e) {
    -  return x.has_value() ? true : x.error() != e.value();
    +
    +inline bool url_aggregator::has_empty_hostname() const noexcept {
    +  if (!has_hostname()) {
    +    return false;
    +  }
    +  if (components.host_start == components.host_end) {
    +    return true;
    +  }
    +  if (components.host_end > components.host_start + 1) {
    +    return false;
    +  }
    +  return components.username_end != components.host_start;
     }
    -template 
    -constexpr bool operator!=(const unexpected &e, const expected &x) {
    -  return x.has_value() ? true : x.error() != e.value();
    +
    +inline bool url_aggregator::has_hostname() const noexcept {
    +  return has_authority();
     }
     
    -template ::value ||
    -                               std::is_move_constructible::value) &&
    -                              detail::is_swappable::value &&
    -                              std::is_move_constructible::value &&
    -                              detail::is_swappable::value> * = nullptr>
    -void swap(expected &lhs,
    -          expected &rhs) noexcept(noexcept(lhs.swap(rhs))) {
    -  lhs.swap(rhs);
    +inline bool url_aggregator::has_port() const noexcept {
    +  ada_log("url_aggregator::has_port");
    +  return components.pathname_start != components.host_end;
     }
    -} // namespace tl
     
    +inline bool url_aggregator::has_dash_dot() const noexcept {
    +  // If url’s host is null, url does not have an opaque path, url’s path’s size
    +  // is greater than 1, and url’s path[0] is the empty string, then append
    +  // U+002F (/) followed by U+002E (.) to output.
    +  ada_log("url_aggregator::has_dash_dot");
    +  // Performance: instead of doing this potentially expensive check, we could
    +  // just have a boolean value in the structure.
    +#if ADA_DEVELOPMENT_CHECKS
    +  if (components.pathname_start + 1 < buffer.size() &&
    +      components.pathname_start == components.host_end + 2) {
    +    ADA_ASSERT_TRUE(buffer[components.host_end] == '/');
    +    ADA_ASSERT_TRUE(buffer[components.host_end + 1] == '.');
    +    ADA_ASSERT_TRUE(buffer[components.pathname_start] == '/');
    +    ADA_ASSERT_TRUE(buffer[components.pathname_start + 1] == '/');
    +  }
     #endif
    -/* end file include/ada/expected.h */
    -#include 
    -#include 
    -
    -/**
    - * @namespace ada::parser
    - * @brief Includes the definitions for supported parsers
    - */
    -namespace ada::parser {
    -
    -  /**
    -   * Parses a url.
    -   */
    -  url parse_url(std::string_view user_input,
    -                const ada::url* base_url = nullptr,
    -                ada::encoding_type encoding = ada::encoding_type::UTF8);
    -
    -} // namespace ada
    -
    -#endif // ADA_PARSER_H
    -/* end file include/ada/parser.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/scheme-inl.h
    -/* begin file include/ada/scheme-inl.h */
    -/**
    - * @file scheme-inl.h
    - * @brief Definitions for the URL scheme.
    - */
    -#ifndef ADA_SCHEME_INL_H
    -#define ADA_SCHEME_INL_H
    -
    -
    -namespace ada::scheme {
    -
    -  /**
    -   * @namespace ada::scheme::details
    -   * @brief Includes the definitions for scheme specific entities
    -   */
    -  namespace details {
    -    // for use with is_special and get_special_port
    -    // Spaces, if present, are removed from URL.
    -    constexpr std::string_view is_special_list[] = {"http", " ", "https",
    -                                                    "ws", "ftp", "wss", "file", " "};
    -    // for use with get_special_port
    -    constexpr uint16_t special_ports[] = {80, 0, 443, 80, 21, 443, 0, 0};
    -  }
    -
    -  ada_really_inline constexpr bool is_special(std::string_view scheme) {
    -    if(scheme.empty()) { return false; }
    -    int hash_value = (2*scheme.size() + (unsigned)(scheme[0])) & 7;
    -    const std::string_view target = details::is_special_list[hash_value];
    -    return (target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1));
    -  }
    -  constexpr uint16_t get_special_port(std::string_view scheme) noexcept {
    -    if(scheme.empty()) { return 0; }
    -    int hash_value = (2*scheme.size() + (unsigned)(scheme[0])) & 7;
    -    const std::string_view target = details::is_special_list[hash_value];
    -    if ((target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1))) {
    -      return details::special_ports[hash_value];
    -    } else { return 0; }
    -  }
    -  constexpr uint16_t get_special_port(ada::scheme::type type) noexcept {
    -    return details::special_ports[int(type)];
    -  }
    -  constexpr ada::scheme::type get_scheme_type(std::string_view scheme) noexcept {
    -    if(scheme.empty()) { return ada::scheme::NOT_SPECIAL; }
    -    int hash_value = (2*scheme.size() + (unsigned)(scheme[0])) & 7;
    -    const std::string_view target = details::is_special_list[hash_value];
    -    if ((target[0] == scheme[0]) && (target.substr(1) == scheme.substr(1))) {
    -      return ada::scheme::type(hash_value);
    -    } else { return ada::scheme::NOT_SPECIAL; }
    -  }
    -
    -} // namespace ada::serializers
    -
    -#endif // ADA_SCHEME_H
    -/* end file include/ada/scheme-inl.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/url-inl.h
    -/* begin file include/ada/url-inl.h */
    -/**
    - * @file url-inl.h
    - * @brief Definitions for the URL
    - */
    -#ifndef ADA_URL_INL_H
    -#define ADA_URL_INL_H
    +  return !has_opaque_path &&
    +         components.pathname_start == components.host_end + 2 &&
    +         components.pathname_start + 1 < buffer.size();
    +}
     
    +inline std::string_view url_aggregator::get_href() const noexcept {
    +  ada_log("url_aggregator::get_href");
    +  return buffer;
    +}
     
    -namespace ada {
    -  [[nodiscard]] ada_really_inline bool url::includes_credentials() const noexcept {
    -    return !username.empty() || !password.empty();
    -  }
    -  [[nodiscard]] ada_really_inline bool url::is_special() const noexcept {
    -    return type != ada::scheme::NOT_SPECIAL;
    -  }
    -  [[nodiscard]] inline uint16_t url::get_special_port() const {
    -    return ada::scheme::get_special_port(type);
    -  }
    -  [[nodiscard]] ada_really_inline ada::scheme::type url::get_scheme_type() const noexcept {
    -    return type;
    -  }
    -  [[nodiscard]] ada_really_inline uint16_t url::scheme_default_port() const noexcept {
    -    return scheme::get_special_port(type);
    -  }
    -  [[nodiscard]] inline bool url::cannot_have_credentials_or_port() const {
    -    return !host.has_value() || host.value().empty() || type == ada::scheme::type::FILE;
    -  }
    -  ada_really_inline size_t url::parse_port(std::string_view view, bool check_trailing_content) noexcept {
    -    ada_log("parse_port('", view, "') ", view.size());
    -    uint16_t parsed_port{};
    -    auto r = std::from_chars(view.data(), view.data() + view.size(), parsed_port);
    -    if(r.ec == std::errc::result_out_of_range) {
    -      ada_log("parse_port: std::errc::result_out_of_range");
    -      is_valid = false;
    -      return 0;
    -    }
    -    ada_log("parse_port: ", parsed_port);
    -    const size_t consumed = size_t(r.ptr - view.data());
    -    ada_log("parse_port: consumed ", consumed);
    -    if(check_trailing_content) {
    -      is_valid &= (consumed == view.size() || view[consumed] == '/' || view[consumed] == '?' || (is_special() && view[consumed] == '\\'));
    -    }
    -    ada_log("parse_port: is_valid = ", is_valid);
    -    if(is_valid) {
    -      port = (r.ec == std::errc() && scheme_default_port() != parsed_port) ?
    -        std::optional(parsed_port) : std::nullopt;
    -    }
    -    return consumed;
    -  }
    -  [[nodiscard]] inline std::string_view url::get_scheme() const noexcept {
    -    if(is_special()) { return ada::scheme::details::is_special_list[type]; }
    -    // We only move the 'scheme' if it is non-special.
    -    return non_special_scheme;
    -  }
    -  inline void url::set_scheme(std::string&& new_scheme) noexcept {
    -    type = ada::scheme::get_scheme_type(new_scheme);
    -    // We only move the 'scheme' if it is non-special.
    -    if(!is_special()) {
    -      non_special_scheme = new_scheme;
    +ada_really_inline size_t url_aggregator::parse_port(
    +    std::string_view view, bool check_trailing_content) noexcept {
    +  ada_log("url_aggregator::parse_port('", view, "') ", view.size());
    +  uint16_t parsed_port{};
    +  auto r = std::from_chars(view.data(), view.data() + view.size(), parsed_port);
    +  if (r.ec == std::errc::result_out_of_range) {
    +    ada_log("parse_port: std::errc::result_out_of_range");
    +    is_valid = false;
    +    return 0;
    +  }
    +  ada_log("parse_port: ", parsed_port);
    +  const size_t consumed = size_t(r.ptr - view.data());
    +  ada_log("parse_port: consumed ", consumed);
    +  if (check_trailing_content) {
    +    is_valid &=
    +        (consumed == view.size() || view[consumed] == '/' ||
    +         view[consumed] == '?' || (is_special() && view[consumed] == '\\'));
    +  }
    +  ada_log("parse_port: is_valid = ", is_valid);
    +  if (is_valid) {
    +    if (r.ec == std::errc() && scheme_default_port() != parsed_port) {
    +      update_base_port(parsed_port);
    +    } else {
    +      clear_base_port();
         }
       }
    -  inline void url::copy_scheme(ada::url&& u) noexcept {
    -    non_special_scheme = u.non_special_scheme;
    -    type = u.type;
    -  }
    -  inline void url::copy_scheme(const ada::url& u) {
    -    non_special_scheme = u.non_special_scheme;
    -    type = u.type;
    -  }
    +  return consumed;
    +}
     
    -  inline std::ostream& operator<<(std::ostream& out, const ada::url& u) {
    -    return out << u.to_string();
    -  }
    -} // namespace ada
    +inline void url_aggregator::set_protocol_as_file() {
    +  ada_log("url_aggregator::set_protocol_as_file ");
    +  ADA_ASSERT_TRUE(validate());
    +  type = ada::scheme::type::FILE;
    +  // next line could overflow but unsigned arithmetic has well-defined
    +  // overflows.
    +  uint32_t new_difference = 5 - components.protocol_end;
    +
    +  if (buffer.empty()) {
    +    buffer.append("file:");
    +  } else {
    +    buffer.erase(0, components.protocol_end);
    +    buffer.insert(0, "file:");
    +  }
    +  components.protocol_end = 5;
    +
    +  // Update the rest of the components.
    +  components.username_end += new_difference;
    +  components.host_start += new_difference;
    +  components.host_end += new_difference;
    +  components.pathname_start += new_difference;
    +  if (components.search_start != url_components::omitted) {
    +    components.search_start += new_difference;
    +  }
    +  if (components.hash_start != url_components::omitted) {
    +    components.hash_start += new_difference;
    +  }
    +  ADA_ASSERT_TRUE(validate());
    +}
     
    -#endif // ADA_URL_H
    -/* end file include/ada/url-inl.h */
    +inline std::ostream &operator<<(std::ostream &out,
    +                                const ada::url_aggregator &u) {
    +  return out << u.to_string();
    +}
    +}  // namespace ada
    +
    +#endif  // ADA_URL_AGGREGATOR_INL_H
    +/* end file include/ada/url_aggregator-inl.h */
     
     // Public API
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/ada_version.h
     /* begin file include/ada/ada_version.h */
     /**
      * @file ada_version.h
    @@ -4363,25 +6503,25 @@ namespace ada {
     #ifndef ADA_ADA_VERSION_H
     #define ADA_ADA_VERSION_H
     
    -#define ADA_VERSION "1.0.4"
    +#define ADA_VERSION "2.0.0"
     
     namespace ada {
     
    -  enum {
    -    ADA_VERSION_MAJOR = 1,
    -    ADA_VERSION_MINOR = 0,
    -    ADA_VERSION_REVISION = 4,
    -  };
    +enum {
    +  ADA_VERSION_MAJOR = 2,
    +  ADA_VERSION_MINOR = 0,
    +  ADA_VERSION_REVISION = 0,
    +};
     
    -} // namespace ada
    +}  // namespace ada
     
    -#endif // ADA_ADA_VERSION_H
    +#endif  // ADA_ADA_VERSION_H
     /* end file include/ada/ada_version.h */
    -// dofile: invoked with prepath=/Users/dlemire/CVS/github/ada/include, filename=ada/implementation.h
     /* begin file include/ada/implementation.h */
     /**
      * @file implementation.h
    - * @brief Definitions for user facing functions for parsing URL and it's components.
    + * @brief Definitions for user facing functions for parsing URL and it's
    + * components.
      */
     #ifndef ADA_IMPLEMENTATION_H
     #define ADA_IMPLEMENTATION_H
    @@ -4391,33 +6531,38 @@ namespace ada {
     
     
     namespace ada {
    -  enum class errors {
    -    generic_error
    -  };
    +enum class errors { generic_error };
     
    -  using result = tl::expected;
    +template 
    +using result = tl::expected;
     
    -  /**
    -   * The URL parser takes a scalar value string input, with an optional null or base URL base (default null)
    -   * and an optional encoding encoding (default UTF-8).
    -   *
    -   * @param input the string input to analyze.
    -   * @param base_url the optional string input to use as a base url.
    -   * @param encoding encoding (default to UTF-8)
    -   * @return a parsed URL.
    -   */
    -  ada_warn_unused ada::result parse(std::string_view input,
    -                                 const ada::url* base_url = nullptr,
    -                                 ada::encoding_type encoding = ada::encoding_type::UTF8);
    -  /**
    -   * Computes a href string from a file path.
    -   * @return a href string (starts with file:://)
    -   */
    -  std::string href_from_file(std::string_view path);
    -}
    +/**
    + * The URL parser takes a scalar value string input, with an optional null or
    + * base URL base (default null). The parser assumes the input has an UTF-8
    + * encoding.
    + *
    + * @param input the string input to analyze.
    + * @param base_url the optional string input to use as a base url.
    + * @return a parsed URL.
    + */
    +template 
    +ada_warn_unused ada::result parse(
    +    std::string_view input, const result_type* base_url = nullptr);
    +
    +extern template ada::result parse(std::string_view input,
    +                                            const url* base_url);
    +extern template ada::result parse(
    +    std::string_view input, const url_aggregator* base_url);
    +
    +/**
    + * Computes a href string from a file path.
    + * @return a href string (starts with file:://)
    + */
    +std::string href_from_file(std::string_view path);
    +}  // namespace ada
     
    -#endif // ADA_IMPLEMENTATION_H
    +#endif  // ADA_IMPLEMENTATION_H
     /* end file include/ada/implementation.h */
     
    -#endif // ADA_H
    +#endif  // ADA_H
     /* end file include/ada.h */
    
    From 5badbc7f58d7e9a7d20f94aff6333490bf0d5978 Mon Sep 17 00:00:00 2001
    From: Yagiz Nizipli 
    Date: Fri, 31 Mar 2023 09:03:06 -0400
    Subject: [PATCH 130/131] url: use ada::url_aggregator for parsing urls
    
    PR-URL: https://github.com/nodejs/node/pull/47339
    Backport-PR-URL: https://github.com/nodejs/node/pull/47434
    Reviewed-By: Tiancheng "Timothy" Gu 
    Reviewed-By: Rich Trott 
    ---
     lib/internal/url.js                           | 254 +++++++++---
     lib/url.js                                    |   6 +-
     src/base_object_types.h                       |   3 +-
     src/node_snapshotable.cc                      |   1 +
     src/node_url.cc                               | 379 +++++++++---------
     src/node_url.h                                |  54 +++
     .../test-whatwg-url-custom-inspect.js         |  21 +-
     tsconfig.json                                 |   1 +
     typings/internalBinding/url.d.ts              |  12 +
     9 files changed, 471 insertions(+), 260 deletions(-)
     create mode 100644 typings/internalBinding/url.d.ts
    
    diff --git a/lib/internal/url.js b/lib/internal/url.js
    index e27fcadad326bf..9c7ca60f78fceb 100644
    --- a/lib/internal/url.js
    +++ b/lib/internal/url.js
    @@ -85,13 +85,7 @@ const querystring = require('querystring');
     const { platform } = process;
     const isWindows = platform === 'win32';
     
    -const {
    -  domainToASCII: _domainToASCII,
    -  domainToUnicode: _domainToUnicode,
    -  parse,
    -  canParse: _canParse,
    -  updateUrl,
    -} = internalBinding('url');
    +const bindingUrl = internalBinding('url');
     
     const FORWARD_SLASH = /\//g;
     
    @@ -135,16 +129,46 @@ function lazyCryptoRandom() {
     // the C++ binding.
     // Refs: https://url.spec.whatwg.org/#concept-url
     class URLContext {
    +  // This is the maximum value uint32_t can get.
    +  // Ada uses uint32_t(-1) for declaring omitted values.
    +  static #omitted = 4294967295;
    +
       href = '';
    -  origin = '';
    -  protocol = '';
    -  hostname = '';
    -  pathname = '';
    -  search = '';
    -  username = '';
    -  password = '';
    -  port = '';
    -  hash = '';
    +  protocol_end = 0;
    +  username_end = 0;
    +  host_start = 0;
    +  host_end = 0;
    +  pathname_start = 0;
    +  search_start = 0;
    +  hash_start = 0;
    +  port = 0;
    +  /**
    +   * Refers to `ada::scheme::type`
    +   *
    +   * enum type : uint8_t {
    +   *   HTTP = 0,
    +   *   NOT_SPECIAL = 1,
    +   *   HTTPS = 2,
    +   *   WS = 3,
    +   *   FTP = 4,
    +   *   WSS = 5,
    +   *   FILE = 6
    +   * };
    +   * @type {number}
    +   */
    +  scheme_type = 1;
    +
    +  get hasPort() {
    +    return this.port !== URLContext.#omitted;
    +  }
    +
    +  get hasSearch() {
    +    return this.search_start !== URLContext.#omitted;
    +  }
    +
    +  get hasHash() {
    +    return this.hash_start !== URLContext.#omitted;
    +  }
     }
     
     function isURLSearchParams(self) {
    @@ -564,13 +588,13 @@ class URL {
           base = `${base}`;
         }
     
    -    const isValid = parse(input,
    -                          base,
    -                          this.#onParseComplete);
    +    const href = bindingUrl.parse(input, base);
     
    -    if (!isValid) {
    +    if (!href) {
           throw new ERR_INVALID_URL(input);
         }
    +
    +    this.#updateContext(href);
       }
     
       [inspect.custom](depth, opts) {
    @@ -605,23 +629,39 @@ class URL {
         return `${constructor.name} ${inspect(obj, opts)}`;
       }
     
    -  #onParseComplete = (href, origin, protocol, hostname, pathname,
    -                      search, username, password, port, hash) => {
    -    const ctx = this[context];
    -    ctx.href = href;
    -    ctx.origin = origin;
    -    ctx.protocol = protocol;
    -    ctx.hostname = hostname;
    -    ctx.pathname = pathname;
    -    ctx.search = search;
    -    ctx.username = username;
    -    ctx.password = password;
    -    ctx.port = port;
    -    ctx.hash = hash;
    +  #updateContext(href) {
    +    this[context].href = href;
    +
    +    const {
    +      0: protocol_end,
    +      1: username_end,
    +      2: host_start,
    +      3: host_end,
    +      4: port,
    +      5: pathname_start,
    +      6: search_start,
    +      7: hash_start,
    +      8: scheme_type,
    +    } = bindingUrl.urlComponents;
    +
    +    this[context].protocol_end = protocol_end;
    +    this[context].username_end = username_end;
    +    this[context].host_start = host_start;
    +    this[context].host_end = host_end;
    +    this[context].port = port;
    +    this[context].pathname_start = pathname_start;
    +    this[context].search_start = search_start;
    +    this[context].hash_start = hash_start;
    +    this[context].scheme_type = scheme_type;
    +
         if (this[searchParams]) {
    -      this[searchParams][searchParams] = parseParams(search);
    +      if (this[context].hasSearch) {
    +        this[searchParams][searchParams] = parseParams(this.search);
    +      } else {
    +        this[searchParams][searchParams] = [];
    +      }
         }
    -  };
    +  }
     
       toString() {
         if (!isURL(this))
    @@ -638,113 +678,195 @@ class URL {
       set href(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    const valid = updateUrl(this[context].href, updateActions.kHref, `${value}`, this.#onParseComplete);
    -    if (!valid) { throw ERR_INVALID_URL(`${value}`); }
    +    value = `${value}`;
    +    const href = bindingUrl.update(this[context].href, updateActions.kHref, value);
    +    if (!href) { throw ERR_INVALID_URL(value); }
    +    this.#updateContext(href);
       }
     
       // readonly
       get origin() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].origin;
    +    const protocol = StringPrototypeSlice(this[context].href, 0, this[context].protocol_end);
    +
    +    // Check if scheme_type is not `NOT_SPECIAL`
    +    if (this[context].scheme_type !== 1) {
    +      // Check if scheme_type is `FILE`
    +      if (this[context].scheme_type === 6) {
    +        return 'null';
    +      }
    +      return `${protocol}//${this.host}`;
    +    }
    +
    +    if (protocol === 'blob:') {
    +      const path = this.pathname;
    +      if (path.length > 0) {
    +        try {
    +          const out = new URL(path);
    +          if (out[context].scheme_type !== 1) {
    +            return `${out.protocol}//${out.host}`;
    +          }
    +        } catch {
    +          // Do nothing.
    +        }
    +      }
    +    }
    +
    +    return 'null';
       }
     
       get protocol() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].protocol;
    +    return StringPrototypeSlice(this[context].href, 0, this[context].protocol_end);
       }
     
       set protocol(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kProtocol, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kProtocol, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       get username() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].username;
    +    if (this[context].protocol_end + 2 < this[context].username_end) {
    +      return StringPrototypeSlice(this[context].href, this[context].protocol_end + 2, this[context].username_end);
    +    }
    +    return '';
       }
     
       set username(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kUsername, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kUsername, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       get password() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].password;
    +    if (this[context].host_start - this[context].username_end > 0) {
    +      return StringPrototypeSlice(this[context].href, this[context].username_end + 1, this[context].host_start);
    +    }
    +    return '';
       }
     
       set password(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kPassword, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kPassword, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       get host() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    const port = this[context].port;
    -    const suffix = port.length > 0 ? `:${port}` : '';
    -    return this[context].hostname + suffix;
    +    let startsAt = this[context].host_start;
    +    if (this[context].href[startsAt] === '@') {
    +      startsAt++;
    +    }
    +    // If we have an empty host, then the space between components.host_end and
    +    // components.pathname_start may be occupied by /.
    +    if (startsAt === this[context].host_end) {
    +      return '';
    +    }
    +    return StringPrototypeSlice(this[context].href, startsAt, this[context].pathname_start);
       }
     
       set host(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kHost, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kHost, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       get hostname() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].hostname;
    +    let startsAt = this[context].host_start;
    +    // host_start might be "@" if the URL has credentials
    +    if (this[context].href[startsAt] === '@') {
    +      startsAt++;
    +    }
    +    return StringPrototypeSlice(this[context].href, startsAt, this[context].host_end);
       }
     
       set hostname(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kHostname, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kHostname, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       get port() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].port;
    +    if (this[context].hasPort) {
    +      return `${this[context].port}`;
    +    }
    +    return '';
       }
     
       set port(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kPort, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kPort, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       get pathname() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].pathname;
    +    let endsAt;
    +    if (this[context].hasSearch) {
    +      endsAt = this[context].search_start;
    +    } else if (this[context].hasHash) {
    +      endsAt = this[context].hash_start;
    +    }
    +    return StringPrototypeSlice(this[context].href, this[context].pathname_start, endsAt);
       }
     
       set pathname(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kPathname, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kPathname, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       get search() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].search;
    +    if (!this[context].hasSearch) { return ''; }
    +    let endsAt = this[context].href.length;
    +    if (this[context].hasHash) { endsAt = this[context].hash_start; }
    +    if (endsAt - this[context].search_start <= 1) { return ''; }
    +    return StringPrototypeSlice(this[context].href, this[context].search_start, endsAt);
       }
     
       set search(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kSearch, toUSVString(value), this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kSearch, toUSVString(value));
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       // readonly
    @@ -753,7 +875,7 @@ class URL {
           throw new ERR_INVALID_THIS('URL');
         // Create URLSearchParams on demand to greatly improve the URL performance.
         if (this[searchParams] == null) {
    -      this[searchParams] = new URLSearchParams(this[context].search);
    +      this[searchParams] = new URLSearchParams(this.search);
           this[searchParams][context] = this;
         }
         return this[searchParams];
    @@ -762,13 +884,19 @@ class URL {
       get hash() {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    return this[context].hash;
    +    if (!this[context].hasHash || (this[context].href.length - this[context].hash_start <= 1)) {
    +      return '';
    +    }
    +    return StringPrototypeSlice(this[context].href, this[context].hash_start);
       }
     
       set hash(value) {
         if (!isURL(this))
           throw new ERR_INVALID_THIS('URL');
    -    updateUrl(this[context].href, updateActions.kHash, `${value}`, this.#onParseComplete);
    +    const href = bindingUrl.update(this[context].href, updateActions.kHash, `${value}`);
    +    if (href) {
    +      this.#updateContext(href);
    +    }
       }
     
       toJSON() {
    @@ -784,7 +912,7 @@ class URL {
           base = `${base}`;
         }
     
    -    return _canParse(url, base);
    +    return bindingUrl.canParse(url, base);
       }
     }
     
    @@ -1169,7 +1297,7 @@ function domainToASCII(domain) {
         throw new ERR_MISSING_ARGS('domain');
     
       // toUSVString is not needed.
    -  return _domainToASCII(`${domain}`);
    +  return bindingUrl.domainToASCII(`${domain}`);
     }
     
     function domainToUnicode(domain) {
    @@ -1177,7 +1305,7 @@ function domainToUnicode(domain) {
         throw new ERR_MISSING_ARGS('domain');
     
       // toUSVString is not needed.
    -  return _domainToUnicode(`${domain}`);
    +  return bindingUrl.domainToUnicode(`${domain}`);
     }
     
     /**
    @@ -1366,4 +1494,6 @@ module.exports = {
       urlToHttpOptions,
       encodeStr,
       isURL,
    +
    +  urlUpdateActions: updateActions,
     };
    diff --git a/lib/url.js b/lib/url.js
    index de77bda1159197..339869f5f42597 100644
    --- a/lib/url.js
    +++ b/lib/url.js
    @@ -58,9 +58,7 @@ const {
       urlToHttpOptions,
     } = require('internal/url');
     
    -const {
    -  formatUrl,
    -} = internalBinding('url');
    +const bindingUrl = internalBinding('url');
     
     const { getOptionValue } = require('internal/options');
     
    @@ -626,7 +624,7 @@ function urlFormat(urlObject, options) {
           }
         }
     
    -    return formatUrl(urlObject.href, fragment, unicode, search, auth);
    +    return bindingUrl.format(urlObject.href, fragment, unicode, search, auth);
       }
     
       return Url.prototype.format.call(urlObject);
    diff --git a/src/base_object_types.h b/src/base_object_types.h
    index 3745c00970ee84..f6e6a696fc6be3 100644
    --- a/src/base_object_types.h
    +++ b/src/base_object_types.h
    @@ -15,7 +15,8 @@ namespace node {
       V(v8_binding_data, v8_utils::BindingData)                                    \
       V(blob_binding_data, BlobBindingData)                                        \
       V(process_binding_data, process::BindingData)                                \
    -  V(timers_binding_data, timers::BindingData)
    +  V(timers_binding_data, timers::BindingData)                                  \
    +  V(url_binding_data, url::BindingData)
     
     #define UNSERIALIZABLE_BINDING_TYPES(V)                                        \
       V(http2_binding_data, http2::BindingData)                                    \
    diff --git a/src/node_snapshotable.cc b/src/node_snapshotable.cc
    index 0acfc46fe43953..617351ea927c7a 100644
    --- a/src/node_snapshotable.cc
    +++ b/src/node_snapshotable.cc
    @@ -18,6 +18,7 @@
     #include "node_metadata.h"
     #include "node_process.h"
     #include "node_snapshot_builder.h"
    +#include "node_url.h"
     #include "node_util.h"
     #include "node_v8.h"
     #include "node_v8_platform-inl.h"
    diff --git a/src/node_url.cc b/src/node_url.cc
    index 4089552fe03643..463de5f268ee95 100644
    --- a/src/node_url.cc
    +++ b/src/node_url.cc
    @@ -5,14 +5,16 @@
     #include "node_external_reference.h"
     #include "node_i18n.h"
     #include "util-inl.h"
    +#include "v8.h"
     
    +#include 
     #include 
     #include 
     
     namespace node {
    +namespace url {
     
     using v8::Context;
    -using v8::Function;
     using v8::FunctionCallbackInfo;
     using v8::HandleScope;
     using v8::Isolate;
    @@ -22,102 +24,49 @@ using v8::Object;
     using v8::String;
     using v8::Value;
     
    -namespace url {
    -namespace {
    -
    -enum url_update_action {
    -  kProtocol = 0,
    -  kHost = 1,
    -  kHostname = 2,
    -  kPort = 3,
    -  kUsername = 4,
    -  kPassword = 5,
    -  kPathname = 6,
    -  kSearch = 7,
    -  kHash = 8,
    -  kHref = 9,
    -};
    -
    -auto GetCallbackArgs(Environment* env, const ada::result& url) {
    -  Local context = env->context();
    -  Isolate* isolate = env->isolate();
    -
    -  auto js_string = [&](std::string_view sv) {
    -    return ToV8Value(context, sv, isolate).ToLocalChecked();
    -  };
    -  return std::array{
    -      js_string(url->get_href()),
    -      js_string(url->get_origin()),
    -      js_string(url->get_protocol()),
    -      js_string(url->get_hostname()),
    -      js_string(url->get_pathname()),
    -      js_string(url->get_search()),
    -      js_string(url->get_username()),
    -      js_string(url->get_password()),
    -      js_string(url->get_port()),
    -      js_string(url->get_hash()),
    -  };
    +void BindingData::MemoryInfo(MemoryTracker* tracker) const {
    +  tracker->TrackField("url_components_buffer", url_components_buffer_);
     }
     
    -void Parse(const FunctionCallbackInfo& args) {
    -  CHECK_GE(args.Length(), 3);
    -  CHECK(args[0]->IsString());  // input
    -  // args[1] // base url
    -  CHECK(args[2]->IsFunction());  // complete callback
    -
    -  Local success_callback_ = args[2].As();
    -
    -  Environment* env = Environment::GetCurrent(args);
    -  HandleScope handle_scope(env->isolate());
    -  Context::Scope context_scope(env->context());
    -
    -  Utf8Value input(env->isolate(), args[0]);
    -  ada::result base;
    -  ada::url* base_pointer = nullptr;
    -  if (args[1]->IsString()) {
    -    base = ada::parse(Utf8Value(env->isolate(), args[1]).ToString());
    -    if (!base) {
    -      return args.GetReturnValue().Set(false);
    -    }
    -    base_pointer = &base.value();
    -  }
    -  ada::result out = ada::parse(input.ToStringView(), base_pointer);
    -
    -  if (!out) {
    -    return args.GetReturnValue().Set(false);
    -  }
    -
    -  auto argv = GetCallbackArgs(env, out);
    -  USE(success_callback_->Call(
    -      env->context(), args.This(), argv.size(), argv.data()));
    -  args.GetReturnValue().Set(true);
    +BindingData::BindingData(Realm* realm, v8::Local object)
    +    : SnapshotableObject(realm, object, type_int),
    +      url_components_buffer_(realm->isolate(), kURLComponentsLength) {
    +  object
    +      ->Set(realm->context(),
    +            FIXED_ONE_BYTE_STRING(realm->isolate(), "urlComponents"),
    +            url_components_buffer_.GetJSArray())
    +      .Check();
     }
     
    -void CanParse(const FunctionCallbackInfo& args) {
    -  CHECK_GE(args.Length(), 2);
    -  CHECK(args[0]->IsString());  // input
    -  // args[1] // base url
    -
    -  Environment* env = Environment::GetCurrent(args);
    -  HandleScope handle_scope(env->isolate());
    -  Context::Scope context_scope(env->context());
    +bool BindingData::PrepareForSerialization(v8::Local context,
    +                                          v8::SnapshotCreator* creator) {
    +  // We'll just re-initialize the buffers in the constructor since their
    +  // contents can be thrown away once consumed in the previous call.
    +  url_components_buffer_.Release();
    +  // Return true because we need to maintain the reference to the binding from
    +  // JS land.
    +  return true;
    +}
     
    -  Utf8Value input(env->isolate(), args[0]);
    -  ada::result base;
    -  ada::url* base_pointer = nullptr;
    -  if (args[1]->IsString()) {
    -    base = ada::parse(Utf8Value(env->isolate(), args[1]).ToString());
    -    if (!base) {
    -      return args.GetReturnValue().Set(false);
    -    }
    -    base_pointer = &base.value();
    -  }
    -  ada::result out = ada::parse(input.ToStringView(), base_pointer);
    +InternalFieldInfoBase* BindingData::Serialize(int index) {
    +  DCHECK_EQ(index, BaseObject::kEmbedderType);
    +  InternalFieldInfo* info =
    +      InternalFieldInfoBase::New(type());
    +  return info;
    +}
     
    -  args.GetReturnValue().Set(out.has_value());
    +void BindingData::Deserialize(v8::Local context,
    +                              v8::Local holder,
    +                              int index,
    +                              InternalFieldInfoBase* info) {
    +  DCHECK_EQ(index, BaseObject::kEmbedderType);
    +  v8::HandleScope scope(context->GetIsolate());
    +  Realm* realm = Realm::GetCurrent(context);
    +  BindingData* binding = realm->AddBindingData(context, holder);
    +  CHECK_NOT_NULL(binding);
     }
     
    -void DomainToASCII(const FunctionCallbackInfo& args) {
    +void BindingData::DomainToASCII(const FunctionCallbackInfo& args) {
       Environment* env = Environment::GetCurrent(args);
       CHECK_GE(args.Length(), 1);
       CHECK(args[0]->IsString());
    @@ -127,11 +76,10 @@ void DomainToASCII(const FunctionCallbackInfo& args) {
         return args.GetReturnValue().Set(FIXED_ONE_BYTE_STRING(env->isolate(), ""));
       }
     
    -#if defined(NODE_HAVE_I18N_SUPPORT)
       // It is important to have an initial value that contains a special scheme.
       // Since it will change the implementation of `set_hostname` according to URL
       // spec.
    -  ada::result out = ada::parse("ws://x");
    +  auto out = ada::parse("ws://x");
       DCHECK(out);
       if (!out->set_hostname(input)) {
         return args.GetReturnValue().Set(FIXED_ONE_BYTE_STRING(env->isolate(), ""));
    @@ -139,53 +87,144 @@ void DomainToASCII(const FunctionCallbackInfo& args) {
       std::string host = out->get_hostname();
       args.GetReturnValue().Set(
           String::NewFromUtf8(env->isolate(), host.c_str()).ToLocalChecked());
    -#else
    -  args.GetReturnValue().Set(
    -      String::NewFromUtf8(env->isolate(), input.c_str()).ToLocalChecked());
    -#endif
     }
     
    -void DomainToUnicode(const FunctionCallbackInfo& args) {
    +void BindingData::DomainToUnicode(const FunctionCallbackInfo& args) {
       Environment* env = Environment::GetCurrent(args);
       CHECK_GE(args.Length(), 1);
       CHECK(args[0]->IsString());
     
       std::string input = Utf8Value(env->isolate(), args[0]).ToString();
    -#if defined(NODE_HAVE_I18N_SUPPORT)
       // It is important to have an initial value that contains a special scheme.
       // Since it will change the implementation of `set_hostname` according to URL
       // spec.
    -  ada::result out = ada::parse("ws://x");
    +  auto out = ada::parse("ws://x");
       DCHECK(out);
       if (!out->set_hostname(input)) {
         return args.GetReturnValue().Set(
             String::NewFromUtf8(env->isolate(), "").ToLocalChecked());
       }
    -  std::string host = out->get_hostname();
    +  std::string result = ada::unicode::to_unicode(out->get_hostname());
     
    -  MaybeStackBuffer buf;
    -  int32_t len = i18n::ToUnicode(&buf, host.data(), host.length());
    +  args.GetReturnValue().Set(String::NewFromUtf8(env->isolate(),
    +                                                result.c_str(),
    +                                                NewStringType::kNormal,
    +                                                result.length())
    +                                .ToLocalChecked());
    +}
     
    -  if (len < 0) {
    -    return args.GetReturnValue().Set(
    -        String::NewFromUtf8(env->isolate(), "").ToLocalChecked());
    +// TODO(@anonrig): Add V8 Fast API for CanParse method
    +void BindingData::CanParse(const FunctionCallbackInfo& args) {
    +  CHECK_GE(args.Length(), 2);
    +  CHECK(args[0]->IsString());  // input
    +  // args[1] // base url
    +
    +  Environment* env = Environment::GetCurrent(args);
    +  HandleScope handle_scope(env->isolate());
    +  Context::Scope context_scope(env->context());
    +
    +  Utf8Value input(env->isolate(), args[0]);
    +  ada::result base;
    +  ada::url_aggregator* base_pointer = nullptr;
    +  if (args[1]->IsString()) {
    +    base = ada::parse(
    +        Utf8Value(env->isolate(), args[1]).ToString());
    +    if (!base) {
    +      return args.GetReturnValue().Set(false);
    +    }
    +    base_pointer = &base.value();
    +  }
    +  auto out =
    +      ada::parse(input.ToStringView(), base_pointer);
    +
    +  args.GetReturnValue().Set(out.has_value());
    +}
    +
    +void BindingData::Format(const FunctionCallbackInfo& args) {
    +  CHECK_GT(args.Length(), 4);
    +  CHECK(args[0]->IsString());  // url href
    +
    +  Environment* env = Environment::GetCurrent(args);
    +  Isolate* isolate = env->isolate();
    +
    +  Utf8Value href(isolate, args[0].As());
    +  const bool fragment = args[1]->IsTrue();
    +  const bool unicode = args[2]->IsTrue();
    +  const bool search = args[3]->IsTrue();
    +  const bool auth = args[4]->IsTrue();
    +
    +  // ada::url provides a faster alternative to ada::url_aggregator if we
    +  // directly want to manipulate the url components without using the respective
    +  // setters. therefore we are using ada::url here.
    +  auto out = ada::parse(href.ToStringView());
    +  CHECK(out);
    +
    +  if (!fragment) {
    +    out->fragment = std::nullopt;
       }
     
    +  if (unicode) {
    +    out->host = ada::idna::to_unicode(out->get_hostname());
    +  }
    +
    +  if (!search) {
    +    out->query = std::nullopt;
    +  }
    +
    +  if (!auth) {
    +    out->username = "";
    +    out->password = "";
    +  }
    +
    +  std::string result = out->get_href();
    +  args.GetReturnValue().Set(String::NewFromUtf8(env->isolate(),
    +                                                result.data(),
    +                                                NewStringType::kNormal,
    +                                                result.length())
    +                                .ToLocalChecked());
    +}
    +
    +void BindingData::Parse(const FunctionCallbackInfo& args) {
    +  CHECK_GE(args.Length(), 1);
    +  CHECK(args[0]->IsString());  // input
    +  // args[1] // base url
    +
    +  BindingData* binding_data = Realm::GetBindingData(args);
    +  Environment* env = Environment::GetCurrent(args);
    +  HandleScope handle_scope(env->isolate());
    +  Context::Scope context_scope(env->context());
    +
    +  Utf8Value input(env->isolate(), args[0]);
    +  ada::result base;
    +  ada::url_aggregator* base_pointer = nullptr;
    +  if (args[1]->IsString()) {
    +    base = ada::parse(
    +        Utf8Value(env->isolate(), args[1]).ToString());
    +    if (!base) {
    +      return args.GetReturnValue().Set(false);
    +    }
    +    base_pointer = &base.value();
    +  }
    +  auto out =
    +      ada::parse(input.ToStringView(), base_pointer);
    +
    +  if (!out) {
    +    return args.GetReturnValue().Set(false);
    +  }
    +
    +  binding_data->UpdateComponents(out->get_components(), out->type);
    +
       args.GetReturnValue().Set(
    -      String::NewFromUtf8(env->isolate(), *buf, NewStringType::kNormal, len)
    +      ToV8Value(env->context(), out->get_href(), env->isolate())
               .ToLocalChecked());
    -#else  // !defined(NODE_HAVE_I18N_SUPPORT)
    -  args.GetReturnValue().Set(
    -      String::NewFromUtf8(env->isolate(), input.c_str()).ToLocalChecked());
    -#endif
     }
     
    -void UpdateUrl(const FunctionCallbackInfo& args) {
    +void BindingData::Update(const FunctionCallbackInfo& args) {
       CHECK(args[0]->IsString());    // href
       CHECK(args[1]->IsNumber());    // action type
       CHECK(args[2]->IsString());    // new value
    -  CHECK(args[3]->IsFunction());  // success callback
     
    +  BindingData* binding_data = Realm::GetBindingData(args);
       Environment* env = Environment::GetCurrent(args);
       Isolate* isolate = env->isolate();
     
    @@ -193,10 +232,9 @@ void UpdateUrl(const FunctionCallbackInfo& args) {
           args[1]->Uint32Value(env->context()).FromJust());
       Utf8Value input(isolate, args[0].As());
       Utf8Value new_value(isolate, args[2].As());
    -  Local success_callback_ = args[3].As();
     
       std::string_view new_value_view = new_value.ToStringView();
    -  ada::result out = ada::parse(input.ToStringView());
    +  auto out = ada::parse(input.ToStringView());
       CHECK(out);
     
       bool result{true};
    @@ -242,89 +280,60 @@ void UpdateUrl(const FunctionCallbackInfo& args) {
           result = out->set_username(new_value_view);
           break;
         }
    +    default:
    +      UNREACHABLE("Unsupported URL update action");
       }
     
    -  auto argv = GetCallbackArgs(env, out);
    -  USE(success_callback_->Call(
    -      env->context(), args.This(), argv.size(), argv.data()));
    -  args.GetReturnValue().Set(result);
    -}
    -
    -void FormatUrl(const FunctionCallbackInfo& args) {
    -  CHECK_GT(args.Length(), 4);
    -  CHECK(args[0]->IsString());  // url href
    -
    -  Environment* env = Environment::GetCurrent(args);
    -  Isolate* isolate = env->isolate();
    -
    -  Utf8Value href(isolate, args[0].As());
    -  const bool fragment = args[1]->IsTrue();
    -  const bool unicode = args[2]->IsTrue();
    -  const bool search = args[3]->IsTrue();
    -  const bool auth = args[4]->IsTrue();
    -
    -  ada::result out = ada::parse(href.ToStringView());
    -  CHECK(out);
    -
    -  if (!fragment) {
    -    out->fragment = std::nullopt;
    -  }
    -
    -  if (unicode) {
    -#if defined(NODE_HAVE_I18N_SUPPORT)
    -    std::string hostname = out->get_hostname();
    -    MaybeStackBuffer buf;
    -    int32_t len = i18n::ToUnicode(&buf, hostname.data(), hostname.length());
    -
    -    if (len < 0) {
    -      out->host = "";
    -    } else {
    -      out->host = buf.ToString();
    -    }
    -#else
    -    out->host = "";
    -#endif
    -  }
    -
    -  if (!search) {
    -    out->query = std::nullopt;
    +  if (!result) {
    +    return args.GetReturnValue().Set(false);
       }
     
    -  if (!auth) {
    -    out->username = "";
    -    out->password = "";
    -  }
    +  binding_data->UpdateComponents(out->get_components(), out->type);
    +  args.GetReturnValue().Set(
    +      ToV8Value(env->context(), out->get_href(), env->isolate())
    +          .ToLocalChecked());
    +}
     
    -  std::string result = out->get_href();
    -  args.GetReturnValue().Set(String::NewFromUtf8(env->isolate(),
    -                                                result.data(),
    -                                                NewStringType::kNormal,
    -                                                result.length())
    -                                .ToLocalChecked());
    +void BindingData::UpdateComponents(const ada::url_components& components,
    +                                   const ada::scheme::type type) {
    +  url_components_buffer_[0] = components.protocol_end;
    +  url_components_buffer_[1] = components.username_end;
    +  url_components_buffer_[2] = components.host_start;
    +  url_components_buffer_[3] = components.host_end;
    +  url_components_buffer_[4] = components.port;
    +  url_components_buffer_[5] = components.pathname_start;
    +  url_components_buffer_[6] = components.search_start;
    +  url_components_buffer_[7] = components.hash_start;
    +  url_components_buffer_[8] = type;
    +  static_assert(kURLComponentsLength == 9,
    +                "kURLComponentsLength should be up-to-date");
     }
     
    -void Initialize(Local target,
    -                Local unused,
    -                Local context,
    -                void* priv) {
    -  SetMethod(context, target, "parse", Parse);
    -  SetMethod(context, target, "updateUrl", UpdateUrl);
    -  SetMethodNoSideEffect(context, target, "canParse", CanParse);
    -  SetMethodNoSideEffect(context, target, "formatUrl", FormatUrl);
    +void BindingData::Initialize(Local target,
    +                             Local unused,
    +                             Local context,
    +                             void* priv) {
    +  Realm* realm = Realm::GetCurrent(context);
    +  BindingData* const binding_data =
    +      realm->AddBindingData(context, target);
    +  if (binding_data == nullptr) return;
     
       SetMethodNoSideEffect(context, target, "domainToASCII", DomainToASCII);
       SetMethodNoSideEffect(context, target, "domainToUnicode", DomainToUnicode);
    +  SetMethodNoSideEffect(context, target, "canParse", CanParse);
    +  SetMethodNoSideEffect(context, target, "format", Format);
    +  SetMethod(context, target, "parse", Parse);
    +  SetMethod(context, target, "update", Update);
     }
    -}  // namespace
    -
    -void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
    -  registry->Register(Parse);
    -  registry->Register(CanParse);
    -  registry->Register(UpdateUrl);
    -  registry->Register(FormatUrl);
     
    +void BindingData::RegisterExternalReferences(
    +    ExternalReferenceRegistry* registry) {
       registry->Register(DomainToASCII);
       registry->Register(DomainToUnicode);
    +  registry->Register(CanParse);
    +  registry->Register(Format);
    +  registry->Register(Parse);
    +  registry->Register(Update);
     }
     
     std::string FromFilePath(const std::string_view file_path) {
    @@ -337,7 +346,9 @@ std::string FromFilePath(const std::string_view file_path) {
     }
     
     }  // namespace url
    +
     }  // namespace node
     
    -NODE_BINDING_CONTEXT_AWARE_INTERNAL(url, node::url::Initialize)
    -NODE_BINDING_EXTERNAL_REFERENCE(url, node::url::RegisterExternalReferences)
    +NODE_BINDING_CONTEXT_AWARE_INTERNAL(url, node::url::BindingData::Initialize)
    +NODE_BINDING_EXTERNAL_REFERENCE(
    +    url, node::url::BindingData::RegisterExternalReferences)
    diff --git a/src/node_url.h b/src/node_url.h
    index c3d895d2f6092f..ed68fe51fb4d10 100644
    --- a/src/node_url.h
    +++ b/src/node_url.h
    @@ -3,18 +3,72 @@
     
     #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
     
    +#include 
     #include "ada.h"
    +#include "aliased_buffer.h"
     #include "node.h"
    +#include "node_snapshotable.h"
     #include "util.h"
     
     #include 
     
     namespace node {
    +class ExternalReferenceRegistry;
    +
     namespace url {
     
    +enum url_update_action {
    +  kProtocol = 0,
    +  kHost = 1,
    +  kHostname = 2,
    +  kPort = 3,
    +  kUsername = 4,
    +  kPassword = 5,
    +  kPathname = 6,
    +  kSearch = 7,
    +  kHash = 8,
    +  kHref = 9,
    +};
    +
    +class BindingData : public SnapshotableObject {
    + public:
    +  BindingData(Realm* realm, v8::Local obj);
    +
    +  using InternalFieldInfo = InternalFieldInfoBase;
    +
    +  SERIALIZABLE_OBJECT_METHODS()
    +  SET_BINDING_ID(url_binding_data)
    +
    +  void MemoryInfo(MemoryTracker* tracker) const override;
    +  SET_SELF_SIZE(BindingData)
    +  SET_MEMORY_INFO_NAME(BindingData)
    +
    +  static void DomainToASCII(const v8::FunctionCallbackInfo& args);
    +  static void DomainToUnicode(const v8::FunctionCallbackInfo& args);
    +
    +  static void CanParse(const v8::FunctionCallbackInfo& args);
    +  static void Format(const v8::FunctionCallbackInfo& args);
    +  static void Parse(const v8::FunctionCallbackInfo& args);
    +  static void Update(const v8::FunctionCallbackInfo& args);
    +
    +  static void Initialize(v8::Local target,
    +                         v8::Local unused,
    +                         v8::Local context,
    +                         void* priv);
    +  static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
    +
    + private:
    +  static constexpr size_t kURLComponentsLength = 9;
    +  AliasedUint32Array url_components_buffer_;
    +
    +  void UpdateComponents(const ada::url_components& components,
    +                        const ada::scheme::type type);
    +};
    +
     std::string FromFilePath(const std::string_view file_path);
     
     }  // namespace url
    +
     }  // namespace node
     
     #endif  // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
    diff --git a/test/parallel/test-whatwg-url-custom-inspect.js b/test/parallel/test-whatwg-url-custom-inspect.js
    index a7d30a6ab936c3..f7a690a4909e81 100644
    --- a/test/parallel/test-whatwg-url-custom-inspect.js
    +++ b/test/parallel/test-whatwg-url-custom-inspect.js
    @@ -47,15 +47,18 @@ assert.strictEqual(
       hash: '#hash',
       [Symbol(context)]: URLContext {
         href: 'https://username:password@host.name:8080/path/name/?que=ry#hash',
    -    origin: 'https://host.name:8080',
    -    protocol: 'https:',
    -    hostname: 'host.name',
    -    pathname: '/path/name/',
    -    search: '?que=ry',
    -    username: 'username',
    -    password: 'password',
    -    port: '8080',
    -    hash: '#hash'
    +    protocol_end: 6,
    +    username_end: 16,
    +    host_start: 25,
    +    host_end: 35,
    +    pathname_start: 40,
    +    search_start: 51,
    +    hash_start: 58,
    +    port: 8080,
    +    scheme_type: 2,
    +    [hasPort]: [Getter],
    +    [hasSearch]: [Getter],
    +    [hasHash]: [Getter]
       }
     }`);
     
    diff --git a/tsconfig.json b/tsconfig.json
    index 1594a3363393d7..5204d83c1e7f8a 100644
    --- a/tsconfig.json
    +++ b/tsconfig.json
    @@ -15,6 +15,7 @@
         "./typings/internalBinding/symbols.d.ts",
         "./typings/internalBinding/timers.d.ts",
         "./typings/internalBinding/types.d.ts",
    +    "./typings/internalBinding/url.d.ts",
         "./typings/internalBinding/util.d.ts",
         "./typings/internalBinding/worker.d.ts",
         "./typings/globals.d.ts",
    diff --git a/typings/internalBinding/url.d.ts b/typings/internalBinding/url.d.ts
    new file mode 100644
    index 00000000000000..54d1cb1f93d790
    --- /dev/null
    +++ b/typings/internalBinding/url.d.ts
    @@ -0,0 +1,12 @@
    +import type { urlUpdateActions } from 'internal/url'
    +
    +declare function InternalBinding(binding: 'url'): {
    +  urlComponents: Uint32Array;
    +
    +  domainToASCII(input: string): string;
    +  domainToUnicode(input: string): string;
    +  canParse(input: string, base?: string): boolean;
    +  format(input: string, fragment?: boolean, unicode?: boolean, search?: boolean, auth?: boolean): string;
    +  parse(input: string, base?: string): string | false;
    +  update(input: string, actionType: typeof urlUpdateActions, value: string): string | false;
    +};
    
    From 28b8dcdd05e482b406b914fa5a6e8b5abd5c1217 Mon Sep 17 00:00:00 2001
    From: Yagiz Nizipli 
    Date: Fri, 31 Mar 2023 09:04:03 -0400
    Subject: [PATCH 131/131] url: drop ICU requirement for parsing hostnames
    
    PR-URL: https://github.com/nodejs/node/pull/47339
    Backport-PR-URL: https://github.com/nodejs/node/pull/47434
    Reviewed-By: Tiancheng "Timothy" Gu 
    Reviewed-By: Rich Trott 
    ---
     deps/ada/ada.gyp                     | 18 +-----------------
     doc/api/url.md                       | 25 +++++++++++++++----------
     lib/internal/idna.js                 |  9 ++-------
     test/benchmark/test-benchmark-url.js | 14 +-------------
     test/wpt/status/url.json             | 21 ---------------------
     5 files changed, 19 insertions(+), 68 deletions(-)
    
    diff --git a/deps/ada/ada.gyp b/deps/ada/ada.gyp
    index 1171e8750755e1..5d946f95eb4702 100644
    --- a/deps/ada/ada.gyp
    +++ b/deps/ada/ada.gyp
    @@ -10,23 +10,7 @@
           'direct_dependent_settings': {
             'include_dirs': ['.'],
           },
    -      'sources': ['ada.cpp'],
    -      'conditions': [
    -        ['v8_enable_i18n_support==0', {
    -          'defines': ['ADA_HAS_ICU=0'],
    -        }],
    -        ['v8_enable_i18n_support==1', {
    -          'dependencies': [
    -            '<(icu_gyp_path):icui18n',
    -            '<(icu_gyp_path):icuuc',
    -          ],
    -        }],
    -        ['OS=="win" and v8_enable_i18n_support==1', {
    -          'dependencies': [
    -            '<(icu_gyp_path):icudata',
    -          ],
    -        }],
    -      ]
    +      'sources': ['ada.cpp']
         },
       ]
     }
    diff --git a/doc/api/url.md b/doc/api/url.md
    index de4a4cb85bce37..5d869c21b0c03f 100644
    --- a/doc/api/url.md
    +++ b/doc/api/url.md
    @@ -129,6 +129,13 @@ return `true`.
     
     #### `new URL(input[, base])`
     
    +
    +
     * `input` {string} The absolute or relative input URL to parse. If `input`
       is relative, then `base` is required. If `input` is absolute, the `base`
       is ignored. If `input` is not a string, it is [converted to a string][] first.
    @@ -172,9 +179,6 @@ const myURL = new URL('https://測試');
     // https://xn--g6w251d/
     ```
     
    -This feature is only available if the `node` executable was compiled with
    -[ICU][] enabled. If not, the domain names are passed through unchanged.
    -
     In cases where it is not known in advance if `input` is an absolute URL
     and a `base` is provided, it is advised to validate that the `origin` of
     the `URL` object is what is expected.
    @@ -1029,6 +1033,10 @@ for (const [name, value] of params) {
     added:
       - v7.4.0
       - v6.13.0
    +changes:
    +  - version: REPLACEME
    +    pr-url: https://github.com/nodejs/node/pull/47339
    +    description: ICU requirement is removed.
     -->
     
     * `domain` {string}
    @@ -1039,9 +1047,6 @@ invalid domain, the empty string is returned.
     
     It performs the inverse operation to [`url.domainToUnicode()`][].
     
    -This feature is only available if the `node` executable was compiled with
    -[ICU][] enabled. If not, the domain names are passed through unchanged.
    -
     ```mjs
     import url from 'node:url';
     
    @@ -1070,6 +1075,10 @@ console.log(url.domainToASCII('xn--iñvalid.com'));
     added:
       - v7.4.0
       - v6.13.0
    +changes:
    +  - version: REPLACEME
    +    pr-url: https://github.com/nodejs/node/pull/47339
    +    description: ICU requirement is removed.
     -->
     
     * `domain` {string}
    @@ -1080,9 +1089,6 @@ domain, the empty string is returned.
     
     It performs the inverse operation to [`url.domainToASCII()`][].
     
    -This feature is only available if the `node` executable was compiled with
    -[ICU][] enabled. If not, the domain names are passed through unchanged.
    -
     ```mjs
     import url from 'node:url';
     
    @@ -1725,7 +1731,6 @@ console.log(myURL.origin);
     // Prints https://xn--1xa.example.com
     ```
     
    -[ICU]: intl.md#options-for-building-nodejs
     [Punycode]: https://tools.ietf.org/html/rfc5891#section-4.4
     [WHATWG URL]: #the-whatwg-url-api
     [WHATWG URL Standard]: https://url.spec.whatwg.org/
    diff --git a/lib/internal/idna.js b/lib/internal/idna.js
    index 8591226d104d3a..566f8590d8755c 100644
    --- a/lib/internal/idna.js
    +++ b/lib/internal/idna.js
    @@ -1,9 +1,4 @@
     'use strict';
     
    -if (internalBinding('config').hasIntl) {
    -  const { toASCII, toUnicode } = internalBinding('icu');
    -  module.exports = { toASCII, toUnicode };
    -} else {
    -  const { domainToASCII, domainToUnicode } = require('internal/url');
    -  module.exports = { toASCII: domainToASCII, toUnicode: domainToUnicode };
    -}
    +const { domainToASCII, domainToUnicode } = require('internal/url');
    +module.exports = { toASCII: domainToASCII, toUnicode: domainToUnicode };
    diff --git a/test/benchmark/test-benchmark-url.js b/test/benchmark/test-benchmark-url.js
    index f4eb4efa234599..664e7c4d8dc827 100644
    --- a/test/benchmark/test-benchmark-url.js
    +++ b/test/benchmark/test-benchmark-url.js
    @@ -1,18 +1,6 @@
     'use strict';
     
    -const common = require('../common');
    -
    -// TODO(@anonrig): Remove this check when Ada removes ICU requirement.
    -if (!common.hasIntl) {
    -  // A handful of the benchmarks fail when ICU is not included.
    -  // ICU is responsible for ignoring certain inputs from the hostname
    -  // and without it, it is not possible to validate the correctness of the input.
    -  // DomainToASCII method in Unicode specification states which characters are
    -  // ignored and/or remapped. Doing this outside of the scope of DomainToASCII,
    -  // would be a violation of the WHATWG URL specification.
    -  // Please look into: https://unicode.org/reports/tr46/#ProcessingStepMap
    -  common.skip('missing Intl');
    -}
    +require('../common');
     
     const runBenchmark = require('../common/benchmark');
     
    diff --git a/test/wpt/status/url.json b/test/wpt/status/url.json
    index 257c1961b97604..0b4beb54549495 100644
    --- a/test/wpt/status/url.json
    +++ b/test/wpt/status/url.json
    @@ -1,13 +1,8 @@
     {
    -  "toascii.window.js": {
    -    "requires": ["small-icu"]
    -  },
       "percent-encoding.window.js": {
    -    "requires": ["small-icu"],
         "skip": "TODO: port from .window.js"
       },
       "historical.any.js": {
    -    "requires": ["small-icu"],
         "fail": {
           "note": "We are faking location with a URL object for the sake of the testharness and it has searchParams.",
           "expected": [
    @@ -17,26 +12,10 @@
           ]
         }
       },
    -  "urlencoded-parser.any.js": {
    -    "requires": ["small-icu"]
    -  },
    -  "url-constructor.any.js": {
    -    "requires": ["small-icu"]
    -  },
    -  "url-origin.any.js": {
    -    "requires": ["small-icu"]
    -  },
    -  "url-setters.any.js": {
    -    "requires": ["small-icu"]
    -  },
       "url-setters-a-area.window.js": {
         "skip": "already tested in url-setters.any.js"
       },
    -  "IdnaTestV2.window.js": {
    -    "requires": ["small-icu"]
    -  },
       "javascript-urls.window.js": {
    -    "required": ["small-icu"],
         "skip": "requires document.body reference"
       }
     }